【补题】组队训练第一场

本来想一次补完的(正常应该补两次的)但是晚上玩dota2和rpg去了然后……又堕落了啊。

好吧进入正题,题目按照从易到难的顺序(个人感觉)其他题目现在对我来说太难了,以后再补。

A题 ZOJ 3878 水题,可以用map一个一个对应,比较麻烦就用了两个字符数组,要注意\和“要转义。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<vector>
 7 #include<set>
 8 #include<string>
 9 #include<sstream>
10 #include<cctype>
11 #include<map>
12 #include<stack>
13 #include<queue>
14 using namespace std;
15 #define INF 0x3f3f3f3f
16 typedef long long ll;
17 int gcd(int a, int b){return b==0?a:gcd(b,a%b);}
18
19 char s1[] = "[email protected]#$%^&*()_+`1234567890-=qwertyuiop[]\\QWERTYUIOP{}|asdfghjkl;‘ASDFGHJKL:\"zxcvbnm,./ZXCVBNM<>?";
20 char s2[] = "[email protected]#$%^&*(){}`1234567890[]‘,.pyfgcrl/=\\\"<>PYFGCRL?+|aoeuidhtns-AOEUIDHTNS_;qjkxbmwvz:QJKXBMWVZ";
21
22 char fun(char c)
23 {
24     for(int i = 0; s1[i]; i++)
25         if(s1[i] == c)
26             return s2[i];
27     return c;
28 }
29
30 int main()
31 {
32 //    freopen("input.txt", "r", stdin);
33 //    freopen("output.txt", "w", stdout);
34     char c;
35     while(~scanf("%c", &c))
36         printf("%c", fun(c));
37     return 0;
38 }

G题 gym 101156L 也算水题吧,毕竟我这种渣渣也能在训练的时候一次AC,没啥技巧,就是模拟。

  1 #include<cstdio>
  2 #include<cstring>
  3 #include<iostream>
  4 #include<algorithm>
  5 #include<cmath>
  6 #include<vector>
  7 #include<set>
  8 #include<string>
  9 #include<sstream>
 10 #include<cctype>
 11 #include<map>
 12 #include<stack>
 13 #include<queue>
 14 using namespace std;
 15 #define INF 0x3f3f3f3f
 16 int gcd(int a, int b){return b==0?a:gcd(b,a%b);}
 17
 18 int s[25][25];
 19
 20 int main()
 21 {
 22     //freopen("input.txt", "r", stdin);
 23     //freopen("output.txt", "w", stdout);
 24     int T, n;
 25     char a[5];
 26     scanf("%d", &T);
 27     while(T--)
 28     {
 29         scanf("%d", &n);
 30         scanf("%s", a);
 31         for(int i = 1; i <= n; i++)
 32             for(int j = 1; j <= n; j++)
 33                 scanf("%d", &s[i][j]);
 34         if(a[0] == ‘r‘)
 35         {
 36             for(int i = 1; i <= n; i++)
 37             {
 38                 for(int j = n; j >= 1; j--)
 39                 {
 40                     for(int k = j - 1; k >= 1; k--)
 41                     {
 42                         if(s[i][j] == s[i][k])
 43                         {
 44                             s[i][j] *= 2;
 45                             s[i][k] = 0;
 46                             break;
 47                         }
 48                         else
 49                         {
 50                             if(s[i][k])    break;
 51                         }
 52                     }
 53                 }
 54                 for(int j = n; j >= 1; j--)
 55                 {
 56                     if(s[i][j])    continue;
 57                     else
 58                     {
 59                         for(int k = j - 1; k >= 1; k--)
 60                         {
 61                             if(s[i][k])
 62                             {
 63                                 s[i][j] = s[i][k];
 64                                 s[i][k] = 0;
 65                                 break;
 66                             }
 67                         }
 68                     }
 69                 }
 70             }
 71         }
 72         else if(a[0] == ‘l‘)
 73         {
 74             for(int i = 1; i <= n; i++)
 75             {
 76                 for(int j = 1; j <= n; j++)
 77                 {
 78                     for(int k = j + 1; k <= n; k++)
 79                     {
 80                         if(s[i][j] == s[i][k])
 81                         {
 82                             s[i][j] *= 2;
 83                             s[i][k] = 0;
 84                             break;
 85                         }
 86                         else
 87                         {
 88                             if(s[i][k])    break;
 89                         }
 90                     }
 91                 }
 92                 for(int j = 1; j <= n; j++)
 93                 {
 94                     if(s[i][j])    continue;
 95                     else
 96                     {
 97                         for(int k = j + 1; k <= n; k++)
 98                         {
 99                             if(s[i][k])
100                             {
101                                 s[i][j] = s[i][k];
102                                 s[i][k] = 0;
103                                 break;
104                             }
105                         }
106                     }
107                 }
108             }
109         }
110         else if(a[0] == ‘d‘)
111         {
112             for(int i = 1; i <= n; i++)
113             {
114                 for(int j = n; j >= 1; j--)
115                 {
116                     for(int k = j - 1; k >= 1; k--)
117                     {
118                         if(s[j][i] == s[k][i])
119                         {
120                             s[j][i] *= 2;
121                             s[k][i] = 0;
122                             break;
123                         }
124                         else
125                         {
126                             if(s[k][i])    break;
127                         }
128                     }
129                 }
130                 for(int j = n; j >= 1; j--)
131                 {
132                     if(s[j][i])    continue;
133                     else
134                     {
135                         for(int k = j - 1; k >= 1; k--)
136                         {
137                             if(s[k][i])
138                             {
139                                 s[j][i] = s[k][i];
140                                 s[k][i] = 0;
141                                 break;
142                             }
143                         }
144                     }
145                 }
146             }
147         }
148         else
149         {
150             for(int i = 1; i <= n; i++)
151             {
152                 for(int j = 1; j <= n; j++)
153                 {
154                     for(int k = j + 1; k <= n; k++)
155                     {
156                         if(s[j][i] == s[k][i])
157                         {
158                             s[j][i] *= 2;
159                             s[k][i] = 0;
160                             break;
161                         }
162                         else
163                         {
164                             if(s[k][i])    break;
165                         }
166                     }
167                 }
168                 for(int j = 1; j <= n; j++)
169                 {
170                     if(s[j][i])    continue;
171                     else
172                     {
173                         for(int k = j + 1; k <= n; k++)
174                         {
175                             if(s[k][i])
176                             {
177                                 s[j][i] = s[k][i];
178                                 s[k][i] = 0;
179                                 break;
180                             }
181                         }
182                     }
183                 }
184             }
185         }
186         for(int i = 1; i <= n; i++)
187         {
188             printf("%d", s[i][1]);
189             for(int j = 2; j <= n; j++)
190                 printf(" %d", s[i][j]);
191             printf("\n");
192         }
193     }
194     return 0;
195 }

