摘要: 题意:给出n,求把n写成若干个连续素数之和的方案数。分析:这道题非常类似大白书P48的例21,上面详细讲了如何从一个O(n3)的算法优化到O(n2)再到O(nlogn),最后到O(n)的神一般的优化。首先筛出10000以内的素数,放到一个数组中,然后求出素数的前缀和B。这样第i个素数一直累加到第j个... 阅读全文
posted @ 2015-01-05 23:34 AOQNRMGYXLMV 阅读(521) 评论(0) 推荐(0)
摘要: 题意:选择K个质数使它们的和为N,求总的方案数。分析:虽然知道推出来了转移方程, 但还是没把代码敲出来,可能基本功还是不够吧。d(i, j)表示i个素数的和为j的方案数,则 d(i, j) = sigma d(i-1, j-p[k]) ,其中p[k]表示第k个素数注意递推的顺序是倒着推的,否则会计算... 阅读全文
posted @ 2015-01-05 21:28 AOQNRMGYXLMV 阅读(564) 评论(0) 推荐(0)
摘要: 题意:给出一个整数n,如果n是素数输出0,否则输出它后一个素数与前一个素数的差值。分析:首先用筛法把前十万个素数都筛出来,然后放到数组里。用二分找到不大于n的最大的素数的下标,如果这个素数等于n,则直接输出0,否则输出它后一个素数与它本身的差值。 1 #include 2 #include 3 ... 阅读全文
posted @ 2015-01-05 19:24 AOQNRMGYXLMV 阅读(679) 评论(0) 推荐(0)
摘要: 题意:给一个带权无向图,和一些询问,每次询问两个点之间最大权的最小路径。分析:紫书上的题解是错误的,应该是把原算法中的加号变成max即可。但推理过程还是类似的,如果理解了Floyd算法的话,这个应该也很容易理解。 1 #include 2 #include 3 using namespace s... 阅读全文
posted @ 2015-01-05 16:19 AOQNRMGYXLMV 阅读(182) 评论(0) 推荐(0)
摘要: 题意:有n个人m通电话,如果有两个人相互打电话(直接或间接)则在同一个电话圈里。输出所有电话圈的人的名单。分析:根据打电话的关系,可以建一个有向图,然后用Warshall算法求传递闭包。最后输出是辅助一个标记数组,用DFS输出的,这个办法挺巧妙的。本来我原来的想法是,用并查集求所有的连通分量,然后再... 阅读全文
posted @ 2015-01-05 14:13 AOQNRMGYXLMV 阅读(370) 评论(0) 推荐(0)