过河——推导缩距离,动规
推导当然是看别人的,扩展欧几里得我学得屎一样。
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 const int N=105,M=10086; 6 int len,s,t,m,ans,cnt,val[N],mem[M],f[M]; 7 int main(){ 8 scanf("%d%d%d%d",&len,&s,&t,&m); 9 for(int i=1;i<=m;i++)cin>>val[i]; 10 if(s==t){ 11 for(int i=1;i<=m;i++)ans+=val[i]%s==0; 12 printf("%d\n",ans); 13 return 0; 14 } 15 sort(val+1,val+1+m); 16 mem[cnt=val[1]%90]=1; 17 for(int i=2;i<=m;i++)mem[cnt+=(val[i]-val[i-1])%90]=1; 18 for(int i=cnt;i>=0;i--){ 19 f[i]=100; 20 for(int j=s;j<=t;j++)f[i]=min(f[i],f[i+j]+mem[i]); 21 } 22 printf("%d\n",f[0]); 23 return 0; 24 }
CodeVS 9ms

浙公网安备 33010602011771号