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.

题意:

扫描二维码关注公众号,回复: 4384007 查看本文章

$有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$

猜你喜欢

转载自www.cnblogs.com/Dup4/p/10073225.html
今日推荐