上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 34 下一页
摘要: 先考虑两种简单的情况:如果先手能一次把硬币拿完,即 k >= n ,那么先手胜如果每次只能拿一个硬币, 即 k = 1 ,那么如果有奇数个硬币先手胜,如果有偶数个硬币后手胜。剩下的情况就是先手一次拿不完,而且每次可以拿一个或者拿两个硬币。剩下的硬币会变成一条链,如果后手能拿完最好,不能拿完的话就拿一... 阅读全文
posted @ 2015-04-28 14:28 AOQNRMGYXLMV 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 这是我见过的最简单的一道博弈了,其实不要被复杂的棋盘吓到了。首先肯定会有而且仅有一个人胜,而且因为棋盘是对称的,所以先手相对于后手肯定更有优势,那么肯定是先手赢。这是不是严格的推理,但是确实比较容易猜出答案。题外话:既然这游戏这么坑,为什么两个人还能玩得不亦乐乎。。1 #include 2 3 in... 阅读全文
posted @ 2015-04-28 13:58 AOQNRMGYXLMV 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 切巧克力的游戏,想得还是不是太明白。后者会尽量选前着切后其中小的一块来切,那么先手须尽量取中间来切。So?题解都是这么一句话,不知道是真懂了还是从别人那抄过来的。后来找到一个官方题解,分析得比较认真,但我这智商还是没懂太多,QAQ本题我抄袭自《Winning Ways for your Mathem... 阅读全文
posted @ 2015-04-28 13:31 AOQNRMGYXLMV 阅读(1048) 评论(0) 推荐(0) 编辑
摘要: 这道题搞了好久,其实坑点挺多。。网上找了许多题解,发现思路其实都差不多,所以就不在重复了。推荐一篇比较好的题解,请戳这。另外,如果因为可能要更新多次,但最终查询只需要一次,所以没有写pushup函数,仅有一个pushdown。 1 #include 2 3 const int maxn =... 阅读全文
posted @ 2015-04-28 12:18 AOQNRMGYXLMV 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 离散化其实就是把所有端点放在一起,然后排序去个重就好了。比如说去重以后的端点个数为m,那这m个点就构成m-1个小区间。然后给这m-1个小区间编号1~m-1,再用线段树来做就行了。具体思路是,从最后一张的海报来判断,如果海报覆盖的区域有空白区域那么这张海报就是可见的。并及时更新线段树信息。说一个我调了... 阅读全文
posted @ 2015-04-27 15:42 AOQNRMGYXLMV 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 这题WA了好久,一直以为是lld和I64d的问题,后来发现是自己的pushdown函数写错了,说到底还是因为自己对线段树理解得不好。因为是懒惰标记,所以只有在区间分开的时候才会将标记往下传递。更新和查询都要pushdown。 1 #include 2 3 typedef long long LL... 阅读全文
posted @ 2015-04-26 16:30 AOQNRMGYXLMV 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 有m个操作,每个操作 X Y Z是将区间[X, Y]中的所有的数全部变为Z,最后询问整个区间所有数之和是多少。区间更新有一个懒惰标记,set[o] = v,表示这个区间所有的数都是v,只有这个区间被分开的时候再往下传递。 1 #include 2 3 const int maxn = 10000... 阅读全文
posted @ 2015-04-26 15:07 AOQNRMGYXLMV 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 这道题综合性挺强的,又牵扯到数论,又有线段树。线段树维护的信息就是区间中有多少个人没跳出去,然后计算出下一个人是剩下的人中第几个。我在这调程序调了好久,就是那个模来模去的弄得我头晕。不过题确实是好题,给赞。 1 #include 2 #include 3 #include 4 #include... 阅读全文
posted @ 2015-04-26 13:50 AOQNRMGYXLMV 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 倒着插,倒着插,这道题是倒着插!想一下如果 Posi 里面有若干个0,那么排在最前面的一定是最后一个0.从后往前看,对于第i个数,就应该插在第Posi + 1个空位上,所以用线段树来维护区间空位的个数。说一下那个坑爹的第56行的判断:if(i > 1) printf(" ");将输出的n个数用空格隔... 阅读全文
posted @ 2015-04-26 10:22 AOQNRMGYXLMV 阅读(125) 评论(0) 推荐(0) 编辑
摘要: h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子。每次找能放纸条而且是最上面的位置,询问完以后可以同时更新,所以可以把update和query写在同一个函数里。 1 #include 2 #include 3 #include 4 using namespace std; ... 阅读全文
posted @ 2015-04-26 08:35 AOQNRMGYXLMV 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 因为题目说了,两个人之间总有一个人喜欢另一个人,而且不会有两个人互相喜欢。所以只要所给的图中有一个环,那么一定存在一个三元环。所以用拓扑排序判断一下图中是否有环就行了。 1 #include 2 #include 3 4 const int maxn = 2000 + 10; 5 char G... 阅读全文
posted @ 2015-04-25 21:10 AOQNRMGYXLMV 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 原来求逆序数还可以用线段树,涨姿势了。首先求出原始序列的逆序数,然后递推每一个序列的逆序数。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 20000 + 10; 7 8 int n... 阅读全文
posted @ 2015-04-25 20:42 AOQNRMGYXLMV 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 和上一道题没什么变化,只不过把单点增减变成了单点替换,把区间求和变成了区间求最大值。 1 #include 2 #include 3 using namespace std; 4 5 const int maxn = (1 = R) return _max[o];31 int ans ... 阅读全文
posted @ 2015-04-25 18:16 AOQNRMGYXLMV 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 哎,又切了一天的水题。线段树果然必须自己写出来才能叫真正的会了,之前一直在套模板确实不好。这个题目是单点更新 之 单点增减,= ̄ω ̄= 1 #include 2 3 const int maxn = (1 = R) return sum[o];28 29 int ans = 0;30 ... 阅读全文
posted @ 2015-04-25 17:53 AOQNRMGYXLMV 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 可以参考Thomas S. Ferguson的《Game Theory》,网上的博客大多也是根据这个翻译过来的,第五章讲了很多关于翻硬币的博弈。这种博弈属于Mock Turtles,它的SG函数值是2x或2x+1.把一个数写成二进制的形式,如果1的个数为奇数,把这种数叫做odious;否则就叫做ev... 阅读全文
posted @ 2015-04-25 15:52 AOQNRMGYXLMV 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 参考了众巨巨的博客,现在重新整理一下自己的思路。首先在纸上画了一下转移图:1 3 4号盒子是不能够再转移卡片到其他盒子中去了的,其他盒子中的卡片经过若干步的转移最终也一定会转移到1 3 4号盒子中去。具体来说,n % 6 == 0 或 2 或 5的盒子,经过奇数步转移到1 3 4中去,其他的则须经过... 阅读全文
posted @ 2015-04-25 14:28 AOQNRMGYXLMV 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 这道题的答案猜也很好猜出来,但是想太难想了。。题解一贴,然后闪人。。请戳这 阅读全文
posted @ 2015-04-25 12:25 AOQNRMGYXLMV 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 设这个序列的前缀和为Si(0 2 #include 3 4 const int maxn = 15; 5 int n; 6 int G[maxn][maxn]; 7 char s[100]; 8 int sum[maxn], a[maxn]; 9 10 int topo[maxn], c[ma... 阅读全文
posted @ 2015-04-25 11:34 AOQNRMGYXLMV 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 将每个颜色看成一个顶点,对于每个珠子在两个颜色之间连一条无向边,然后求欧拉回路。 1 #include 2 #include 3 4 const int maxn = 50 + 5; 5 int G[maxn][maxn], deg[maxn]; 6 7 void Euler(int u) ... 阅读全文
posted @ 2015-04-25 10:27 AOQNRMGYXLMV 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 用一个队列模拟,还有一个数组cnt记录9个优先级的任务的数量,每次找到当前最大优先级的任务然后出队,并及时更新cnt数组。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 ... 阅读全文
posted @ 2015-04-25 09:23 AOQNRMGYXLMV 阅读(412) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 34 下一页