51nod 1489
2017-03-30 23:13
113 查看
#include <bits/stdc++.h> //#include <ext/pb_ds/tree_policy.hpp> //#include <ext/pb_ds/assoc_container.hpp> //using namespace __gnu_pbds; using namespace std; #define pi acos(-1) #define endl '\n' #define me(x) memset(x,0,sizeof(x)); #define foreach(it,a) for(__typeof((a).begin()) it=(a).begin();it!=(a).end();it++) typedef long long LL; const int INF=0x3f3f3f3f; const LL LINF=0x3f3f3f3f3f3f3f3fLL; const int dx[]={-1,0,1,0,-1,-1,1,1}; const int dy[]={0,1,0,-1,1,-1,1,-1}; const int maxn=1e3+5; const int maxx=1e6+100; const double EPS=1e-7; const int mod=1000000007; template<class T>inline T min(T a,T b,T c) { return min(min(a,b),c);} template<class T>inline T max(T a,T b,T c) { return max(max(a,b),c);} template<class T>inline T min(T a,T b,T c,T d) { return min(min(a,b),min(c,d));} template<class T>inline T max(T a,T b,T c,T d) { return max(max(a,b),max(c,d));} //typedef tree<pt,null_type,less< pt >,rb_tree_tag,tree_order_statistics_node_update> rbtree; /*lch[root] = build(L1,p-1,L2+1,L2+cnt); rch[root] = build(p+1,R1,L2+cnt+1,R2);中前*/ /*lch[root] = build(L1,p-1,L2,L2+cnt-1); rch[root] = build(p+1,R1,L2+cnt,R2-1);中后*/ long long gcd(long long a , long long b){if(b==0) return a;a%=b;return gcd(b,a);} int cnt[100],minn=INF; int n,a,b; void dfs(int x,int res)// x为处理的哪个小兵的编号,res为答案 { if(x==n) { minn=min(minn,res); return ; } if(cnt[x-1]<0) { dfs(x+1,res);//其实这个DFS就是把每种可能的情况遍历一遍。 } int t=0; if(cnt[x-1]>=0) { t=cnt[x-1]/b+1; cnt[x-1]-=t*b; cnt[x]-=t*a; cnt[x+1]-=t*b; dfs(x+1,res+t); cnt[x-1]+=t*b; cnt[x]+=t*a; cnt[x+1]+=t*b; } int num=cnt[x]/a+1; if(cnt[x]>=0&&t<num) { for(int i=t+1;i<=num;i++) { cnt[x-1]-=b*i; cnt[x]-=a*i; cnt[x+1]-=b*i; dfs(x+1,res+i); cnt[x-1]+=b*i; cnt[x]+=a*i; cnt[x+1]+=b*i; } } return ; } int main() { cin>>n>>a>>b; for(int i=1;i<=n;i++) { cin>>cnt[i]; } LL ans=0; int x=cnt[1]/b+1;//先把头和尾A了 没毛病 ans+=x; cnt[1]-=b*x; cnt[2]-=a*x; cnt[3]-=b*x; if(cnt >=0) { x=cnt /b+1; cnt[n-2]-=b*x; cnt[n-1]-=a*x; cnt -=b*x; ans+=x; } dfs(2,0); if(minn==INF) { minn=0; } cout<<ans+minn<<endl; }
相关文章推荐
- 51Nod 1489 蜥蜴和地下室
- 51nod 1489
- 51Nod-1489 蜥蜴和地下室(暴力DFS)
- JAVA学习45_51Nod-1489-蜥蜴和地下室
- 51nod 1489
- 【51Nod】1489 - 蜥蜴和地下室(dfs)
- 51Nod 1489 蜥蜴和地下室
- 51nod 1489
- 1489 蜥蜴和地下室 51NOD
- 51nod 1489 蜥蜴和地下室
- 蜥蜴和地下室 51Nod - 1489
- 51Nod - 1489 dfs
- 51nod 1489 蜥蜴和地下室 暴力dfs
- 51Nod-1489-蜥蜴和地下室
- 51Nod-1489-蜥蜴和地下室
- 51Nod 1489 蜥蜴和地下室 DFS
- 51nod 1489 蜥蜴和地下室
- 51nod 1489
- 51nod 1489
- 51nod 1489 蜥蜴和地下室 dfs