2018-2019 ICPC, NEERC, Northern Eurasia Finals (Unrated, Online Mirror, ICPC Rules, Teams Preferred) Solution
阿新 • • 發佈:2018-12-05
A. Alice the Fan
Solved.
題意:
兩個人打網球,要求teamA 的得分與其他隊伍拉開儘量大
輸出合法的方案
思路:
$dp[i][j][k][l] 表示 A 贏i局,其他隊伍贏j局,兩個人比分為k : l 的時候的方案$
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 int dp[5][5][210][210]; 6 vector<pair<int, int> >out[5][5][210][210]; 7View Code8 void Init() 9 { 10 dp[0][0][0][0] = 1; 11 for(int sum = 0; sum <= 4; ++sum) 12 { 13 for(int l = 0; l <= sum; ++l) 14 { 15 for(int i = 0; i <= 200; ++i) 16 { 17 for(int j = 0; j <= 200; ++j) 18 { 19 intr = sum - l; 20 if(!dp[l][r][i][j]) continue; 21 if(max(l, r) >= 3) continue; 22 int limit = 25; 23 if(sum == 4) limit = 15; 24 for(int tmp = limit; tmp <= 200; ++tmp) 25 {26 if(i + tmp <= 200 && j + tmp - 2 <= 200 && !dp[l + 1][r][i + tmp][j + tmp - 2]) 27 { 28 dp[l + 1][r][i + tmp][j + tmp - 2] = 1; 29 out[l + 1][r][i + tmp][j + tmp - 2] = out[l][r][i][j]; 30 out[l + 1][r][i + tmp][j + tmp - 2].push_back(make_pair(tmp, tmp - 2)); 31 } 32 if(i + tmp - 2 <= 200 && j + tmp <= 200 && !dp[l][r + 1][i + tmp - 2][j + tmp]) 33 { 34 dp[l][r + 1][i + tmp - 2][j + tmp] = 1; 35 out[l][r + 1][i + tmp - 2][j + tmp] = out[l][r][i][j]; 36 out[l][r + 1][i + tmp - 2][j + tmp].push_back(make_pair(tmp - 2, tmp)); 37 } 38 } 39 40 for(int tmp = 0; tmp <= limit - 2; ++tmp) 41 { 42 if(i + limit <= 200 && j + tmp <= 200 && !dp[l + 1][r][i + limit][j + tmp]) 43 { 44 dp[l + 1][r][i + limit][j + tmp] = 1; 45 out[l + 1][r][i + limit][j + tmp] = out[l][r][i][j]; 46 out[l + 1][r][i + limit][j + tmp].push_back(make_pair(limit, tmp)); 47 } 48 if(i + tmp <= 200 && j + limit <= 200 && !dp[l][r + 1][i + tmp][j + limit]) 49 { 50 dp[l][r + 1][i + tmp][j + limit] = 1; 51 out[l][r + 1][i + tmp][j + limit] = out[l][r][i][j]; 52 out[l][r + 1][i + tmp][j + limit].push_back(make_pair(tmp, limit)); 53 } 54 } 55 } 56 } 57 } 58 } 59 } 60 61 int a, b; 62 63 int main() 64 { 65 Init(); 66 int t; 67 scanf("%d", &t); 68 while(t--) 69 { 70 scanf("%d %d", &a, &b); 71 int l = -1, r = -1; 72 if(dp[3][0][a][b]) 73 { 74 l = 3; 75 r = 0; 76 } 77 else if(dp[3][1][a][b]) 78 { 79 l = 3; 80 r = 1; 81 } 82 else if(dp[3][2][a][b]) 83 { 84 l = 3; 85 r = 2; 86 } 87 else if(dp[2][3][a][b]) 88 { 89 l = 2; 90 r = 3; 91 } 92 else if(dp[1][3][a][b]) 93 { 94 l = 1; 95 r = 3; 96 } 97 else if(dp[0][3][a][b]) 98 { 99 l = 0; 100 r = 3; 101 } 102 if(l == -1 && r == -1) 103 { 104 puts("Impossible"); 105 } 106 else 107 { 108 printf("%d:%d\n", l, r); 109 int len = out[l][r][a][b].size(); 110 for(int i = 0; i < len; ++i) printf("%d:%d%c", out[l][r][a][b][i].first, out[l][r][a][b][i].second, " \n"[i == len - 1]); 111 } 112 } 113 return 0; 114 }
B:Bimatching
Unsolved.
題意:
$有n個男生和m個女生,一個男生要找兩個女生組成一個三元祖進行跳舞$
$當且僅當那個男生同時喜歡另兩個女生的時候,他們可以組成三元祖跳舞$
$求最多的三元祖個數$
C:Cactus Search
Unsolved.
D:Distance Sum
Unsolved.
題意:
給出一張無向圖,求$\sum_{1 <= i <= n} ^{n} \sum_{1 <= j <= i} d(i, j) \qquad$
E:Easy Chess
Solved.
題意:
從左下角出發到右上角,每個點只能停留一次,且必須停留n次
給出方案
思路:
暴力構造
最後一輪的時候注意繞一個圈
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 int n; 6 7 int main() 8 { 9 while(~scanf("%d", &n)) 10 { 11 if(n == 2) 12 cout << "a1 h1 h8" << endl; 13 else if(n == 3) 14 cout << "a1 a2 h2 h8" << endl; 15 else if(n == 4) 16 cout << "a1 a2 a3 h3 h8" << endl; 17 else if(n == 5) 18 cout << "a1 a2 a3 a4 h4 h8" << endl; 19 else if(n == 6) 20 cout << "a1 a2 a3 a4 a5 h5 h8" << endl; 21 else if(n == 7) 22 cout << "a1 a2 a3 a4 a5 a6 h6 h8" << endl; 23 else if(n == 8) 24 cout << "a1 a2 a3 a4 a5 a6 a7 h7 h8" << endl; 25 else if(n == 9) 26 cout << "a1 a2 a3 a4 a5 a6 a7 a8 g8 h8" << endl; 27 else if(n == 10) 28 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 g8 h8" << endl; 29 else if(n == 11) 30 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 h7 h8" << endl; 31 else if(n == 12) 32 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 h6 h8" << endl; 33 else if(n == 13) 34 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 h5 h8" << endl; 35 else if(n == 14) 36 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 h4 h8" << endl; 37 else if(n == 15) 38 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 h3 h8" << endl; 39 else if(n == 16) 40 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 h2 h8" << endl; 41 else if(n == 17) 42 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 h1 h8" << endl; 43 else if(n == 18) 44 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 h1 h8" << endl; 45 else if(n == 19) 46 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 h2 h8" << endl; 47 else if(n == 20) 48 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 h3 h8" << endl; 49 else if(n == 21) 50 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 h4 h8" << endl; 51 else if(n == 22) 52 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 h5 h8" << endl; 53 else if(n == 23) 54 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 h6 h8" << endl; 55 else if(n == 24) 56 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 h7 h8" << endl; 57 else if(n == 25) 58 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 g8 h8" << endl; 59 else if(n == 26) 60 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 g8 h8" << endl; 61 else if(n == 27) 62 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 h7 h8" << endl; 63 else if(n == 28) 64 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 h6 h8" << endl; 65 else if(n == 29) 66 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 h5 h8" << endl; 67 else if(n == 30) 68 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 h4 h8" << endl; 69 else if(n == 31) 70 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 h3 h8" << endl; 71 else if(n == 32) 72 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 h2 h8" << endl; 73 else if(n == 33) 74 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 h1 h8" << endl; 75 else if(n == 34) 76 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 h1 h8" << endl; 77 else if(n == 35) 78 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 h2 h8" << endl; 79 else if(n == 36) 80 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 h3 h8" << endl; 81 else if(n == 37) 82 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 h4 h8" << endl; 83 else if(n == 38) 84 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 h5 h8" << endl; 85 else if(n == 39) 86 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 h6 h8" << endl; 87 else if(n == 40) 88 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 h7 h8" << endl; 89 else if(n == 41) 90 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 g8 h8" << endl; 91 else if(n == 42) 92 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 g8 h8" << endl; 93 else if(n == 43) 94 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 h7 h8" << endl; 95 else if(n == 44) 96 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 h6 h8" << endl; 97 else if(n == 45) 98 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 h5 h8" << endl; 99 else if(n == 46) 100 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 h4 h8" << endl; 101 else if(n == 47) 102 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 h3 h8" << endl; 103 else if(n == 48) 104 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 h2 h8" << endl; 105 else if(n == 49) 106 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h8" << endl; 107 else if(n == 50) 108 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h8" << endl; 109 else if(n == 51) 110 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h8" << endl; 111 else if(n == 52) 112 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h8" << endl; 113 else if(n == 53) 114 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h8" << endl; 115 else if(n == 54) 116 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h8" << endl; 117 else if(n == 55) 118 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h7 h8" << endl; 119 else if(n == 56) 120 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 g5 g6 g8 h8" << endl; 121 else if(n == 57) 122 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 g5 g6 g7 g8 h8" << endl; 123 else if(n == 58) 124 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h7 g7 g1 g8 h8" << endl; 125 else if(n == 59) 126 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h7 g7 g1 g2 g8 h8" << endl; 127 else if(n == 60) 128 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h7 g7 g1 g2 g3 g8 h8" << endl; 129 else if(n == 61) 130 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h7 g7 g1 g2 g3 g4 g8 h8" << endl; 131 else if(n == 62) 132 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h7 g7 g1 g2 g3 g4 g5 g8 h8" << endl; 133 else if(n == 63) 134 cout << "a1 a2 a3 a4 a5 a6 a7 a8 b8 b7 b6 b5 b4 b3 b2 b1 c1 c2 c3 c4 c5 c6 c7 c8 d8 d7 d6 d5 d4 d3 d2 d1 e1 e2 e3 e4 e5 e6 e7 e8 f8 f7 f6 f5 f4 f3 f2 f1 h1 h2 h3 h4 h5 h6 h7 g7 g1 g2 g3 g4 g5 g6 g8 h8" << endl; 135 } 136 return 0; 137 }View Code
F. Fractions
Solved.
題意:
$\lbrace$