过河——推导缩距离,动规

  推导当然是看别人的,扩展欧几里得我学得屎一样。

 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 }
Method_01

  CodeVS 9ms

posted @ 2017-07-20 19:21  Darkins  阅读(136)  评论(0)    收藏  举报