- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 01背包 一维数组写的01背包
#include #include int main() { int n,i,j,w[10],p[10],m,f[100]; while(scanf("%d%d",&n,&m)!=EOF) { for(i=1; i scanf("%d%d",&w[i],&p[i]); memset(f,0,sizeo
2014-04-29 10:15:34 1349
原创 完全背包 杭电 1114Piggy-Bank
#include #include int main() { int f[1005],i,j,w[550],p[550],n,m,t,b; scanf("%d",&t); while(t--) { scanf("%d%d",&b,&m); m=m-b; scanf("%d",&n);
2014-04-29 10:08:21 683
原创 大数相加
#include #include int main() { char a1[100],a2[100]; int ab1[110],ab2[110],ab3[110],i,c,s,p,su1,su2,t; memset(ab1,0,sizeof(ab1)); memset(ab2,0,sizeof(ab2)); memset(ab3,0,si
2014-04-29 10:05:14 502
原创 线段树
NYIST 士兵杀敌(二) #include #include int a[1000005]; struct Tree { int left,right; int sum; }; struct Tree tree[2100000];//这种写法树的枝叶可能太多所以tree【】要申请的大一点 // 不能和a数组一样大 他的空间复杂度小于4*a数组应该开为a
2014-04-29 09:59:53 395
转载 大数相乘
#include #include int main() { int a[10000],b[100000],c[100000],alen,blen,i,j,k; char str1[100000],str2[100000]; while(scanf("%s%s",str1,str2)!=EOF) { memset(a,0,sizeof
2014-04-29 09:47:55 466
原创 输出最长公共子序列
给定字符串 输出最大的公共子序列 如果有多个输出任意一个 如果没有就输出0 #include #include int a[100][100]; char str1[1000]; int k=0,flag; void ok(int m,int n) { //printf("%d %d\n",m,n); if(m==0||n==0) retu
2014-04-28 12:35:29 647
原创 区间dp 杭电Cheapest Palindrome
大概意思是添加或删除任意个字母构成汇文字符串添加和删除时的代价是不相同的 求最小的代价 dp【i】【j】表示的是第i个到第j个合并的最小代价 如果是两个的话能相同就是零不相同就看是添加或者删除哪一个代价最小就执行哪一步 三个或三个以上合并先判断要合并的能否和第一个相同如果相同就判断是dp[i][j]=min(dp[I+1][j-1],dp[I][j-1]+当前字母的最小代价,dp[I+1][
2014-04-24 16:56:21 499
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人