都是水题,特别水的内种,题目意思、思路神马滴就不说了……
Break Standard Weight
题目链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=4998
范围只有100,并且只有3个数字,直接枚举,代码好挫……o(╯□╰)o
只有一个需要注意的地方,就是绝对值为0的时候要考虑到!因为如果绝对值为0,那么根本就称不出什么重量来。。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cctype> 6 #include <stack> 7 #include <queue> 8 #include <map> 9 #include <set> 10 #include <vector> 11 #include <cmath> 12 #include <algorithm> 13 #define lson l, m, rt<<1 14 #define rson m+1, r, rt<<1|1 15 using namespace std; 16 typedef long long int LL; 17 const int MAXN = 0x7fffffff; 18 const int MINN = -0x7fffffff; 19 const double eps = 1e-9; 20 const int dir[8][2] = {{0,1},{1,0},{0,-1},{-1,0},{-1,1}, 21 {1,1},{1,-1},{-1,-1}}; 22 map<int, bool>mymap; 23 int main(void){ 24 #ifndef ONLINE_JUDGE 25 freopen("zoj4998.in", "r", stdin); 26 #endif 27 int t, x, y, max, sum, i, j, k, a, b, c; 28 scanf("%d", &t); 29 while (t--) { 30 scanf("%d%d", &x, &y); 31 max = 0; 32 for (i = 1; i < x/2; ++i) { 33 a = i; b = x - i; c= y; 34 sum = 0; 35 mymap.clear(); 36 mymap[a] = true; sum++; 37 if (!mymap[b]) {mymap[b] = true;sum++;} 38 if (!mymap[c]) {mymap[c] = true;sum++;} 39 40 if (!mymap[abs(a+b)]) {mymap[abs(a+b)] = true;sum++;} 41 if (!mymap[abs(a+b-c)] && a+b-c!=0) {mymap[abs(a+b-c)] = true;sum++;} 42 if (!mymap[abs(a+b+c)]) {mymap[abs(a+b+c)] = true;sum++;} 43 44 if (!mymap[abs(a-b)] && a-b!=0) {mymap[abs(a-b)] = true;sum++;} 45 if (!mymap[abs(a-b+c)] &&a-b+c!=0) {mymap[abs(a-b+c)] = true;sum++;} 46 if (!mymap[abs(a-b-c)]&&a-b-c!=0) {mymap[abs(a-b-c)] = true;sum++;} 47 48 if (!mymap[abs(c+b)]) {mymap[abs(c+b)] = true;sum++;} 49 if (!mymap[abs(c+b-a)]&&c+b-a!=0) {mymap[abs(c+b-a)] = true;sum++;} 50 51 if (!mymap[abs(c-b)] &&c!=b) {mymap[abs(c-b)] = true;sum++;} 52 if (!mymap[abs(c-b+a)]&&c-b+a!=0) {mymap[abs(c-b+a)] = true;sum++;} 53 if (!mymap[abs(c-b-a)]&&c-b-a!=0) {mymap[abs(c-b-a)] = true;sum++;} 54 55 if (!mymap[abs(a+c)]) {mymap[abs(a+c)] = true;sum++;} 56 if (!mymap[abs(a+c-b)]&&a+c-b!=0) {mymap[abs(a+c-b)] = true;sum++;} 57 58 if (!mymap[abs(a-c)]&&a-c!=0) {mymap[abs(a-c)] = true;sum++;} 59 if (sum > max) max = sum; 60 } 61 for (i = 1; i < y; ++i) { 62 a = i; b = y - i; c= x; 63 sum = 0; 64 mymap.clear(); 65 mymap[a] = true; sum++; 66 if (!mymap[b]) {mymap[b] = true;sum++;} 67 if (!mymap[c]) {mymap[c] = true;sum++;} 68 69 if (!mymap[abs(a+b)]) {mymap[abs(a+b)] = true;sum++;} 70 if (!mymap[abs(a+b-c)] && a+b-c!=0) {mymap[abs(a+b-c)] = true;sum++;} 71 if (!mymap[abs(a+b+c)]) {mymap[abs(a+b+c)] = true;sum++;} 72 73 if (!mymap[abs(a-b)] && a-b!=0) {mymap[abs(a-b)] = true;sum++;} 74 if (!mymap[abs(a-b+c)] &&a-b+c!=0) {mymap[abs(a-b+c)] = true;sum++;} 75 if (!mymap[abs(a-b-c)]&&a-b-c!=0) {mymap[abs(a-b-c)] = true;sum++;} 76 77 if (!mymap[abs(c+b)]) {mymap[abs(c+b)] = true;sum++;} 78 if (!mymap[abs(c+b-a)]&&c+b-a!=0) {mymap[abs(c+b-a)] = true;sum++;} 79 80 if (!mymap[abs(c-b)] &&c!=b) {mymap[abs(c-b)] = true;sum++;} 81 if (!mymap[abs(c-b+a)]&&c-b+a!=0) {mymap[abs(c-b+a)] = true;sum++;} 82 if (!mymap[abs(c-b-a)]&&c-b-a!=0) {mymap[abs(c-b-a)] = true;sum++;} 83 84 if (!mymap[abs(a+c)]) {mymap[abs(a+c)] = true;sum++;} 85 if (!mymap[abs(a+c-b)]&&a+c-b!=0) {mymap[abs(a+c-b)] = true;sum++;} 86 87 if (!mymap[abs(a-c)]&&a-c!=0) {mymap[abs(a-c)] = true;sum++;} 88 if (sum > max) max = sum; 89 } 90 printf("%d\n", max); 91 } 92 93 return 0; 94 }
就是有个困惑,写这样的代码,如果没有vim,日子该怎么过……
还是把上面的代码修改一下吧,用mymap.size(),依然还是得去掉0的情况。看来自己STL还是需要好好学习啊!不然搞的那么繁琐。。o(╯□╰)o
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cctype> 6 #include <stack> 7 #include <queue> 8 #include <map> 9 #include <set> 10 #include <vector> 11 #include <cmath> 12 #include <algorithm> 13 #define lson l, m, rt<<1 14 #define rson m+1, r, rt<<1|1 15 using namespace std; 16 typedef long long int LL; 17 const int MAXN = 0x7fffffff; 18 const int MINN = -0x7fffffff; 19 const double eps = 1e-9; 20 const int dir[8][2] = {{0,1},{1,0},{0,-1},{-1,0},{-1,1}, 21 {1,1},{1,-1},{-1,-1}}; 22 map<int, bool>mymap; 23 int main(void){ 24 #ifndef ONLINE_JUDGE 25 freopen("zoj4998.in", "r", stdin); 26 #endif 27 int t, x, y, max, sum, i, j, k, a, b, c; 28 scanf("%d", &t); 29 while (t--) { 30 scanf("%d%d", &x, &y); 31 max = 0; 32 for (i = 1; i < x/2; ++i) { 33 a = i; b = x - i; c= y; 34 mymap.clear(); 35 mymap[a] = mymap[b] = mymap[c] = true; 36 mymap[abs(a+b)] = mymap[abs(a+b-c)] = mymap[abs(a+b+c)] = true; 37 mymap[abs(a-b)] = mymap[abs(a-b+c)] = mymap[abs(a-b-c)] = true; 38 mymap[abs(c+b)] = mymap[abs(c+b-a)] = true; 39 mymap[abs(c-b)] = mymap[abs(c-b+a)] = mymap[abs(c-b-a)] = true; 40 mymap[abs(c+a)] = true; 41 mymap[abs(c-a)] = true; 42 sum = mymap.size(); 43 if (mymap[0]) sum--; 44 if (max < sum) max = sum; 45 } 46 for (i = 1; i < y; ++i) { 47 a = i; b = y - i; c= x; 48 mymap.clear(); 49 mymap[a] = mymap[b] = mymap[c] = true; 50 mymap[abs(a+b)] = mymap[abs(a+b-c)] = mymap[abs(a+b+c)] = true; 51 mymap[abs(a-b)] = mymap[abs(a-b+c)] = mymap[abs(a-b-c)] = true; 52 mymap[abs(c+b)] = mymap[abs(c+b-a)] = true; 53 mymap[abs(c-b)] = mymap[abs(c-b+a)] = mymap[abs(c-b-a)] = true; 54 mymap[abs(c+a)] = true; 55 mymap[abs(c-a)] = true; 56 sum = mymap.size(); 57 if (mymap[0]) sum--; 58 if (max < sum) max = sum; 59 } 60 printf("%d\n", max); 61 } 62 63 return 0; 64 }
谢谢speedcell~
Hard to Play
题目链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5004
水题,也木有什么可以总结的。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cctype> 6 #include <stack> 7 #include <queue> 8 #include <map> 9 #include <set> 10 #include <vector> 11 #include <cmath> 12 #include <algorithm> 13 #define lson l, m, rt<<1 14 #define rson m+1, r, rt<<1|1 15 using namespace std; 16 typedef long long int LL; 17 const int MAXN = 0x7fffffff; 18 const int MINN = -0x7fffffff; 19 const double eps = 1e-9; 20 const int dir[8][2] = {{0,1},{1,0},{0,-1},{-1,0},{-1,1}, 21 {1,1},{1,-1},{-1,-1}}; 22 23 int main(void){ 24 #ifndef ONLINE_JUDGE 25 freopen("zoj5004.in", "r", stdin); 26 #endif 27 int t, i, sum, Max, Min, a, b, c, j, cnt; 28 scanf("%d", &t); 29 while (t--) { 30 scanf("%d%d%d", &a, &b, &c); 31 Max = Min = 0; cnt = 0; sum = 0; 32 for (i = 0; i < a; ++i) {sum += (300*(cnt*2+1));cnt++;} 33 for (i = 0; i < b; ++i) {sum += (100*(cnt*2+1));cnt++;} 34 for (i = 0; i < c; ++i) {sum += (50*(cnt*2+1));cnt++;} 35 Min = sum; sum = 0; cnt = 0; 36 for (i = 0; i < c; ++i) {sum += (50*(cnt*2+1)); cnt++;} 37 for (i = 0; i < b; ++i) {sum += (100*(cnt*2+1)); cnt++;} 38 for (i = 0; i < a; ++i) {sum += (300*(cnt*2+1)); cnt++;} 39 Max = sum; 40 printf("%d %d\n", Min, Max); 41 } 42 43 return 0; 44 }
就是枚举一下,o(╯□╰)o
Java Beans
题目链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5006
注意到范围只有200,就是暴力……o(╯□╰)o
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cctype> 6 #include <stack> 7 #include <queue> 8 #include <map> 9 #include <set> 10 #include <vector> 11 #include <cmath> 12 #include <algorithm> 13 #define lson l, m, rt<<1 14 #define rson m+1, r, rt<<1|1 15 using namespace std; 16 typedef long long int LL; 17 const int MAXN = 0x7fffffff; 18 const int MINN = -0x7fffffff; 19 const double eps = 1e-9; 20 const int dir[8][2] = {{0,1},{1,0},{0,-1},{-1,0},{-1,1}, 21 {1,1},{1,-1},{-1,-1}}; 22 int a[220]; 23 int main(void){ 24 #ifndef ONLINE_JUDGE 25 freopen("zoj5006.in", "r", stdin); 26 #endif 27 int t; scanf("%d", &t); 28 int n, m, i, j, k, sum, max; 29 while (t--) { 30 scanf("%d%d", &n, &m); max = -1; 31 for (i = 0; i < n; ++i) scanf("%d", a + i); 32 for (i = 0; i < n; ++i) { 33 sum = 0; 34 for (j = i; j < i + m; ++j) { 35 sum += a[j%n]; 36 } 37 if (max < sum) max = sum; 38 } 39 printf("%d\n", max); 40 } 41 42 return 0; 43 }
好吧……这比赛就过了这三道水题,赶脚没什么收获,因为本来就没有用心做,态度都不端正,就想着试着做做就行了,结果什么收获都没有,以后,不管什么比赛,都要认真对待,否则就不要做!做水题真的木有意思,虽然这三道都是1A的,可是,那又有什么意义呢?不会的题目还是不会,会的题目还是会的,还不是原地踏步么?
为了让这次比赛有点儿意义,这次要把剩下的题目切掉!