zoukankan      html  css  js  c++  java
  • 2013年5月11日 zoj比赛三道水题:zoj4998 Break Standard Weight && zoj5004 Hard to Play && zoj5006 Java Beans

    都是水题,特别水的内种,题目意思、思路神马滴就不说了……

    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的,可是,那又有什么意义呢?不会的题目还是不会,会的题目还是会的,还不是原地踏步么?

      为了让这次比赛有点儿意义,这次要把剩下的题目切掉!

  • 相关阅读:
    如何获取url访问历史记录
    js跨域总结
    setAttribute的兼容性
    js中原生对象、内置对象和宿主对象(转)
    一道变态的js题
    如何判断js是否加载完全
    深入理解viewport(转)
    webapp之路--理解viewport的使用
    zepto学习之路--源代码提取
    js正则之零宽断言
  • 原文地址:https://www.cnblogs.com/liuxueyang/p/3072991.html
Copyright © 2011-2022 走看看