zoukankan      html  css  js  c++  java
  • Codeforces Ozon Tech Challenge 2020 (Div.1 + Div.2) A-D 题解

    又上分了,好像打的还可以就会懒得补后面的题

    A.Kuroni and the Gifts

    sort一下,没什么好说的

    B.Kuroni and Simple Strings

    很容易(并非)可以看出最多只需要一次就可以了,举个例子假设你两次删除的分别是(())和 (),你会发现你只需要删除( ( ) ) ( ) 这几个,剩下的就一定不能再删了,如果)前面还有能配对的那一定就能一次删掉,所以只需要一次,从两端循环不停的找配对的就可以了

    #include <cstdio>
    #include <cstring>
    #include <vector>
    #include <queue>
    using namespace std;
    priority_queue < int, vector < int >, greater<int> > ans;
    char s[1010];
    int main() {
        scanf("%s", s);
        int len = strlen(s);
        int l = 0, r = len - 1;
        while (l < r) {
        //    printf("%d %d
    ", l, r);
            while (s[l] != '(' && l < r && l < len)
                l++;
            while (s[r] != ')' && l < r && r > 0)
                r--;
            if (l >= r)
                break;
            ans.push(l); ans.push(r);
            l++, r--;
        }
        if (ans.empty())
            printf("0");
        else {
            puts("1");
            printf("%d
    ", ans.size());
            while (!ans.empty()) {
                printf("%d ", ans.top() + 1);
                ans.pop();
            }
        }
        return 0;
    }

    C.Kuroni and Impossible Calculation

    被C卡了半天(丢人),可以发现模很小,那么当n>m的时候,一定会存在ai 和 aj 使ai % m == aj % m,那这两个数相减就是0了,所以n>m,答案一定是0,那1000一下直接暴力就好了

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int N = 2 * 1e5 + 10;
    int a[N], b[N];
    int maxn[N], minn[N], flag[N];
    int main() {
        int n, m;
        scanf("%d %d", &n, &m);
        for (int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        sort(a, a + n);
        long long ans = 1;
        if (n > m + 10) {
            puts("0");
            return 0;
        }
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++)
                ans = (1ll * ans * ((a[j] - a[i]) % m)) % m;
        printf("%lld", ans);
    }

    D.Kuroni and the Celebration

    交互题?至少有两年没做过了,oi退役之后再也没见过交互题,没想到cf会出这种题,不过我随便水了一下没想到过了,思路就是先找到一个只连了一条边的节点,开始往上搜索,每次询问连着三个的两端两个,然后就能至少排除两个,所以可以在n/2的时间内完成,具体细节参考代码(我也不知道我怎么过的)

    #include <cstdio>
    #include <vector>
    using namespace std;
    const int N = 1010;
    vector < int > e[N];
    bool flag[N];
    int main() {
        int n;
        scanf("%d", &n);
        for (int i = 0; i < n - 1; i++) {
            int u, v;
            scanf("%d %d", &u, &v);
            e[u].push_back(v); 
            e[v].push_back(u);
        }
        int u = 0;
        for (int i = 1; i <= n; i++)
            if (e[i].size() == 1)
                u = i;
        flag[u] = true;
        while (true) {
            int a = 0, b = 0;
            for (int i = 0; i < e[u].size(); i++)
                if (!flag[e[u][i]])
                    a = e[u][i];
            if (a == 0) {
                printf("! %d", u);
                break;
            }
            flag[a] = true;
            for (int i = 0; i < e[u].size(); i++)
                if (!flag[e[u][i]])
                    b = e[u][i];
            if (b == 0) {
                for (int i = 0; i < e[a].size(); i++)
                    if (!flag[e[a][i]])
                        b = e[a][i];
                if (b == 0)
                    printf("? %d %d
    ", u, a);
                else
                    printf("? %d %d
    ", u, b);
                fflush(stdout); 
            }
            else {
                printf("? %d %d
    ", a, b);
                fflush(stdout); 
            }
            flag[b] = true;
            scanf("%d", &u);
        }
        return 0;
    }
  • 相关阅读:
    WEB API 系列(二) Filter的使用以及执行顺序
    C# 各个版本特征
    dapper使用
    windows设置自动清理log
    [Mime] MimeReader--读取Mime的帮助类 (转载)
    [Mime] MimeHeaders--MimeHeader帮助类 (转载)
    [Mime] MimeEntity--MimeEntity Mime实体帮助类 (转载)
    [Mime] MediaTypes--电子邮件类型类 (转载)
    [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)
    [功能帮助类] JsHelper--Javascript操作帮助类 (转载)
  • 原文地址:https://www.cnblogs.com/cminus/p/12410002.html
Copyright © 2011-2022 走看看