• codeforces


    题目:http://codeforces.com/contest/245/problem/A

    View Code
     1 int main()
     2 {
     3     int suma,sumb;
     4     int tsuma,tsumb;
     5     int cs;
     6     int t,x,y;
     7     int i,j;
     8     while(scanf("%d",&cs) != EOF)
     9     {
    10       suma = sumb = tsuma = tsumb = 0;
    11       for(i = 0; i < cs; i++)
    12       {
    13         scanf("%d%d%d",&t,&x,&y);
    14         if(t == 1)
    15         {
    16           tsuma += 10;
    17           suma += x;
    18         }
    19         else
    20         {
    21           tsumb += 10;
    22           sumb += x;
    23         }
    24       }
    25       //cout<<"sumb = "<<tsumb<<" "<<sumb<<endl;
    26       if(suma >= (tsuma / 2)) printf("LIVE\n");
    27       else printf("DEAD\n");
    28       if(sumb >= (tsumb / 2)) printf("LIVE\n");
    29       else printf("DEAD\n");
    30     }
    31     return 0;
    32 }

    题目:http://codeforces.com/contest/245/problem/B

    注意有 httprururur这种情况,其他的就是简单了

    View Code
     1 int main()
     2 {
     3     char str[100];
     4     char sbr[100];
     5     int len,i;
     6     while(scanf("%s",str) != EOF)
     7     {
     8       len = strlen(str);
     9       memset(sbr,0,sizeof(sbr));
    10       int flag = 0;
    11       int mark = 0;
    12       int k = 0;
    13       if(str[0] == 'f' && str[3] == 'r' && str[4] == 'u')
    14       {
    15         printf("ftp://ru");
    16         for(i = 5; i < len; i++)
    17         {
    18           if(str[i] == 'r' && str[i + 1] == 'u' && !mark)  {printf(".ru"); i += 2;
    19           if(str[i] != '\0') printf("/");i--; mark = 1;}
    20           else printf("%c",str[i]);
    21 
    22         }
    23         cout<<endl;
    24         continue;
    25       }
    26       if(str[0] == 'h' && str[4] == 'r' && str[5] == 'u')
    27       {
    28         printf("http://ru");
    29         for(i = 6; i < len; i++)
    30         {
    31           if(str[i] == 'r' && str[i + 1] == 'u' && !mark)  {printf(".ru"); i += 2;
    32           if(str[i] != '\0') printf("/"); i--;mark = 1;}
    33           else printf("%c",str[i]);
    34 
    35         }
    36         cout<<endl;
    37         continue;
    38       }
    39       if(str[0] == 'f')
    40       for(i = 0; i < len; i++)
    41       {
    42         sbr[k++] = str[i];
    43         if(i == 2){sbr[k ++] = ':'; sbr[k ++] = '/'; sbr[k ++] = '/';}
    44         if(str[i + 1] == 'r' && str[i + 2] == 'u' && !mark && sbr[k - 1] != '/') { sbr[k ++] = '.'; mark = 1;}
    45         if(str[i - 1] == 'r' && str[i] == 'u' && !flag && (i + 1) != len) {sbr[k ++] = '/';flag = 1;}
    46       }
    47       else
    48       {
    49         for(i = 0; i < len; i++)
    50       {
    51         sbr[k++] = str[i];
    52         if(i == 3){sbr[k ++] = ':'; sbr[k ++] = '/'; sbr[k ++] = '/';}
    53         if(str[i + 1] == 'r' && str[i + 2] == 'u' && !mark && sbr[k - 1] != '/') { sbr[k ++] = '.'; mark = 1;}
    54         if(str[i - 1] == 'r' && str[i] == 'u' && !flag && (i + 1) != len) {sbr[k ++] = '/';flag = 1;}
    55       }
    56       }
    57       sbr[k] = '\0';
    58       printf("%s\n",sbr);
    59     }
    60     return 0;
    61 }

    题目:http://codeforces.com/contest/245/problem/E

    一开始想的太简单了,以为正负抵消就可以算出最少见的人数,发现不对。卡了很长时间,想不明白怎么算,最后还是用的正负抵消,只不过在抵消的时候只去除一个,比如str[i] == '+',那么就去消去已有的 '-',而不是 '+' '-'同时消去,最后求出 剩余的 '+' '-'的和便是答案

    View Code
     1 int main()
     2 {
     3     char str[400];
     4     int i;
     5     stack<char>sta;
     6     stack<char>stb;
     7     while(scanf("%s",str) != EOF)
     8     {
     9         while(!sta.empty()) sta.pop();
    10         while(!stb.empty()) stb.pop();
    11         int len = strlen(str);
    12         for(i = 0; i < len; i++)
    13         {
    14             if(str[i] == '+')
    15             {
    16                 sta.push(str[i]);
    17                 if(!stb.empty()) stb.pop();
    18             }
    19             else if(str[i] == '-')
    20             {
    21                 stb.push(str[i]);
    22                 if(!sta.empty()) sta.pop();
    23             }
    24         }
    25         int ans = sta.size() + stb.size();
    26         printf("%d\n",ans);
    27     }
    28     return 0;
    29 }

    题目:http://codeforces.com/contest/245/problem/C

    读了好几遍才读懂了什么意思,给出 n 堆硬币,每堆有 ai个,两个人对 n 堆硬币进行操作,(一个人也是一样的),操作的时候先随机选一个 x (2 * x + 1 < n),然后分别从 编号为:x ,2 * x , 2 * x + 1 里各去一个硬币,这样直到最后没有硬币为止。对于 n 为 偶数时,一定不行,因为不存在这样的 x 使得 x * 2 + 1 = n,当 n 为奇数时,从后往前考虑,对于 a[i],如果 i 是奇数,那么它影响的到的是:a[i - 1] 和 a[i / 2],如果 i 为 偶数,那么它只影响到 a[i / 2],所以枚举求出

    View Code
     1 const int N = 110;
     2 int a[N];
     3 int main()
     4 {
     5     int i,j;
     6     int n;
     7     while(~scanf("%d",&n))
     8     {
     9         _clr(a,0);
    10         for(i = 1; i <= n; i++)
    11         scanf("%d",&a[i]);
    12         int ans = 0;
    13         if(n < 3 || n % 2 == 0) printf("-1\n");
    14         else
    15         {
    16             for(i = n; i >= 1; i--)
    17             {
    18                 if(a[i] > 0) ans += a[i];
    19                 if(a[i] < 0) continue;
    20                 if(i % 2)
    21                 {
    22                     a[i - 1] -= a[i];
    23                     a[i / 2] -= a[i];
    24                 }
    25                 else a[i / 2] -= a[i];
    26             }
    27             printf("%d\n",ans);
    28         }
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    微信小程序右上角胶囊的位置
    NLP复习大纲
    网站收藏
    css中如何调整插入背景图片的大小
    禁止Power Apps Canvas用户通过SharePoint Online UI界面访问站点list
    c++ vector基本知识
    c++ map基本知识
    c++ string操作
    python学习笔记30:操作excel
    c++, 如何run一个c++程序
  • 原文地址:https://www.cnblogs.com/fxh19911107/p/2782694.html
Copyright © 2020-2023  润新知