上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 28 下一页
摘要: 经典尺取法,复杂度O(n)。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int INF = 999999; 7 const int N = 100000; 8 int a[N]; 9 10 int ma... 阅读全文
posted @ 2015-07-27 13:45 hxy_has_been_used 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 比较基本的数论题目,不过《挑战程序设计》上说这个题有不用幂运算求解的两种方法,一种复杂度为根号n,一种是O(n)预处理,O(1)判定,我还没有想出来....快速幂的方法: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 ... 阅读全文
posted @ 2015-07-27 12:54 hxy_has_been_used 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 由于区间的右端点非常大(INT_MAX),而区间长度相对小(100W),所以考虑区间筛法,左端点为1的情况需要特判一下。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 typedef long long ll; 7 c... 阅读全文
posted @ 2015-07-27 12:28 hxy_has_been_used 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 分为皇后在同一行、同一列、同一对角线的情况分别计数相加即可。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef long long ll; 8 9 ll a( ll n, ll m... 阅读全文
posted @ 2015-07-27 10:09 hxy_has_been_used 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 思路:先特判k=1和k>=n的情况,然后我们可以发现其余情况一定是第二个人赢。证明:因为排除了特殊情况,所以第一个人第一次不可能拿走全部的coin,对于剩下的coin,记为m个,如果第二个人一次就能拿走全部的coin,那么第二个人就赢了;如果不能,说明m>k>=2,则m至少为3,所以第二个人一定可以... 阅读全文
posted @ 2015-07-25 20:34 hxy_has_been_used 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 求最长回文子串的长度,字符串非常长,我们采用复杂度为线性的manacher算法。马拉车算法:http://www.cnblogs.com/biyeymyhjob/archive/2012/10/04/2711527.html 1 #include 2 #include 3 #include 4... 阅读全文
posted @ 2015-07-25 10:04 hxy_has_been_used 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个长度不超过5000的字符串,统计回文子串的个数。思路:枚举回文串的中点和长度(长度还要分奇偶),统计个数即可,复杂度为O(n^2)。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N =... 阅读全文
posted @ 2015-07-25 08:46 hxy_has_been_used 阅读(1243) 评论(0) 推荐(0) 编辑
摘要: 思路:画图分析可以得出无论两个人在什么位置、怎么遍历,最后最好情况是省出了一条链只用走一次而其他的边都一定会走两次,然后就可以联想到树的直径了,如果可以只走一次树的直径,那一定是最优解。证明:如果起点在直径上,则二人朝互相偏离的方向去遍历,则可以只走一次直径。如果起点不在直径上,则二人可以遍历完起点... 阅读全文
posted @ 2015-07-24 13:27 hxy_has_been_used 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 思路:先求出树的直径,如果k比较小,则显然在直径上走是最优的。如果k比较多的话,意味着我们要走“往返路”去访问一些结点,则很显然最优解是使得走“往返路”访问的结点的数量最少,于是我们考虑在直径上走,不够的点我们通过走往返路去访问,这样可以使得不走往返路就访问的点(直径上的点)最多,也就是走往返路访问... 阅读全文
posted @ 2015-07-24 12:07 hxy_has_been_used 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 裸的无向图最小环,我们可以在Floyd的过程中求得。具体思想是:枚举环中的编号最大的顶点k,然后枚举和k相关联的两个顶点i和j(i和j都小于k),则该环的长度为:dist[i][j] + g[j][k] + g[k][i],循环到k的时候,dist[i][j]表示的是i到j的经过的顶点编号小于k的最... 阅读全文
posted @ 2015-07-24 09:49 hxy_has_been_used 阅读(171) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 28 下一页