首先说一下 不是解题报告 我很水 才做出2只 只是记录一下做题状况 就做出2题 反省加更加努力
E Eternal Reality
简单dp 高哲写的
#include#include int main() { int l,n,x,y; int i,j,k; int s[2100]; int dp[2][2100]; while(scanf("%d %d %d %d",&l,&n,&x,&y)!=EOF) { memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { scanf("%d",&s[i]); } int temp; for(i=1;i<=n;i++) { temp=0; for(j=i;j =s[j]&&l+1!=6) temp++; } for(;j =s[j]) temp++; } dp[0][i]=dp[1][i-1]+temp; if(l>=s[i]) dp[1][i]=dp[1][i-1]+1; else dp[1][i]=dp[1][i-1]; if(i>=x+y-1) { if(dp[0][i-x-y+1]>dp[1][i]) dp[1][i]=dp[0][i-x-y+1]; } } /* for(i=0;i<2;i++) { for(j=0;j<=n;j++) { printf("%d ",dp[i][j]); } puts(""); }*/ int maxx=0; for(i=0;i<=n;i++) { if(dp[0][i]>maxx) maxx=dp[0][i]; if(dp[1][i]>maxx) maxx=dp[1][i]; } printf("%d\n",maxx); } return 0; }
F Salary Increasing
签到题 不想说什么
#include#include int s[200010]; int main() { int j,a,n,q,k,x,y,z; while(scanf("%d %d",&n,&q)!=EOF) { long long i; memset(s,0,sizeof(s)); for(i=0;i =x;i--) { s[i+z]+=s[i]; s[i]=0; } } long long sum=0; for(i=0;i<200010;i++) { sum=sum+s[i]*i; } printf("%lld\n",sum); } return 0; }