[水]20121004Finding Feasible Paths

简单模拟

#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;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值