TC SRM 556
250pt:
最大xor和路径。
由于权值比较小,暴力就行了。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 #include<set> 7 #include<map> 8 #include<bitset> 9 #include<ctime> 10 #include<iostream> 11 #include<string> 12 #include<cctype> 13 #include<queue> 14 #include<stack> 15 #include<list> 16 17 using namespace std; 18 19 int n; 20 21 struct rec 22 { 23 int num,v; 24 rec(){} 25 rec(int a,int b) 26 { 27 num=a;v=b; 28 } 29 }; 30 31 queue<rec> que; 32 33 bool use[1000][2000]; 34 35 class XorTravelingSalesman 36 { 37 public: 38 int maxProfit(vector <int> v, vector <string> roads) 39 { 40 n=roads[0].size(); 41 que.push(rec(0,v[0])); 42 int ans=v[0]; 43 use[0][v[0]]=true; 44 while (que.size()) 45 { 46 rec now=que.front(); 47 que.pop(); 48 for (int a=0;a<n;a++) 49 if (roads[now.num][a]=='Y') 50 { 51 int vv=now.v ^ v[a]; 52 if (!use[a][vv]) 53 { 54 que.push(rec(a,vv)); 55 use[a][vv]=true; 56 ans=max(ans,vv); 57 } 58 } 59 } 60 return ans; 61 } 62 }; 63 64 // BEGIN KAWIGIEDIT TESTING 65 // Generated by KawigiEdit 2.1.4 (beta) modified by pivanof 66 bool KawigiEdit_RunTest(int testNum, vector <int> p0, vector <string> p1, bool hasAnswer, int p2) { 67 cout << "Test " << testNum << ": [" << "{"; 68 for (int i = 0; int(p0.size()) > i; ++i) { 69 if (i > 0) { 70 cout << ","; 71 } 72 cout << p0[i]; 73 } 74 cout << "}" << "," << "{"; 75 for (int i = 0; int(p1.size()) > i; ++i) { 76 if (i > 0) { 77 cout << ","; 78 } 79 cout << "\"" << p1[i] << "\""; 80 } 81 cout << "}"; 82 cout << "]" << endl; 83 XorTravelingSalesman *obj; 84 int answer; 85 obj = new XorTravelingSalesman(); 86 clock_t startTime = clock(); 87 answer = obj->maxProfit(p0, p1); 88 clock_t endTime = clock(); 89 delete obj; 90 bool res; 91 res = true; 92 cout << "Time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " seconds" << endl; 93 if (hasAnswer) { 94 cout << "Desired answer:" << endl; 95 cout << "\t" << p2 << endl; 96 } 97 cout << "Your answer:" << endl; 98 cout << "\t" << answer << endl; 99 if (hasAnswer) { 100 res = answer == p2; 101 } 102 if (!res) { 103 cout << "DOESN'T MATCH!!!!" << endl; 104 } else if (double(endTime - startTime) / CLOCKS_PER_SEC >= 2) { 105 cout << "FAIL the timeout" << endl; 106 res = false; 107 } else if (hasAnswer) { 108 cout << "Match :-)" << endl; 109 } else { 110 cout << "OK, but is it right?" << endl; 111 } 112 cout << "" << endl; 113 return res; 114 } 115 int main() { 116 bool all_right; 117 all_right = true; 118 119 vector <int> p0; 120 vector <string> p1; 121 int p2; 122 123 { 124 // ----- test 0 ----- 125 int t0[] = {0,7,11,5,2}; 126 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 127 string t1[] = {"NYNYY","YNYNN","NYNNN","YNNNN","YNNNN"}; 128 p1.assign(t1, t1 + sizeof(t1) / sizeof(t1[0])); 129 p2 = 14; 130 all_right = KawigiEdit_RunTest(0, p0, p1, true, p2) && all_right; 131 // ------------------ 132 } 133 134 { 135 // ----- test 1 ----- 136 int t0[] = {556}; 137 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 138 string t1[] = {"N"}; 139 p1.assign(t1, t1 + sizeof(t1) / sizeof(t1[0])); 140 p2 = 556; 141 all_right = KawigiEdit_RunTest(1, p0, p1, true, p2) && all_right; 142 // ------------------ 143 } 144 145 { 146 // ----- test 2 ----- 147 int t0[] = {0,4,8,32,512}; 148 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 149 string t1[] = {"NYYYY","YNNNN","YNNNN","YNNNN","YNNNN"}; 150 p1.assign(t1, t1 + sizeof(t1) / sizeof(t1[0])); 151 p2 = 556; 152 all_right = KawigiEdit_RunTest(2, p0, p1, true, p2) && all_right; 153 // ------------------ 154 } 155 156 { 157 // ----- test 3 ----- 158 int t0[] = {37,1,19,64,42,41,64,64,54,16,256,36,64,2,4,2,62,29,58,64,1,32,16,256,17,2,17,4,1,64,21,8,256,63,3,1,43,15,8,39,41,8,16,8,16,256,64,512,45,64}; 159 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 160 string t1[] = {"NNNNNNYYYYNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNN","NNNNNNNNNNNNNNNNYNNNNNNNYNNNNNNNNNNNNNNNNYYNNNYYNN","NNNNNYYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","NNNNNNNYNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","NNNNNNNNNNNNNNNYNNYNYNNNNNNYNNNNNNNNNNYNNNNNNNNNNN","NNYNNNYNNNNNNNNYNNYNNNYYNNNYNYNNNNYNNNNNNNNYNNNNNN","YNYNNYNYNNNNNNNYNNNNNNNNNNNNNNNNNNNYNNNNNNNNYNNYNN","YNNYNNYNYNYYNNNNNNNNNNNNNNNNNNNNNNYNNYNNNNNNNNNNNN","YNNNNNNYNNNNNNNNNNNNNNYNYNNNNNNNNNNYYYNNNNNNNYNNNY","YNNNNNNNNNNNNNNNNYNYNYNYYNNNYNNNNYNNNNNNNNNNNNNNNY","NNNNNNNYNNNNYNNNNNNNNYYNNNYYNNNNYNYYNNNNNNNNNNNNNN","NNNNNNNYNNNNNNYNNNNYYNNNYNNYYNNNNNNNNNNNNNYNYNNNNN","NNNNNNNNNNYNNNNNYNNNNYNNNNNNNNNNYNYNNYNYNNNYNYNNNN","NNNNNNNNNNNNNNNYNNNNNNNNNYNNNNNNNNNNNNYNNNNNNNNYNN","NNNNNNNNNNNYNNNNNYNYNNYYNNNNNYNNNNNNNNNYNNYNNYNNNN","NNNNYYYNNNNNNYNNNYYNNYNNNYNYYNNNNNNNNNYYYNNYNNYNYN","NYNNNNNNNNNNYNNNNNNNYNNNYYNNNYNNNNYNNNNNNNNNNNNNNN","NNNNNNNNNYNNNNYYNNNNNNYNNNYNNNNNYNNYNYYNNNNYNNNYNN","NNNYYYNNNNNNNNNYNNNNNYNYNYNNNNNNNNYNNNNNNNNNNN" 161 "NNNN","NNNNNNNNNYNYNNYNNNNNNYNYYYNNNNNNNNNNNYNNYNNNNNYNNN","NNNNYNNNNNNYNNNNYNNNNYNNNYYNNNYNNNYNNNNNNNNNNYNYNY","NNNNNNNNNYYNYNNYNNYYYNYNNNNNNNNYNYNNNNNNNNNNYNNNNN","NNNNNYNNYNYNNNYNNYNNNYNNNNNNNNNNNYNNYNYNNYNNNNNNNN","NNNNNYNNNYNNNNYNNNYYNNNNNNNNNNNNNNNNNNNNNNYNNNYNNN","NYNNNNNNYYNYNNNNYNNYNNNNNNNNNNYNNNNNNYNNNYNNYNNNNN","NNNNNNNNNNNNNYNYYNYYYNNNNNNYNNNNNNNNNNNYYNNNNNNNYN","NNNNNNNNNNYNNNNNNYNNYNNNNNNNNYNNNNYNNNNNNYYNNNNYNN","NNNNYYNNNNYYNNNYNNNNNNNNNYNNNYYNYNNNNNNNNNNNNNNNNN","NNNNNNNNNYNYNNNYNNNNNNNNNNNNNYNNNNYNNNNNNNNYNNYNYN","NNNNNYNNNNNNNNYNYNNNNNNNNNYYYNNNNNNNNYNNNNYNNNNNNN","NNNNNNNNNNNNNNNNNNNNYNNNYNNYNNNNNYNNNNNNNNNNNNNNNY","NNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNYNNNNNNNNNYNNNNNNN","NNNNNNNNNNYNYNNNNYNNNNNNNNNYNNNYNNNYYNNNNNYNNNYNNN","NNNNNNNNNYNNNNNNNNNNNYYNNNNNNNYNNNNNNNYNNYNNNNNNNN","NNNNNYNYNNYNYNNNYNYNYNNNNNYNYNNNNNNYYNYNYNYNNNNNYN","YNNNNNYNYNYNNNNNNYNNNNNNNNNNNNNNYNYNNNNNYNNYNNNYNN","NNNNNNNNYNNNNNNNNNNNNNYNNNNNNNNNYNYNNNNNNYNNNNNNYN","NNNNNNNYYNNNYNNNNYNYNNNNYNNNNYNNNNNNNNNN" 162 "NYNNNNYNNN","NNNNYNNNNNNNNYNYNYNNNNYNNNNNNNNNNYYNNNNYNNNNNNNNNY","NNNNNNNNNNNNYNYYNNNNNNNNNYNNNNNNNNNNNNYNNNNNYNYYNN","NNNNNNNNNNNNNNNYNNNYNNNNNYNNNNNNNNYYNNNNNNNNNNNNNN","NYNNNNNNNNNNNNNNNNNNNNYNYNYNNNNNNYNNYYNNNNNNNNNNNN","NYNNNNNNNNNYNNYNNNNNNNNYNNYNNYNYYNYNNNNNNNNNYNNNNN","NNNNNYNNNNNNYNNYNYNNNNNNNNNNYNNNNNNYNNNNNNNNNNNNNY","NNNNNNYNNNNYNNNNNNNNNYNNYNNNNNNNNNNNNNNYNNYNNYNNNY","NNNNNNNNYNNNYNYNNNNNYNNNNNNNNNNNNNNNNNNNNNNNYNNNNN","NYNNNNNNNNNNNNNYNNNYNNNYNNNNYNNNYNNNNYNYNNNNNNNNNN","NYNNNNYNNNNNNYNNNYNNYNNNNNYNNNNNNNNYNNNYNNNNNNNNNN","NNNNNNNNNNNNNNNYNNNNNNNNNYNNYNNNNNYNYNNNNNNNNNNNNN","NNNNNNNNYYNNNNNNNNNNYNNNNNNNNNYNNNNNNNYNNNNYYNNNNN"}; 163 p1.assign(t1, t1 + sizeof(t1) / sizeof(t1[0])); 164 p2 = 895; 165 all_right = KawigiEdit_RunTest(3, p0, p1, true, p2) && all_right; 166 // ------------------ 167 } 168 169 if (all_right) { 170 cout << "You're a stud (at least on the example cases)!" << endl; 171 } else { 172 cout << "Some of the test cases had errors." << endl; 173 } 174 return 0; 175 } 176 // END KAWIGIEDIT TESTING
View Code
500pt:
给N张卡片组成的数,每次取出最左的卡片摆在左边或者右边组成一个新的N位数,要求新数大于等于原数并要求最少。
简单的区间DP,DP直接比较字典序即可。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 #include<set> 7 #include<map> 8 #include<bitset> 9 #include<ctime> 10 #include<iostream> 11 #include<string> 12 #include<cctype> 13 #include<queue> 14 #include<stack> 15 #include<list> 16 17 using namespace std; 18 19 string f[60][60][3]; 20 21 int cmp(int a,int b) 22 { 23 if (a<b) return 0; 24 if (a==b) return 1; 25 return 2; 26 } 27 28 class LeftRightDigitsGame2 29 { 30 public: 31 string minNumber(string s1, string s2) 32 { 33 int l=s1.size(); 34 for (int a=0;a<l;a++) 35 for (int b=0;b<l;b++) 36 for (int c=0;c<3;c++) 37 f[a][b][c]="A"; 38 for (int a=0;a<l;a++) 39 f[0][a][cmp(s1[0],s2[a])]=s1[0]; 40 for (int a=0;a<l-1;a++) 41 for (int b=0;b<l-a;b++) 42 for (int c=0;c<3;c++) 43 if (f[a][b][c]!="A") 44 { 45 if (b!=0) 46 { 47 if (s1[a+1]<s2[b-1]) f[a+1][b-1][0]=min(f[a+1][b-1][0],s1[a+1]+f[a][b][c]); 48 if (s1[a+1]==s2[b-1]) f[a+1][b-1][c]=min(f[a+1][b-1][c],s1[a+1]+f[a][b][c]); 49 if (s1[a+1]>s2[b-1]) f[a+1][b-1][2]=min(f[a+1][b-1][2],s1[a+1]+f[a][b][c]); 50 } 51 if (b+a!=l-1) 52 { 53 if (s1[a+1]>s2[b+a+1]) f[a+1][b][(c==0) ? 0 : 2]=min(f[a+1][b][(c==0) ? 0 : 2],f[a][b][c]+s1[a+1]); 54 if (s1[a+1]==s2[b+a+1]) f[a+1][b][c]=min(f[a+1][b][c],f[a][b][c]+s1[a+1]); 55 if (s1[a+1]<s2[b+a+1]) f[a+1][b][(c==2) ? 2 : 0]=min(f[a+1][b][(c==2) ? 2 : 0],f[a][b][c]+s1[a+1]); 56 } 57 } 58 if (f[l-1][0][1]=="A" && f[l-1][0][2]=="A") return ""; 59 return min(f[l-1][0][1],f[l-1][0][2]); 60 } 61 }; 62 63 // BEGIN KAWIGIEDIT TESTING 64 // Generated by KawigiEdit 2.1.4 (beta) modified by pivanof 65 bool KawigiEdit_RunTest(int testNum, string p0, string p1, bool hasAnswer, string p2) { 66 cout << "Test " << testNum << ": [" << "\"" << p0 << "\"" << "," << "\"" << p1 << "\""; 67 cout << "]" << endl; 68 LeftRightDigitsGame2 *obj; 69 string answer; 70 obj = new LeftRightDigitsGame2(); 71 clock_t startTime = clock(); 72 answer = obj->minNumber(p0, p1); 73 clock_t endTime = clock(); 74 delete obj; 75 bool res; 76 res = true; 77 cout << "Time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " seconds" << endl; 78 if (hasAnswer) { 79 cout << "Desired answer:" << endl; 80 cout << "\t" << "\"" << p2 << "\"" << endl; 81 } 82 cout << "Your answer:" << endl; 83 cout << "\t" << "\"" << answer << "\"" << endl; 84 if (hasAnswer) { 85 res = answer == p2; 86 } 87 if (!res) { 88 cout << "DOESN'T MATCH!!!!" << endl; 89 } else if (double(endTime - startTime) / CLOCKS_PER_SEC >= 2) { 90 cout << "FAIL the timeout" << endl; 91 res = false; 92 } else if (hasAnswer) { 93 cout << "Match :-)" << endl; 94 } else { 95 cout << "OK, but is it right?" << endl; 96 } 97 cout << "" << endl; 98 return res; 99 } 100 int main() { 101 bool all_right; 102 all_right = true; 103 104 string p0; 105 string p1; 106 string p2; 107 108 { 109 // ----- test 0 ----- 110 p0 = "565"; 111 p1 = "556"; 112 p2 = "556"; 113 all_right = KawigiEdit_RunTest(0, p0, p1, true, p2) && all_right; 114 // ------------------ 115 } 116 117 { 118 // ----- test 1 ----- 119 p0 = "565"; 120 p1 = "566"; 121 p2 = "655"; 122 all_right = KawigiEdit_RunTest(1, p0, p1, true, p2) && all_right; 123 // ------------------ 124 } 125 126 { 127 // ----- test 2 ----- 128 p0 = "565"; 129 p1 = "656"; 130 p2 = ""; 131 all_right = KawigiEdit_RunTest(2, p0, p1, true, p2) && all_right; 132 // ------------------ 133 } 134 135 { 136 // ----- test 3 ----- 137 p0 = "9876543210"; 138 p1 = "5565565565"; 139 p2 = "5678943210"; 140 all_right = KawigiEdit_RunTest(3, p0, p1, true, p2) && all_right; 141 // ------------------ 142 } 143 144 { 145 // ----- test 4 ----- 146 p0 = "8016352"; 147 p1 = "1000000"; 148 p2 = "1086352"; 149 all_right = KawigiEdit_RunTest(4, p0, p1, true, p2) && all_right; 150 // ------------------ 151 } 152 153 if (all_right) { 154 cout << "You're a stud (at least on the example cases)!" << endl; 155 } else { 156 cout << "Some of the test cases had errors." << endl; 157 } 158 return 0; 159 } 160 // END KAWIGIEDIT TESTING
View Code
1000pt:
这题超好评。
给你一张图,有些边只能走2次,有些能走无数次,然后给出a1 a2 an b1 b2 bn六个数,你需要从a1走到a2再走回a1总共an次对b1 b2 bn也同理,问是否可行。
嘛,最基础的思路是直接把a1 b1当做起点然后a2 b2当做终点直接跑一遍网络流看是否可行,嘛,这样的话就能过掉所有样例了,然后就被坑了。
这样做的问题在哪里呢?原因是流的时候我有可能是从a1有部分流到了b2去,而b1流到了a2去,这样就导致了虽然满流但并不是符合题意的走法。
So how to solve it ?
嘛,其实解决的办法很简单,先做一遍网络流,不满流就GG了。如果满流的话,交换b1 b2,如果还满流,那就是对的了。
证明如下:
第一次未交换时,我们假设流出来的方案是又不合法的,那么我们设从a1流到b2的流量为x那么有:
a1到a2的流量=an-x
a1到b2的流量=x
b1到a2的流量=x
b1到b2的流量=bn-x
第二次我们交换b1,b2,那么由于都是无向边,那么首先b2从b1可以流bn-x的流量,a1到a2仍然可以流an-x的流量,也就是说两边都还差x的流量。由于第二次流出来是满流的,那么如果我们最后流出来的方案是a1给b1流了x的流量导致满流,那么我们有:
a1到b1和b2都可以流x的流量,那么再交换之后,从a1流到b1的流量我们可以调整为先从b2流到了a1,再从a1流到了b1总共x的流量(关键之处是在于无向图),那么另外一边也可以对称的调整,所以一旦满流,就一定存在可行解。
1 #include <vector> 2 #include <list> 3 #include <map> 4 #include <set> 5 #include <queue> 6 #include <deque> 7 #include <stack> 8 #include <bitset> 9 #include <algorithm> 10 #include <functional> 11 #include <numeric> 12 #include <utility> 13 #include <sstream> 14 #include <iostream> 15 #include <iomanip> 16 #include <cstdio> 17 #include <cmath> 18 #include <cstdlib> 19 #include <ctime> 20 #include <cstring> 21 22 using namespace std; 23 24 const int INF=0x3f3f3f3f; 25 26 int s,t,depth[110],q[110],en; 27 28 struct edge 29 { 30 int e,f; 31 edge *next,*op; 32 }*v[110],ed[21000]; 33 34 void add_edge(int s,int e,int f1,int f2) 35 { 36 en++; 37 ed[en].next=v[s];v[s]=ed+en;v[s]->e=e;v[s]->f=f1; 38 en++; 39 ed[en].next=v[e];v[e]=ed+en;v[e]->e=s;v[e]->f=f2; 40 v[s]->op=v[e];v[e]->op=v[s]; 41 } 42 43 bool bfs() 44 { 45 memset(depth,0,sizeof(depth)); 46 depth[s]=1; 47 q[1]=s; 48 int front=1,tail=1; 49 for (;front<=tail;) 50 { 51 int now=q[front++]; 52 for (edge *e=v[now];e;e=e->next) 53 if (e->f && !depth[e->e]) 54 { 55 depth[e->e]=depth[now]+1; 56 if (e->e==t) return true; 57 q[++tail]=e->e; 58 } 59 } 60 return false; 61 } 62 63 int dfs(int now,int cur_flow) 64 { 65 if (now==t) return cur_flow; 66 int rest=cur_flow; 67 for (edge *e=v[now];e && rest;e=e->next) 68 if (e->f && depth[e->e]==depth[now]+1) 69 { 70 int new_flow=dfs(e->e,min(rest,e->f)); 71 e->f-=new_flow; 72 e->op->f+=new_flow; 73 rest-=new_flow; 74 } 75 if (rest==cur_flow) depth[now]=-1; 76 return cur_flow-rest; 77 } 78 79 int dinic() 80 { 81 int ans=0; 82 while (bfs()) 83 ans+=dfs(s,INF); 84 return ans; 85 } 86 87 class OldBridges { 88 public: 89 string isPossible(vector <string> bridges, int a1, int a2, int an, int b1, int b2, int bn) { 90 int n=bridges.size(); 91 //a1++;a2++;b1++;b2++; 92 an<<=1;bn<<=1; 93 s=n;t=n+1; 94 en=0; 95 memset(v,0,sizeof(v)); 96 for (int a=0;a<n;a++) 97 for (int b=a+1;b<n;b++) 98 if (bridges[a][b]=='O') add_edge(a,b,2,2); 99 else 100 { 101 if (bridges[a][b]=='N') add_edge(a,b,INF,INF); 102 } 103 add_edge(s,a1,an,0); 104 add_edge(a2,t,an,0); 105 add_edge(s,b1,bn,0); 106 add_edge(b2,t,bn,0); 107 if (dinic()!=an+bn) return "No"; 108 swap(b1,b2); 109 en=0; 110 memset(v,0,sizeof(v)); 111 for (int a=0;a<n;a++) 112 for (int b=a+1;b<n;b++) 113 if (bridges[a][b]=='O') add_edge(a,b,2,2); 114 else 115 { 116 if (bridges[a][b]=='N') add_edge(a,b,INF,INF); 117 } 118 add_edge(s,a1,an,0); 119 add_edge(a2,t,an,0); 120 add_edge(s,b1,bn,0); 121 add_edge(b2,t,bn,0); 122 if (dinic()!=an+bn) return "No"; 123 return "Yes"; 124 } 125 }; 126 127 128 //<%:testing-code%> 129 //Powered by KawigiEdit 2.1.4 (beta) modified by pivanof! 130 131 // BEGIN KAWIGIEDIT TESTING 132 // Generated by KawigiEdit 2.1.4 (beta) modified by pivanof 133 bool KawigiEdit_RunTest(int testNum, vector <string> p0, int p1, int p2, int p3, int p4, int p5, int p6, bool hasAnswer, string p7) { 134 cout << "Test " << testNum << ": [" << "{"; 135 for (int i = 0; int(p0.size()) > i; ++i) { 136 if (i > 0) { 137 cout << ","; 138 } 139 cout << "\"" << p0[i] << "\""; 140 } 141 cout << "}" << "," << p1 << "," << p2 << "," << p3 << "," << p4 << "," << p5 << "," << p6; 142 cout << "]" << endl; 143 OldBridges *obj; 144 string answer; 145 obj = new OldBridges(); 146 clock_t startTime = clock(); 147 answer = obj->isPossible(p0, p1, p2, p3, p4, p5, p6); 148 clock_t endTime = clock(); 149 delete obj; 150 bool res; 151 res = true; 152 cout << "Time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " seconds" << endl; 153 if (hasAnswer) { 154 cout << "Desired answer:" << endl; 155 cout << "\t" << "\"" << p7 << "\"" << endl; 156 } 157 cout << "Your answer:" << endl; 158 cout << "\t" << "\"" << answer << "\"" << endl; 159 if (hasAnswer) { 160 res = answer == p7; 161 } 162 if (!res) { 163 cout << "DOESN'T MATCH!!!!" << endl; 164 } else if (double(endTime - startTime) / CLOCKS_PER_SEC >= 2) { 165 cout << "FAIL the timeout" << endl; 166 res = false; 167 } else if (hasAnswer) { 168 cout << "Match :-)" << endl; 169 } else { 170 cout << "OK, but is it right?" << endl; 171 } 172 cout << "" << endl; 173 return res; 174 } 175 int main() { 176 bool all_right; 177 all_right = true; 178 179 vector <string> p0; 180 int p1; 181 int p2; 182 int p3; 183 int p4; 184 int p5; 185 int p6; 186 string p7; 187 188 { 189 // ----- test 0 ----- 190 string t0[] = {"XOXX","OXOX","XOXO","XXOX"}; 191 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 192 p1 = 0; 193 p2 = 1; 194 p3 = 1; 195 p4 = 2; 196 p5 = 3; 197 p6 = 1; 198 p7 = "Yes"; 199 all_right = KawigiEdit_RunTest(0, p0, p1, p2, p3, p4, p5, p6, true, p7) && all_right; 200 // ------------------ 201 } 202 203 { 204 // ----- test 1 ----- 205 string t0[] = {"XOXX","OXOX","XOXO","XXOX"}; 206 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 207 p1 = 0; 208 p2 = 2; 209 p3 = 1; 210 p4 = 1; 211 p5 = 3; 212 p6 = 1; 213 p7 = "No"; 214 all_right = KawigiEdit_RunTest(1, p0, p1, p2, p3, p4, p5, p6, true, p7) && all_right; 215 // ------------------ 216 } 217 218 { 219 // ----- test 2 ----- 220 string t0[] = {"XOXO","OXOX","XOXO","OXOX"}; 221 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 222 p1 = 0; 223 p2 = 2; 224 p3 = 1; 225 p4 = 1; 226 p5 = 3; 227 p6 = 1; 228 p7 = "Yes"; 229 all_right = KawigiEdit_RunTest(2, p0, p1, p2, p3, p4, p5, p6, true, p7) && all_right; 230 // ------------------ 231 } 232 233 { 234 // ----- test 3 ----- 235 string t0[] = {"XNXO","NXOX","XOXO","OXOX"}; 236 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 237 p1 = 0; 238 p2 = 2; 239 p3 = 1; 240 p4 = 1; 241 p5 = 3; 242 p6 = 2; 243 p7 = "No"; 244 all_right = KawigiEdit_RunTest(3, p0, p1, p2, p3, p4, p5, p6, true, p7) && all_right; 245 // ------------------ 246 } 247 248 { 249 // ----- test 4 ----- 250 string t0[] = {"XOXOO","OXOXO","XOXOO","OXOXO","OOOOX"}; 251 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 252 p1 = 0; 253 p2 = 2; 254 p3 = 2; 255 p4 = 1; 256 p5 = 3; 257 p6 = 2; 258 p7 = "Yes"; 259 all_right = KawigiEdit_RunTest(4, p0, p1, p2, p3, p4, p5, p6, true, p7) && all_right; 260 // ------------------ 261 } 262 263 { 264 // ----- test 5 ----- 265 string t0[] = {"XOOOX","OXOOX","OOXOX","OOOXN","XXXNX"}; 266 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 267 p1 = 0; 268 p2 = 4; 269 p3 = 3; 270 p4 = 1; 271 p5 = 2; 272 p6 = 2; 273 p7 = "No"; 274 all_right = KawigiEdit_RunTest(5, p0, p1, p2, p3, p4, p5, p6, true, p7) && all_right; 275 // ------------------ 276 } 277 278 { 279 // ----- test 6 ----- 280 string t0[] = {"XOXOOX", "OXXXNO", "XXXOOX", "OXOXOO", "ONOOXO", "XOXOOX"}; 281 p0.assign(t0, t0 + sizeof(t0) / sizeof(t0[0])); 282 p1 = 0; 283 p2 = 1; 284 p3 = 3; 285 p4 = 5; 286 p5 = 3; 287 p6 = 3; 288 p7 = "No"; 289 all_right = KawigiEdit_RunTest(5, p0, p1, p2, p3, p4, p5, p6, true, p7) && all_right; 290 // ------------------ 291 } 292 293 if (all_right) { 294 cout << "You're a stud (at least on the example cases)!" << endl; 295 } else { 296 cout << "Some of the test cases had errors." << endl; 297 } 298 return 0; 299 } 300 // END KAWIGIEDIT TESTING
View Code
转载于:https://www.cnblogs.com/zhonghaoxi/p/3294465.html
TC SRM 556相关推荐
- TC SRM 655 Div1 Level 3 题解
TC SRM 655 Div1 Level 3 题解 题目传送门 dp+几何 首先可以发现凸包是顺时针排列的一些线段构成的.我们可以预处理每一个蓝点是否都在一个线段 r [ i ] → r [ j ] ...
- TC(SRM)和CF入门教程for ACMer[转载]
一.TC基本介绍TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM).SRM的规则总结起来就是一句话:75分钟做完3道难度 ...
- TC(SRM)和CF入门教程for ACMer
一.TC基本介绍 TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM). SRM的规则总结起来就是一句话:75分钟做完3道 ...
- TC SRM 573
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 又来水一发.... 结果:过了250,challe ...
- TC SRM 562 div2 B 题
题意: 给你一个矩形的画布,此画布由'B'和'.'组成,画T次每次画的时候他的左上角的起始点是确定的几位(1,1),(2,2),(3,3)......(T,T); 在画的过程中可能会出现相互覆盖求画完 ...
- TC SRM 593 DIV2 1000
很棒的DP,不过没想出,看题解了..思维很重要. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstrin ...
- [TC SRM 685 div1 lev1] MultiplicationTable2
转载: https://www.linkedin.com/pulse/topcoder-685-multiplicationtable2-yingwu-zhu Note: 生成封闭集合方式. Prob ...
- TC SRM 665 DIV2 B LuckyCycle 暴力
LuckyCycle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...
- TC SRM 553 DIV2
转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove 赤裸裸的又在送rate. 250 ...
最新文章
- linux c++ 目录操作,C++文件及文件夹操作整理(代码示例)
- 使用Helm 在容器服务k8s集群一键部署wordpress
- Bzoj 3680 吊打xxx【[模拟退火】
- 别琢磨了,七夕礼物都给你想好了
- Python for Data Analysis 学习心得(二) - pandas介绍
- Java十大简单性能优化
- matlab中get和set命令,关于matlab中get和set的用法
- 循环序列模型 —— 1.11 双向神经网络
- 机器人任务规划:从状态机到形式系统
- 入职地府后我成了人生赢家_拿年终奖前跳槽,你才是赢家
- 配置使用VCSA自带的备份恢复工具
- 热门开源 WYSIWYG 编辑器 TinyMCE 被指存在严重的 XSS 漏洞
- 图说报告|智能技术群的“核聚变”推动智能+时代到来
- 5G网络切片安全隔离机制与应用
- 吴恩达课程作业中的lr_utils下载
- web前端基础——超链接(dw笔记版)
- MySQL中幻读现象
- 辨别虚假高音质(320k/Ape/Flac)的音乐文件
- 游戏辅助制作核心--植物大战僵尸逆向之植物攻击加速(六)
- R语言 逻辑回归模型与混淆矩阵
热门文章
- 洛古——P1433 吃奶酪
- wkt坐标互转geojson坐标(后端java)(地图数据篇.6)
- 烧录器配置字参数说明
- 机电一体化技术_Electromechanical Integration
- PAT 1099 Build A Binary Search Tree
- BMS菊花链技术探讨
- 汉诺塔详解过程和递归思想及举例(python代码)
- 过去一年最惊人的30个机器学习项目
- CAN FD总线收发器 SIT1044 5V供电 IO口兼容3.3V 兼容TJA1044TGTK/3、TJA1044GT/3、TJA1044T
- top1,top5概念