- 博客(6)
- 收藏
- 关注
原创 kmp nxt数组
昨天看了kmp,nxt的数组那部分有两种写法第一种k = 0;for(int i = 1;i{if( k > 0 && str[k] != str[i])k = nxt[k-1];if(str[k]==str[i])k++;nxt[i]=k;}第二种优化之后int k = 0, j = -1;nxt[0
2015-06-15 18:39:35 541
转载 cf 543A 完全背包
http://blog.csdn.net/slowlight93/article/details/45578197原文连接cf 543Ahttp://codeforces.com/problemset/problem/543/A首先考虑最直接的三维方程 dp(i, j, k) 表示前i个程序员写了j行代码bug不超过k dp(i,j,k)=∑dp(i−1,j−r,k−r∗a[i])
2015-06-14 01:46:27 467
原创 dp cf264B
http://codeforces.com/problemset/problem/264/B这道题没做出来,后来看了题解,好机智,我还是要继续加油写dp!题目要求求出最长的相邻两数不互质的最长的严格上升数列的长度对于素数的处理又get到了新技能for(int i = 2; iif(!a[i]) for(int j = i; j for(int i = 2;iif(!
2015-06-12 12:26:08 365
原创 cf contest2 B
http://codeforces.com/problemset/problem/2/B求从左上角到右下角所经过的数字之积末尾所含0最小的个数10=2*5dp[i][j][0]代表走到i,j位置,所得2的最小和,dp[i][j][1]代表走到i,j位置,所得5的最小和,最后得到的最小个数是min(dp[n][n][0],dp[n][n][1]);还要
2015-06-11 20:43:34 353
原创 素数打表 cf 546D
素数打表代码:memset(a,0,sizeof a);for(int i = 2; iif(!a[i]){for(int j = i; j a[j] = a[j/i] + 1;}题目代码#include #include #include #include using namespace std;int ans[5000001];i
2015-06-08 19:28:15 474
原创 题解 cf div2 193B
这道题一开始没用dp做,但是写的代码一直wa,看了别人代码自己写了下用到dp的思想,枚举第二个子列,然后每次比较当前的pre(第二个子列和这个子列前最大的第一个子列之和),得到更大的便更新pre代码如下:#include #include #include #include using namespace std;#define maxn 200005long
2015-06-08 01:05:35 540
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人