• codeforces


    A-Two Rival Students 

    贪心,判断一下左边和右边

    #include <stdio.h>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #pragma GCC optimize(2)
     
    #define mm(i,v) memset(i,v,sizeof i);
    #define mp(a, b) make_pair(a, b)
    #define one first
    #define two second
     
    using namespace std;
    typedef long long ll;
    typedef pair<int, int > PII;
     
    const int N = 1e6 + 5, mod = 1e9 + 9, INF = 0x3f3f3f3f;
    int t, n, x, a, b;
     
    int main()
    {
    //    freopen("in.txt", "r", stdin);
    //    freopen("out.txt", "w", stdout);
    //    cin.tie(0);
    //    cout.tie(0);
    //    ios::sync_with_stdio(0);
        cin >> t;
        while (t--) {
            cin >> n >> x >> a >> b;
            if (abs(a - b) == n - 1) {
                cout << n - 1 << endl;
                continue;
            }
            
            int sum = a + b;
            b = a + b - min(a, b);
            a = sum - b;
            int tmp1 = a - 1, tmp2 = n - b;
            b = b + min(x, tmp1 + tmp2);
            cout << (b - a) << endl;
        }
    }
    View Code

    B - Magic Stick 

    因为当x大于等于y的时候是一定可以通过把x减一的方式将他变成y的,所以我们要尽可能把x变大。策略就是如果x是奇数就把他减去1变成偶数,偶数就直接成二分之三。特判一下如果x是奇数并且(x - 1) * 3 / 2 等于x的话就不可能达到 

    #include <stdio.h>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #pragma GCC optimize(2)
     
    #define mm(i,v) memset(i,v,sizeof i);
    #define mp(a, b) make_pair(a, b)
    #define one first
    #define two second
     
    using namespace std;
    typedef long long ll;
    typedef pair<int, int > PII;
     
    const int N = 1e6 + 5, mod = 1e9 + 9, INF = 0x3f3f3f3f;
    ll t, x, y;
     
    int main()
    {
        cin >> t;
        while (t--) {
            cin >> x >> y;
            while (1) {
                if (x >= y) {
                    puts("YES");
                    break;
                }
                if (!(x & 1)) {
                    x = x * 3 / 2;
                } else {
                    x--;
                    ll tmp = x * 3 / 2;
                    if (tmp == x + 1 || tmp == 0) {
                        puts("NO");
                        break;
                    }
                }
            }
        }
        
    }
    /*
    1
    858993461 1000000000
    */ 
    View Code

    C - Dominated Subarray

    在读入的时候一边读一边用map记录并更新当前这个数上次出现的位置,更新答案。

    #include <stdio.h>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #pragma GCC optimize(2)
     
    #define mm(i,v) memset(i,v,sizeof i);
    #define mp(a, b) make_pair(a, b)
    #define one first
    #define two second
     
    using namespace std;
    typedef long long ll;
    typedef pair<int, int > PII;
     
    const int N = 2e5 + 5, mod = 1e9 + 9, INF = 0x3f3f3f3f;
    int t, n;
    int a[N];
    map <int, int> Map;
     
    int main()
    {
        cin >> t;
        while (t--) {
            cin >> n;
            Map.clear();
            int ans = INF;
            for (int i = 1; i <= n; ++i) {
                scanf("%d", &a[i]);
                if (Map[a[i]] != 0) {
                    if (i - Map[a[i]] + 1 < ans) {
                        ans = i - Map[a[i]] + 1;
                        Map[a[i]] = 0;
                    }
                }
                Map[a[i]] = i;
            }
            if (n == 1) {
                puts("-1");
                continue;
            }
            if (ans != INF)
            cout << ans << endl;
            else
            puts("-1");
        }
    }
    View Code

    D - Yet Another Monster Killing Problem

    特判后把奥特曼二分着来打怪兽

    #include <stdio.h>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #pragma GCC optimize(2)
     
    #define mm(i,v) memset(i,v,sizeof i);
    #define mp(a, b) make_pair(a, b)
    #define one first
    #define two second
     
    using namespace std;
    typedef long long ll;
    typedef pair<int, int > PII;
     
    const int N = 2e5 + 5, mod = 1e9 + 9, INF = 0x3f3f3f3f;
    int t, n, m, maxx, tid, pos, res;
    int a[N], id[N];
    PII e[N];
     
    int main()
    {
        cin >> t;
        while (t--) {
            cin >> n;
            int w = -1;
            for (int i = 1; i <= n; ++i) {
                scanf("%d", &a[i]);
                w = max(w, a[i]);
            }
            cin >> m;
            bool flag = 1;
            for (int i = 1; i <= m; ++i) {
                scanf("%d%d", &e[i].first, &e[i].second);
                if (e[i].first >= w)
                    flag = 0;
            }
            
            if (flag) {
                puts("-1");
                continue;
            }
            
            sort(e + 1, e + 1 + m);
            
            maxx = 0;
            for (int i = m; i >= 1; --i) {
                if (e[i].second > maxx) {
                    maxx = e[i].second;
                    tid = i;
                }
                id[i] = tid;
            }
            
            pos = 1, res = 0;
            while (pos <= n) {
                tid = lower_bound(e + 1, e + 1 + m, PII(a[pos], -1)) - e;
                tid = id[tid];
                maxx = e[tid].second;
                for (int j = 1; j <= maxx; ++j) {
                    if (a[pos] <= e[tid].first) pos++;
                    else {
                        tid = lower_bound(e + 1, e + 1 + m, PII(a[pos], -1)) - e;
                        tid = id[tid];
                        if (e[tid].second >= j) {
                            maxx = e[tid].second;
                            pos++;
                        }
                        else
                        break;
                    }
                }
                res++;
            }
            cout << res << endl;
        }
    }
    /*
    1
    5
    78 22 90 12 42
    5
    51 1
    87 3
    48 2
    13 1
    98 5
    */
    View Code
  • 相关阅读:
    如何在google官方网站下载测试版、开发版(Beta、Dev)离线安装包?
    Google Chrome 开发进度 官方Blog
    如何在google官方网站下载正式版(Stable)离线安装包?
    asp 毫秒数 timer 当前0点与当前时间的毫秒差
    JavaScript toFixed() 方法
    sqlserver 数据库 SQL循环语句
    IE里Iframe的Cookie问题解决办法总结
    js cookie
    IIS 限制上传大小的问题 200k (SWFUpload_ASP操作的时候更改了本身的限制,还需要更改iis的大小)
    SWFUpload免费FLASH上传组件(ASP修改版)
  • 原文地址:https://www.cnblogs.com/mwh123/p/11890163.html
Copyright © 2020-2023  润新知