zoukankan      html  css  js  c++  java
  • Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined)

    传送门:http://codeforces.com/contest/765

    A题:给你家的名字,以及n张机票的起点和终点,Jinotega一开始在家,你要根据这些机票的起点和终点判断Jinotega最后是不是在家。直接记录起点和终点家出现的次数,如果相等说明Jinotega在家,否则不在家。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <string>
    #include <stack>
    #include <map>
    #include <set>
    #include <bitset>
    #define X first
    #define Y second
    #define clr(u,v); memset(u,v,sizeof(u));
    #define in() freopen("data","r",stdin);
    #define out() freopen("ans","w",stdout);
    #define Clear(Q); while (!Q.empty()) Q.pop();
    #define pb push_back
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> pii;
    const int maxn = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    char str[100];
    char s[5];
    int main()
    {
        int n;
        scanf("%d", &n);
        scanf("%s", s);
        int ans = 0;
        for (int i = 0; i < n; i++)
        {
            scanf("%s", str);
            str[3] = '';
            if (strcmp(str, s) == 0) ans++;
            if (strcmp(str + 5, s) == 0) ans--;
        }
        if (ans) puts("contest");
        else puts("home");
        return 0;
    }
    View Code

    B题:这题题意我也看不太懂,大概是给你一个字符串,然后你要按字母顺序一个个覆盖,先覆盖a,再覆盖b,覆盖第一个a之前不能先遇到b、c……z。我是直接记录下每种字符第一次出现的位置,得到的序列如果是非递减的就输出YES,否则输出NO

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <string>
    #include <stack>
    #include <map>
    #include <set>
    #include <bitset>
    #define X first
    #define Y second
    #define clr(u,v); memset(u,v,sizeof(u));
    #define in() freopen("data","r",stdin);
    #define out() freopen("ans","w",stdout);
    #define Clear(Q); while (!Q.empty()) Q.pop();
    #define pb push_back
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> pii;
    const int maxn = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    char str[maxn];
    int N[100];
    int main()
    {
        clr(N, 0x3f);
        scanf("%s", str + 1);
        int len = strlen(str + 1);
        for (int i = 1; i <= len; i++)
        {
            int id = str[i] - 'a';
            if (N[id] == INF) N[id] = i;
        }
    //    for (int i=0;i<26;i++)
    //    printf("%d
    ",N[i]);
        for (int i = 1; i < 26; i++)
            if (N[i] < N[i-1])
            {
                puts("NO");
                return 0;
            }
        puts("YES");
        return 0;
    }
    View Code

    C题:题意是有两个人在比赛乒乓球,乒乓球是k分制(谁先到达k分谁赢),第一个人一共赢了a分,第二个人一共赢了b分,问他们最多有可能打多少局(必须是完整一局),如果不存在这种情况则输出-1。比较容易想到贪心,直接把每场比赛都当作是11:0,然后最后的余数再分给任意一场比赛就行了,所以答案就是a/k+b/k,然而这题有个坑点,就是如果a/k == 0,那么第一个人是无法处理b%k这一部分的,b同理,所以要特判一下。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <string>
    #include <stack>
    #include <map>
    #include <set>
    #include <bitset>
    #define X first
    #define Y second
    #define clr(u,v); memset(u,v,sizeof(u));
    #define in() freopen("data","r",stdin);
    #define out() freopen("ans","w",stdout);
    #define Clear(Q); while (!Q.empty()) Q.pop();
    #define pb push_back
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> pii;
    const int maxn = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    
    int main()
    {
        ll k, n, m;
        cin >> k >> n >> m;
        ll ans = n / k + m / k ;
        if (ans == 0) cout << -1 << endl;
        else
        {
            if (n / k == 0 && m % k) cout << -1 << endl;
            else if (m / k == 0 && n % k) cout << -1 << endl;
            else cout << ans << endl;
        }
        return 0;
    }
    View Code

    D题:题意是给你一个序列f(x),让你构造出一个序列使得 g(h(x)) = x for all , and h(g(x)) = f(x) for all ,这题是构造题,我是根据样例xjb构造的,至于为什么,我也不知道= =(逃)

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <string>
    #include <stack>
    #include <map>
    #include <set>
    #include <bitset>
    #define X first
    #define Y second
    #define clr(u,v); memset(u,v,sizeof(u));
    #define in() freopen("data","r",stdin);
    #define out() freopen("ans","w",stdout);
    #define Clear(Q); while (!Q.empty()) Q.pop();
    #define pb push_back
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> pii;
    const int maxn = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    int f[maxn], g[maxn], h[maxn], id[maxn];
    int main()
    {
        int n;
        scanf("%d", &n);
        for (int i = 1; i <= n; i++)
        {
            scanf("%d", &f[i]);
            h[f[i]] = f[i];
            g[i] = f[i];
        }
        int cnt = 1;
        for (int i = 1; i <= n; i++)
            if (h[i])
            {
                id[h[i]] = cnt;
                h[cnt] = h[i];
                cnt++;
            }
        for (int i = 1; i <= n; i++)
            g[i] = id[g[i]];
        for (int i = 1; i < cnt; i++)
            if (g[h[i]] != i)
            {
                puts("-1");
                return 0;
            }
        for (int i = 1; i <= n; i++)
            if (h[g[i]] != f[i])
            {
                puts("-1");
                return 0;
            }
        printf("%d
    ", cnt - 1);
        for (int i = 1; i <= n; i++)
            printf("%d ", g[i]);
        puts("");
        for (int i = 1; i < cnt; i++)
            printf("%d ", h[i]);
        puts("");
        return 0;
    }
    View Code

    这场最坑的莫过于c题,一开始就踩坑的我以为及时爬了上来,没想到最后还是因为写少了个else在终测挂掉了,最后靠着xjb写的D题上了蓝名,不过挂了c题还是很可惜的。

  • 相关阅读:
    .NET CORE技术路线图
    .Net Core之Configuration
    30+程序员
    Source Insight无限试用期修改方法
    WALT(Window Assisted Load Tracking)学习
    使用Mac的Remote Desktop Manager连接ubuntu16.04 & Win10的远程桌面
    进程调度函数scheduler_tick()的触发原理:周期PERIODIC定时器
    Linux、Android系统调用从上层到底层的调用路径浅析
    Ftrace的部分使用方法
    CPU efficiency测量标准:DMIPS
  • 原文地址:https://www.cnblogs.com/scaugsh/p/6399584.html
Copyright © 2011-2022 走看看