还有一个I题,经典的海盗分金问题,训练的时候三个人讨论了半天,最后WA了n次还是没AC,要分情况讨论,确实是自己想得太少了。本来想补完的,然后打游戏去了,那就下次吧。

水平太差,题目补得有点少,还都是水题。

没事没事,慢慢来,明天继续加油!!!

时间: 2024-10-27 13:32:38

【补题】组队训练第一场的相关文章

2014多校联合训练第一场(组队训练)

这是我.potaty.lmz第二次训练,毕竟经验不足,加上水平不够,导致我们各种被碾压. A - Couple doubi: 这道题是道比较水的数论.但我们都没想出来要怎么做.后来是potaty提议打个表看看,然后lmz打出表后发现了规律.我还没细看,待研究后再补全. D - Task: 这道题一看就知道是个贪心(现在只要是有deadline的题我都觉得是贪心了).虽然想出来了,但还是不会严格证明为什么只要取满足task的且y最小(y相等时x最小)的machine就行了. 我的做法是把所有mac

【补题】组队训练第二场 &amp; 个人训练第一场

组队第二场: C题 CodeForces Gym 100735D 题意:给你N个木棍,问他们能拼成多少个三角形. 思路:从小到大排序,然后贪心地去取. 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #include<cmath> 6 #include<vector> 7 #include<set> 8

2015 ACM多校训练第一场

在下面网址看效果更佳>_< http://mlz000.github.io/2015/08/07/2015-ACM%E5%A4%9A%E6%A0%A1%E8%AE%AD%E7%BB%83%E7%AC%AC%E4%B8%80%E5%9C%BA/ 题外话 这个暑假以前就决定要把这次多校的所有题全补了,中间断断续续,总算把第一场的题补全了,鄙视一下颓废的自己... hdu 5288(1001) OO's Sequence Solution 水题,定义两个数组L[i],R[i]示第i个数左侧和右侧最接

【补题】多校联合训练第一场

1001  Add More Zero Problem Description There is a youngster known for amateur propositions concerning several mathematical hard problems.Nowadays, he is preparing a thought-provoking problem on a specific type of supercomputer which has ability to s

2015多校联合训练第一场Tricks Device(hdu5294)

题意:给一个无向图,给起点s,终点t,求最少拆掉几条边使得s到不了t,最多拆几条边使得s能到t 思路: 先跑一边最短路,记录最短路中最短的边数,总边数-最短边数就是第二个答案 第一个答案就是在最短路里面求最小割,也就是求最大流,然后根据最短路在建个新图,权为1,跑一边网络流 模板题,以后就用这套模板了 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #incl

2015多校联合训练第一场Assignment(hdu5289)三种解法

题目大意:给出一个数列,问其中存在多少连续子序列,子序列的最大值-最小值 #include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cmath> using namespace std; int maxsum[100000][30]; int minsum[100000][30]; int a[100000]; int n,k; v

2016summer 训练第一场

A.http://acm.hdu.edu.cn/showproblem.php?pid=5538 求表面积,只需要将所有的1*1的小块扫描一遍.将每一个块与他相邻四周进行比较,如果该快高度大,则将该快高度减去周围块高度然后累加.复杂度O(nm) #define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include<cmath> #include<algorithm> typedef long long LL; cons

HDU 4869 Turn the pokers 多校训练第一场1009

Turn the pokers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 282    Accepted Submission(s): 89 Problem Description During summer vacation,Alice stay at home for a long time, with nothing to

2015年多校联合训练第一场OO’s Sequence(hdu5288)

题意:给定一个长度为n的序列,规定f(l,r)是对于l,r范围内的某个数字a[i],都不能找到一个对应的j使得a[i]%a[j]=0,那么l,r内有多少个i,f(l,r)就是几.问所有f(l,r)的总和是多少. 公式中给出的区间,也就是所有存在的区间. 思路:直接枚举每一个数字,对于这个数字,如果这个数字是合法的i,那么向左能扩展的最大长度是多少,向右能扩展的最大长度是多少,那么i为合法的情况就是左长度*右长度(包含i且i是合法的区间总数). 统计左长度可以判断a[i]的约数是否在前面出现过-因