c++&oi

usaco4.4.1

用本班数学神牛高瑞阳的话说“这是一道水题”。原题是数学题,要求求解n=3时的最小步数。
据说高同学用五分钟AC原题,并证明:有且仅有一种方案解决这个问题。

而本题作为usaco上的一道题目,必要的数学功底自然是必要的,但我们也应以OIer的思维方式来解决次题。
主体是搜索,加上状态压缩的DFS。(用show来调试,逐步写成4个操作,非常顺利。)
由于有且仅有一种方案解决这个问题,那么大量的可行性剪枝是可以显然得到的。

显然,w向右移动之后,再向左移是不符合最优性原理的,所以我们只考虑w右移。同理,只考虑b的左移。
(高神牛的那个结论可以说明,只要不是最优性的操作,必然是不可行的操作)

此时的搜索数已经很小了,每个节点的分支数<2,基本上可以可以合理的通过此题。
(根据我的推测时间复杂度O(2^(2*n)))

又因为,有且仅有一种方案解决这个问题,所以我们输出时不用考虑答案的顺序。只要注意换行就行了。

代码

关于那个非常非常重要的结论,其实我也想到了,如果想要证明的话,去找高神牛吧!

感谢二中温暖的办公室和无线网络。

12.12 by zyn

posted on 2011-12-12 21:19 zyn.cpp 阅读(128) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿

随笔档案(57)

文章档案(13)

搜索

最新评论

阅读排行榜

评论排行榜