摘要:
听说这是个LIS的题,画了画图,发现是这样的..View Code #include <stdio.h>int ar[500005],vis[500000];int main(){ int n,i,j,k,m,p,r,l=1; while (scanf("%d",&n)!=EOF) { for (i=0;i<n;i++) { scanf("%d%d",&p,&r); ar[p]=r; } for (i=1,j=0,m=0;i<=n;i++) { ... 阅读全文
摘要:
0-1背包View Code #include <stdio.h>#include <string.h>int max(int a,int b){ return a>b?a:b;}int main(){ int T,i,j,n,V,a,val[1005],dp[1005]; scanf("%d",&T); while (T--) { scanf("%d%d",&n,&V); memset(dp,0,sizeof(dp)); for (i=0;i<n;i++)scanf("%d" 阅读全文
摘要:
dp[i]+=dp[i-j];dp[i]表示传到第i个位置有多少种方法View Code #include <stdio.h>#include <string.h>int main(){ int n,m,i,j,dp[40]; while (scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0)break; memset(dp,0,sizeof(dp)); dp[1]=1; for (i=2;i<=n;i++) { for (j=0;j<=m;j++) ... 阅读全文