摘要:
题目大意:n堆石子,可以任取一堆任意个数,不能不取,求先手是否必胜。 裸Nim 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<string> 6 #include<al 阅读全文
摘要:
题意:给你2n个人,两方各n个人,交叉坐,每个人可以取的石子有一个最大限制,总共有S颗石子,哪一方取了最后一颗石子就输了,问先取石子的这一方是否有必胜策略。 DP,dp[i][j]代表第i个人还有J个石子没有取得状态。记忆化搜索 1 #include<iostream> 2 #include<cst 阅读全文
摘要:
题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆。 真是好♂题,代码不长就是好♂题。 首先考虑两堆相同的石子,先手一定必输,因为若是我操作第一堆,则后手也可以对第二堆做对称决策。 其实,其他情况,一定是先 阅读全文
摘要:
题目大意:n个石子,每次可以取一个石子向左移动,左边有边界限制,每个位置最多同时放一个石子,求先手必胜还是必败。 首先,我们将石子两两配对,每一对,若是先手可以将左边的向左移动一格,则可以用后手将右边的石子向左移动,则我们将每2个石子配成一对。注意若是奇数堆,最左边的一堆要和边界配对,将每对之间的空 阅读全文
摘要:
构建:像线性的莫队那样,依旧是按sqrt(n)为一块分块。 然后呢,我们可以发现一些树上莫队的性质: 用S(v, u)代表 v到u的路径上的结点的集合。 用root来代表根结点,用lca(v, u)来代表v、u的最近公共祖先。 那么 S(v, u) = S(root, v) xor S(root, 阅读全文
摘要:
俗话说:摩托再好,不如骡拉啊(好像不是骡) Manacher就是O(N)计算最长回文子串的算法。 其中我们需要在0位置加入字符“$",然后原字符串中每两个字符加入一个"#"。 算法中 id 为当前最长回文子串的中心 mx为当前最长回文子串的右侧位置。 每做到一个i,若mx>i,则p[i]=min(m 阅读全文
摘要:
bzoj2179 G_word:只要背模板就行了233 阅读全文
摘要:
题目大意:给定n个点坐标,m条有向边,要求最小树形图。 题解:直接上模板,前面打的 vis[v]=i一直把i打成1,一直TLE。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #incl 阅读全文