• Codeforces Round #368 (Div. 2)


    A. Brain's Photos

     

    题意: 给你一个n*m的字符矩阵,如果字符中出现'C', 'M', 'Y'这三个中的任何一个就输出"#Color";否则输出"#Black&White".

     

     

     

    代码如下:

     

     

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <fstream>
     5 #include <ctime>
     6 #include <cmath>
     7 #include <cstdlib>
     8 #include <algorithm>
     9 #include <set>
    10 #include <map>
    11 #include <list>
    12 #include <stack>
    13 #include <queue>
    14 #include <iterator>
    15 #include <vector>
    16 
    17 using namespace std;
    18 
    19 #define LL long long
    20 #define INF 0x3f3f3f3f
    21 #define MOD 1000000007
    22 #define MAXN 10000010
    23 #define MAXM 1000010
    24 #define inf 0x7fffffffffffffff
    25 #define maxf 0x7fffffff
    26 
    27 const int maxn = 105;
    28 char s[maxn][maxn];
    29 
    30 int main()
    31 {
    32     int n, m;
    33     while(scanf("%d%d", &n, &m)==2)
    34     {
    35         getchar();
    36         int flag = 0;
    37         for(int i = 0; i < n; i++ )
    38             gets(s[i]);
    39         for(int i = 0; i < n; i++ )
    40             for(int j = 0; s[i][j]!=''; j++)
    41                 if(s[i][j]=='C'||s[i][j]=='M'||s[i][j]=='Y')
    42                     flag = 1;
    43         if(flag==0)
    44             printf("#Black&White
    ");
    45         else
    46             printf("#Color
    ");
    47     }
    48     return 0;
    49 }

     

    B. Bakery

     

    题意: 给你三个数n,m,k分别代表城市数、道路数、面粉店数,剩下的n-k为面包店数;m条道路中每条道路都包含三个数u,v,l表示城市u到城市v的距离(每个城市中要么有面粉店要有面包店);求某个面粉店到某个面包店的最短距离.

     

    分析:标记面粉店,再遍历m条道路,如果城市u和城市v中不都是面粉店或面包店则将它们之间的最短距离保存.

     

     

    代码如下:

     

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <fstream>
     5 #include <ctime>
     6 #include <cmath>
     7 #include <cstdlib>
     8 #include <algorithm>
     9 #include <set>
    10 #include <map>
    11 #include <list>
    12 #include <stack>
    13 #include <queue>
    14 #include <iterator>
    15 #include <vector>
    16 
    17 using namespace std;
    18 
    19 #define LL long long
    20 #define INF 0x3f3f3f3f
    21 #define MOD 1000000007
    22 #define MAXN 10000010
    23 #define MAXM 1000010
    24 #define inf 0x7fffffffffffffff
    25 #define maxf 0x7fffffff
    26 
    27 const int maxn = 100005;
    28 int vis[maxn];
    29 
    30 struct Node{
    31     int u;
    32     int v;
    33     int l;
    34 //    bool operator < (const Node &x) const{
    35 //        return l < x.l;
    36 //    }
    37 }node[maxn];
    38 
    39 
    40 int check(int x, int y)
    41 {
    42     if(vis[x] != vis[y])
    43         return 1;
    44     return 0;
    45 }
    46 
    47 int main()
    48 {
    49     int n, m, k;
    50     while(scanf("%d%d%d", &n, &m, &k)==3)
    51     {
    52         memset(vis, 0, sizeof(vis));
    53         for(int i = 0; i < m; i++ )
    54             scanf("%d%d%d", &node[i].u, &node[i].v, &node[i].l);
    55         for(int i = 0; i < k; i++ )
    56         {
    57             int x;
    58             scanf("%d", &x);
    59             vis[x] = 1;
    60         }
    61         int ans = INF;
    62         for(int i = 0; i < m; i++ )
    63         {
    64             if(check(node[i].u,node[i].v))
    65                 ans = min(ans, node[i].l);
    66         }
    67         if(ans == INF)
    68             printf("-1
    ");
    69         else
    70             printf("%d
    ", ans);
    71     }
    72 
    73     return 0;
    74 }

     

     

    C. Pythagorean Triples

     

    题意: 给你一条直角边,输出另外一条直角边和斜边,组成一个直角三角形.

     

    分析:由勾股定理可知: a2 + b2 = c2则a2 = c2 - b2 = (c-b)(c+b);如果最短直角边小于或等于2时,不存在这样的直角三角形;否则:当a%2为1即a为奇数时,令c-b =1,c+b=a2则c = (a2+1)/2, b = (a2+1)/2-1;当a为偶数时,令c-b = 2,c+b=a2/2则c = a2/4+1, b = a2/4-1.

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <fstream>
     5 #include <ctime>
     6 #include <cmath>
     7 #include <cstdlib>
     8 #include <algorithm>
     9 #include <set>
    10 #include <map>
    11 #include <list>
    12 #include <stack>
    13 #include <queue>
    14 #include <iterator>
    15 #include <vector>
    16 
    17 using namespace std;
    18 
    19 #define LL long long
    20 #define INF 0x3f3f3f3f
    21 #define MOD 1000000007
    22 #define MAXN 10000010
    23 #define MAXM 1000010
    24 #define inf 0x7fffffffffffffff
    25 #define maxf 0x7fffffff
    26 
    27 int main()
    28 {
    29     LL a;
    30     while(scanf("%I64d", &a)==1)
    31     {
    32         LL b, c;
    33         if(a <= 2)
    34             printf("-1
    ");
    35         else if(a%2==0)
    36         {
    37             b = (a*a)/4 - 1;
    38             c = (a*a)/4 + 1;
    39             printf("%I64d %I64d
    ", b,c);
    40         }
    41         else
    42         {
    43             b = (a*a+1)/2-1;
    44             c = b+1;
    45             printf("%I64d %I64d
    ", b, c);
    46         }
    47     }
    48     return 0;
    49 }

     

  • 相关阅读:
    表达式目录树(Expression)
    六大设计原则【单一职责】【里氏替换】【 迪米特法则】【依赖倒置原则】【接口隔离原则】【开闭原则】
    lambda,linq
    c#中的特性Attribute
    CentOS7部署Nginx
    NetCore项目的部署
    ABP+NetCore+Vue.js实现增删改查
    Abp数据库迁移注意事项
    MVC分页
    AspNet5 Changes to [Activate] in beta-5
  • 原文地址:https://www.cnblogs.com/xl1164191281/p/5793447.html
Copyright © 2020-2023  润新知