摘要:
题意:要求计算两个和值比较大小。注意没有马或者是炮的时候能量减1,且能量不能小于1。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;int table[10] = {16, 7, 8, 1, 1, 2, 3};int main() { int T; scanf("%d", &T); while (T--) { int x, 阅读全文
摘要:
题意:一个裸的枚举题,告诉你M个点,问这M个点能否覆盖其他非M点。做的时候时间复杂度计算错误。。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int N, M;int r[15];int x[15], y[15];char mp[55][55];char tp[55][55];const int INF = 0x3f3f3f3f;bool judge 阅读全文
摘要:
题意:就是最小生成树,题中给定了一条必须要连接的边,排序的时候不把他考虑进去即可。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>#include <iostream>#include <cmath>using namespace std;int N;struct Point { int x, y;};struct Edge { int a, b; double dis; bool operator < (co 阅读全文
摘要:
题意:给定一个整数串,有Q组询问,问这个串中长度为w的子串中不同的数字之和为多少,这题的动态规划感觉很有技巧性。解法:设f[i]表示w为 i 时不同的数字之和,那么考虑f[i+1]和f[i]的关系可以得知:f[i+1]就是从f[i]中去除最后一个子串后在每个串后加上一个数字的情况,因此可以得到这样的一个递推式:f[i] = f[i-1] - tail[N-i+2] + left 其中tail[N-i+2]表示长度为i-1的最后一个子串中不同的数字共有多少个,left表示所有数字中与前一个相同数字的长度大于 i 的数字还剩多少个。因此还要另外预处理出后缀不相同数字个数,和最近相同数字的长度,注. 阅读全文
摘要:
http://www.cnblogs.com/skyiv/archive/2010/03/27/1698550.html关键点在于通过记录一个数被分解的方案中包不包含1来考虑。得出结论有:f[2*N+1] = f[2*N]f[2*N] = f[2*N-1] + f[N]f[2*N] = f[0]+f[1]+...+f[N]代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>using names 阅读全文