就是一道比较麻烦的模拟题,比赛的时候没有敲,赛后1A了。。
其实主要是输入比较麻烦,买东西合成物品什么的暴力一点也不会出错的。
代码写的后丑,A了之后也懒的改了。。
1 #include2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct equip{ 8 string name; 9 int val,type; 10 string mix[6]; 11 int mixn[6],mixs; 12 }eq[61]; 13 struct pack{ 14 int size; 15 string name[10]; 16 int num[10]; 17 int val[10]; 18 int type[10]; 19 void init(){size=0;} 20 int getpid(string nm){ 21 for(int i=0;i >n1){ 79 for(int i=0;i >eq[i].name>>eq[i].val; 81 eq[i].type=1; 82 } 83 cin>>n2; 84 getline(cin,line); 85 for(int i=n1;i >eq[i].name>>eq[i].val; 90 eq[i].mixs=0,eq[i].type=2; 91 line=line.substr(p1+=1,line.length()); 92 for(int k=0,p=0;line.length()!=0&&k<=line.length();k++){ 93 if(k==line.length()||line[k]==','){ 94 stringstream ss(line.substr(p,k)); 95 ss>>eq[i].mix[eq[i].mixs]>>eq[i].mixn[eq[i].mixs]; 96 eq[i].mixs++; 97 p=k+1; 98 } 99 }100 }101 cin>>n3;102 for(int i=n1+n2;i >eq[i].name>>eq[i].val;104 eq[i].type=3;105 }106 ns=n1+n2+n3;107 108 cin>>op;109 gold=0,pk.init();110 while(op--){111 cin>>line;112 if(line[0]=='+'&&line[1]>='0'&&line[1]<='9'){113 stringstream ss(line.substr(1,line.length()));114 ss>>tmp;115 gold+=tmp;116 }else if(line[0]=='+'){117 line=line.substr(1,line.length());118 mixs=1;119 mixd[0]=getid(line),mixn[0]=1;120 getmix(line);121 //背包中是否都有合成需要的物品122 bool has=1;123 for(int i=1;i