[水]20121004Finding Feasible Paths

来源:互联网 发布:linux修改普通用户密码 编辑:程序博客网 时间:2024/06/06 05:34

简单模拟

#include<iostream>#include<cstdio>#include<map>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<algorithm>#include<set>#define inf (1ull<<63)-1#define N 100005#define maxn 100005#define pb(a) push_back(a)#define mem(a,b) memset(a,b,sizeof(a))#define eps 1e-9#define zero(a) fabs(a)<eps#define LL long long#define ULL unsigned long long#define lson l,m,step<<1#define rson m+1,r,step<<1|1#define MOD 1000000007#define mp(a,b) make_pair(a,b)using namespace std;int n,m;string aa; map <string , bool> ma; void s(int a,int b,int *v){aa+="1+2+"; if (a<=2){aa+="3+"; *v = b+1; }else {aa+="4+5+";if (a>b) aa+="6+",*v =*v +1;else aa+="7+8+",*v =*v -1;aa+="9+"; if (a<b+1){aa+="10+",s(a-1,b,v);aa+="11+",s(a-2,*v,v);}else aa+="12+13+",s(a-3,*v,v);aa+="14+";}aa+="15+";} int main(){    int T,i,j,k;    ma.clear();     for (i=0;i<21;i++)for (j=0;j<100;j++){int z;aa="16+17+18+19+20+";s(i,j,&z);aa+="21+"; ma[aa]=1; }    cin>>T;    while (T--)    {char sa[5];string sb=""; while (cin>>sa){sb+=sa;sb+="+"; if(sa[0]=='2'&&sa[1]=='1')break; }if (ma[sb])cout<<"feasible"<<endl;else cout<<"infeasible"<<endl;     }    return 0;}


 

原创粉丝点击