随笔分类 - POJ
摘要:题目链接:http://poj.org/problem?id=2484 这道题目大意是这样的,有n个硬币围成一圈,两个人轮流开始取硬币(假设他们编号从1到n),可以选择取一枚或者取相邻的两枚(相邻是指他们的编号相邻)。在双方都采取最优策略取硬币的情况下,问谁最后会赢。 这道题目我一开始没有什么好的办
阅读全文
摘要:这道题最容易想到的是用朴素的做法,即 每滑动一次,就遍历一次窗口找出最大最小值,这样时间复杂度为O(n*k),由于题目数据比较大,这种做法肯定是超时的。 另外,根据书上的讲解,还可以采用优先队列来求解。用优先队列存储元素下标,根据元素下标找到元素值并进行排序作为优先队列的排序规则。 优先队列的队列首
阅读全文
摘要:dp[i]代表是数字i的最多组合数如果i是一个奇数,i的任意一个组合都包含1,所以dp[i] = dp[i-1] 如果i是一个偶数,分两种情况讨论,一种是序列中包含1,因此dp[i]=dp[i-1]一种是序列不包含1,那么序列中的数都是2的倍数,把他们都除以2,序列与i/2序列相同,得到dp[i]=dp[i-1]+dp[i>>1] 1 #include 2 using namespace ...
阅读全文
摘要:题目大意就是求在特定规则下的最短路,这个规则包含了消除障碍的操作。用BFS感觉选择消除障碍的时候不同路径会有影响,用DFS比较方便状态的还原(虽然效率比较低),因此这道题目采用DFS来写。 写的第一次提交代码是TLE,原因是忘记总步数>10就应该剪枝的条件。AC代码如下:
阅读全文