【集训队模拟 2013】Run
2015-07-14 18:08
190 查看
题目大意
求一个游戏的字典序最小的必胜方案。给出对手每一步操作。(之所以放在上一句话后面是为了与必胜方案相区分因为他们毫无关系,给出对手的操作仅仅是为了确定某一种必胜态罢了。)
分析
不妨判断每一步是否可以为字典序较小的一种操作。具体判断方案实际上是跑一棵决策树,andand层和oror层交替,看这个是否为必胜态,可是直接会超时,加上随机化搜索顺序,期望时间复杂度算法如下。我们来考虑这种随机情况下的复杂度,t(d)t(d)为dd层的树,根节点为11 时的复杂度,f(d)f(d) 为d d 层的树,根节点为0 0 时的复杂度,那么
f(d)=2∗t(d−1)f(d) = 2 ∗ t(d − 1)
t(d)=f(d−1)+t(d−1)∗13t(d) = f(d − 1) + t(d − 1) ∗\frac{1}{3}
可见这样在 d = 2n = 28 的情况下复杂度非常低,因此我们只要对于搜索中判断节点的先后进行随机化就能够解决掉这道题了。
反正我是没看懂,跑得飞快就是了。
相关文章推荐
- Redis数据库的学习与实践—Redis的常用命令及高级应用
- SimpleDateFormat安全的时间格式化
- 利用GDAL提取正射影像中的感兴趣区域
- c#与java中byte字节的区别及转换方法
- [leedcode 75] Sort Colors
- HDU 2546 饭卡
- Unityd 常用设计模式:简单工厂模式
- Android利用Fiddler进行网络数据抓包
- TextUtils源码翻译
- Android - LayoutAnimation 动画效果 - 示例
- request.getScheme()
- 撤销功能的实现——备忘录模式(Memento Pattern)
- Linux mysql 5.6: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- ultraedit高亮显示verilog文件
- 解决PHP Warning: Cannot modify header information - headers already sent by...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)
- [linux]segvcatch简单使用
- 点双连通
- struts国际化操作中遇到display标签的处理办法
- Android中OptionMenu用法实例