1 条题解
-
0
#include<bits/stdc++.h> using namespace std; struct node{int a[4],kt;}; deque<node>Q; map<int,bool>V;bool vv[30]; int A[4]; int kt(node no){return no.a[1]*10000+no.a[2]*100+no.a[3];} int main() { scanf("%d%d%d",&A[1],&A[2],&A[3]); memset(vv,0,sizeof(vv));vv[A[3]]=1; node stno=node{{0,0,0,A[3]},0};stno.kt=kt(stno); V[stno.kt]=1; Q.push_back(stno); while(!Q.empty()) { for(int i=1;i<=3;i++)for(int j=1;j<=3;j++) if(i!=j&&Q.front().a[i]>0) { node no=Q.front(); int t=A[j]-no.a[j]; if(no.a[i]>=t){ no.a[j]+=t; no.a[i]-=t;} else { no.a[j]+=no.a[i]; no.a[i]=0; } no.kt=kt(no); if(V[no.kt]==0) { V[no.kt]=1; if(no.a[1]==0)vv[no.a[3]]=1; Q.push_back(no); } } Q.pop_front(); } for(int i=0;i<=20;i++)if(vv[i])printf("%d ",i); return 0; }
- 1
信息
- ID
- 995
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 34
- 已通过
- 27
- 上传者