• Codeforces Round #295 (Div. 2)


    水 A. Pangram

    /*
        水题
    */
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <map>
    #include <set>
    #include <cmath>
    #include <string>
    #include <cstring>
    using namespace std;
    
    int main(void)
    {
        //freopen ("A.in", "r", stdin);
    
        map<char, int> m1;
        map<char, int> m2;
        int n;
        while (~scanf ("%d", &n))
        {
            for (int i=1; i<=26; ++i)
            {
                m1[i] = 0;   m2[i] = 0;
            }
            char s[110];
            scanf ("%s", &s);
            for (int i=0; i<=n-1; ++i)
            {
                if (s[i]<='z' && s[i]>='a')
                {
                    int x = s[i] - 'a' + 1;
                    m1[x]++;
                }
                else
                {
                    int y = s[i] - 'A' + 1;
                    m2[y]++;
                }
            }
    
            bool flag = true;
            for (int i=1; i<=26; ++i)
            {
                if (m1[i] == 0 && m2[i] == 0)
                {
                    flag = false;   break;
                }
            }
    
            (flag) ? puts ("YES") : puts ("NO");
        }
    
        return 0;
    }
    

    BFS B. Two Buttons

    题意:给出n,m两个数字,n可以*2,或者-1,问最少几步n变成m
    思路:BFS:从n出发,分两条路(a, b),标记计算后的数字,如果没找到,入队;如果找到了则输出,不入队,BFS结束。详细解释

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <map>
    #include <set>
    #include <cmath>
    #include <queue>
    #include <string>
    #include <cstring>
    using namespace std;
    
    const int MAXN = 2e4 + 10;
    const int INF = 0x3f3f3f3f;
    int dp[MAXN];
    int used[MAXN];
    struct NODE
    {
        int x;
        int cnt;
    }s;
    
    void BFS(int n, int m)
    {
        if (n >= m)
        {
            printf ("%d
    ", n - m);        return ;
        }
        queue<struct NODE> q;
    
        s.x = n;    s.cnt = 0;
        used[n] = 1;
        q.push (s);
        
        NODE a, b;
        while (!q.empty())
        {
            a = q.front();    b = q.front();    q.pop();
            a.x *= 2;    a.cnt++;
            b.x -= 1;    b.cnt++;
            if (a.x == m)
            {
                printf ("%d
    ", a.cnt);        break;
            }
            if (b.x == m)
            {
                printf ("%d
    ", b.cnt);
            }
            if (a.x > 0 && a.x < MAXN && !used[a.x])
            {
                q.push (a);        used[a.x] = 1;
            }
            if (b.x > 0 && b.x < MAXN && !used[b.x])
            {
                q.push (b);        used[b.x] = 1;
            }
        }    
    }
    
    int main(void)
    {
        //freopen ("B.in", "r", stdin);
    
        int n, m;
        int ans;
        while (~scanf ("%d%d", &n, &m))
        {
            memset (used, 0, sizeof (used));
            BFS (n, m);
        }
        
        return 0;
    }
    

      

    编译人生,运行世界!
  • 相关阅读:
    Python环境的导入导出
    Jenkins+Ant+Jmeter搭建轻量级接口自动化(转载)
    VMware桥接模式连接局域网和互联网
    安装KVM
    [Beyond Compare] 排除/忽略 .svn 文件夹
    Git 如何放弃所有本地修改
    Python2 和 Python3 共存于 Centos7
    kubernetes 之部署metrics-server
    在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践
    华为云 Kubernetes 管理员实训 五 课后作业
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4366791.html
Copyright © 2020-2023  润新知