1. 程式人生 > >2018-2019 ICPC, NEERC, Northern Eurasia Finals (Unrated, Online Mirror, ICPC Rules, Teams Preferred) Solution

2018-2019 ICPC, NEERC, Northern Eurasia Finals (Unrated, Online Mirror, ICPC Rules, Teams Preferred) Solution

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];
  7
8 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 int
r = 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 }
View Code

 

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$