• codeforces contest


    Codeforces Beta Round #1

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-10
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 150000 + 5;
    const int mod = 998244353;
    
    int main()
    {
        LL n,m,a;
        cin >> n >> m >> a;
        n = LL(ceil(n * 1.0 / a));
        m = LL(ceil(m * 1.0 / a));
        printf("%lld
    ",n * m);
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-10
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e6 + 5;
    const int mod = 998244353;
    
    bool is(char a) {
        if('A' <= a && a <= 'Z')
            return true;
        return false;
    }
    int check(char *s)
    {
        int len = strlen(s);
        int ans = 0,pos1 = -1,pos2 = -1;
        for(int i = 0 ;i < len; i++)
        {
            if(is(s[i]) && s[i] != 'R' && s[i] != 'C')
            {
                ans++;
                continue;
            }
            if(s[i] == 'R') {
                ans ++;
                pos1 = i;
            }
            if(s[i] == 'C') {
                ans++;
                pos2 = i;
            }
        }
    
        if(ans == 2 && pos1 != -1 && pos2 != -1 && pos2 - pos1 > 1)
            return 1;
        return 2;
    }
    void K(int n)
    {
        if(n>26)
            K((n-1)/26);
    
        printf("%c",(n-1)%26+'A');
    }
    int main()
    {
        int n;
        cin >> n;
        while(n--)
        {
            char s[MAXN];
            scanf("%s",s);
            int flag = check(s);
            //debug(flag);
            if(flag == 1) {
                int len = strlen(s);
                int pos1 = -1,pos2 = -1;
                for(int i = 0 ;i < len; i++)
                {
                    if(s[i] == 'R') {
                        pos1 = i;
                    }
                    if(s[i] == 'C') {
                        pos2 = i;
                    }
                }
                int p1 = 0,p2 = 0;
                for(int i = pos1 + 1; i < pos2; i++) {
                    p1 *= 10;
                    p1 += (s[i] - '0');
                }
                for(int i = pos2 + 1; i < len; i++) {
                    p2 *= 10;
                    p2 += (s[i] - '0');
                }
                char ch = 'A';
                K(p2);
                printf("%d
    ",p1);
            } else {
                int p1 = 0,p2 = 0;
                int len = strlen(s);
                int i;
                for(i = 0; i < len; i++) {
                    if(is(s[i])) {
                        p1 *= 26;
                        p1 += s[i] - 'A' + 1;
                    }
                    else
                        break;
                }
    
                for(i ; i < len ; i++) {
                    p2 *= 10;
                    p2 += s[i] - '0';
                }
                printf("R%dC%d
    ",p2,p1);
            }
        }
    }
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e6 + 5;
    const int mod = 998244353;
    
    struct node{
        double x,y;
    };
    double len(node a,node b) {
        double tmp = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
        return tmp;
    }
    double gcd(double x,double y) {
        while(fabs(x) > eps && fabs(y) > eps) {
            if(x > y)
                x -= floor(x / y) * y;
            else
                y -= floor(y / x) * x;
        }
        return x + y;
    }
    int main()
    {
        node a,b,c;
        cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y;
        double lena = len(a,b);
        double lenb = len(b,c);
        double lenc = len(a,c);
    
        double p = (lena + lenb + lenc) / 2.0;
        double S = sqrt(p * (p - lena) * (p - lenb) * (p - lenc));
        double R = lena * lenb * lenc / (4.0 * S);
        double A = acos((lenb * lenb + lenc * lenc - lena * lena) / (2 * lenb * lenc));
        double B = acos((lena * lena + lenc * lenc - lenb * lenb) / (2 * lena * lenc));
        double C = acos((lena * lena + lenb * lenb - lenc * lenc) / (2 * lena * lenb));
        double PI = acos(-1.0);
        double n = PI / gcd(gcd(A,B),C);
        double ans = n / 2 * R * R * sin(2 * PI / n);
        printf("%.10f
    ",ans);
    }
    View Code

    Codeforces Beta Round #2

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e3 + 5;
    const int mod = 998244353;
    
    map<string,int>mp;
    map<string,int>vis;
    int main() {
        int t;
        cin >> t;
        string s[MAXN];
        int c[MAXN];
        int maxx = -INF;
        string ans;
        for(int i = 0; i < t; i++) {
            cin >> s[i];
            scanf("%d",&c[i]);
            mp[s[i]] += c[i];
        }
        map<string,int> :: iterator it;
        for(it = mp.begin(); it != mp.end(); it ++) {
            maxx = max(maxx,it -> second);
        }
        for(it = mp.begin(); it != mp.end(); it ++) {
            if(it -> second == maxx) {
                vis[it->first] = 1;
            }
        }
        mp.clear();
        for(int i = 0; i < t; i++) {
            mp[s[i]] += c[i];
            if(mp[s[i]] >= maxx && vis[s[i]] == 1) {
                ans = s[i];
                break;
            }
        }
        cout << ans << endl;
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e3 + 5;
    const int mod = 998244353;
    int read(){
        int ans=0,flag=1;char ch;
        while((ch=getchar())<'0'||ch>'9') if(ch=='-') flag=-1;
        ans=ch^48;
        while((ch=getchar())>='0'&&ch<='9') ans=(ans<<3)+(ans<<1)+(ch^48);
        return flag*ans;
    }
    int f[MAXN][MAXN][2];
    int g[MAXN][MAXN][2];
    void dfs(int x,int y,int k) {
        if(x == 1 && y == 1) return;
        if(g[x][y][k]) {
            dfs(x - 1,y,k);
            putchar('D');
        } else {
            dfs(x, y - 1,k);
            putchar('R');
        }
    }
    int main()
    {
        int n,x = 0,k;
        n = read();
        memset(f,0,sizeof f);
        for(int i = 2; i <= n; i++)
            for(int id = 0; id < 2; id++)
                f[0][i][id] = f[i][0][id] = INF;
    
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= n; j++) {
                k = read();
                if (k == 0) {
                    x = i;
                } else {
                    while (k % 2 == 0) {
                        f[i][j][0]++;
                        k /= 2;
                    }
                    while (k % 5 == 0) {
                        f[i][j][1]++;
                        k /= 5;
                    }
                }
                for (int id = 0; id < 2; id++) {
                    if (f[i - 1][j][id] < f[i][j - 1][id]) {
                        g[i][j][id] = 1;
                        f[i][j][id] += f[i - 1][j][id];
                    } else {
                        g[i][j][id] = 0;
                        f[i][j][id] += f[i][j - 1][id];
                    }
    //                if(g[i][j][id]=f[i-1][j][id]<f[i][j-1][id])
    //                    f[i][j][id] += f[i-1][j][id];
    //                else
    //                    f[i][j][id] += f[i][j-1][id];
                }
            }
        }
        if(f[n][n][1] < f[n][n][0])
            k = 1;
        else
            k = 0;
    
        if(x && f[n][n][1] > 1) {
            printf("1
    ");
            for(int i = 2; i <= x; i++)
                putchar('D');
            for(int i = 2; i <= n; i++)
                putchar('R');
            for(int i = x + 1; i <= n; i++)
                putchar('D');
        } else {
            printf("%d
    ",f[n][n][k]);
            dfs(n,n,k);
        }
        return 0;
    }
    View Code

    C.

    好像是啥模拟退火,先留坑

    Codeforces Beta Round #3

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
     
    int main()
    {
        char st[10];
        char en[10];
        cin >> st >> en;
        int a1 = st[0] - 'a';
        int a2 = st[1] - '0';
        int b1 = en[0] - 'a';
        int b2 = en[1] - '0';
     
        int dx = a1 - b1;
        int dy = a2 - b2;
    //    cout << dx << dy << endl;
        int ans = max(abs(dx),abs(dy));
        printf("%d
    ",ans);
        for(int i = 0;i < ans; i++)
        {
            if(i < abs(dx) && dx < 0)
                putchar('R');
            if(i < abs(dx) && dx > 0)
                putchar('L');
            if(i < abs(dy) && dy < 0)
                putchar('U');
            if(i < abs(dy) && dy > 0)
                putchar('D');
            cout << endl;
        }
     
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
     
    struct node{
        int id,val,kind;
    }a[MAXN];
     
    bool cmp(node a,node b)
    {
        if(a.kind != b.kind)
            return a.kind > b.kind;
        return a.val > b.val;
    }
     
    int main() {
        int n, v;
        cin >> n >> v;
        for (int i = 1; i <= n; i++) {
            scanf("%d %d", &a[i].kind, &a[i].val);
            a[i].id = i;
        }
     
        sort(a + 1, a + 1 + n, cmp);
        deque<node> que;
        int sum = 0;
        int i;
        for (i = 1; i <= n; i++) {
            if (v == 0)
                break;
            if (v >= 2 && a[i].kind == 2) {
                node tmp;
                tmp = a[i];
                que.push_front(tmp);
                v -= 2;
                sum += a[i].val;
            }
            if (v >= 1 && a[i].kind == 1) {
                node tmp;
                tmp = a[i];
                que.push_back(tmp);
                v -= 1;
                sum += a[i].val;
            }
        }
        for(i ; i <= n; i++)
            if(a[i].kind == 1)
                break;
        if (i <= n) {
            for (i; i <= n; i++) {
                node tmp = que.front();
                if (tmp.kind == 2 && tmp.val < (a[i].val + a[i + 1].val)) {
                    que.pop_front();
                    que.push_back(a[i]);
                    que.push_back(a[i + 1]);
                    sum -= tmp.val;
                    sum += (a[i].val + a[i + 1].val);
                    i++;
                }
            }
        }
     
        int num[MAXN];
        int pos = 0;
        while(que.size())
        {
            node tmp = que.front();
            que.pop_front();
            num[pos++] = tmp.id;
        }
        sort(num,num + pos);
     
        cout << sum << endl;
        for(int i = 0 ; i < pos; i++)
            printf("%d ",num[i]);
    }
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
     
    char s[10][10];
    bool ill()
    {
        int a = 0;
        int b = 0;
        for(int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (s[i][j] == 'X')
                    a++;
                if (s[i][j] == '0')
                    b++;
            }
        }
        int tmp = a - b;
        if(tmp == 0 || tmp == 1)
            return true;
        return false;
    }
    int de()
    {
        int a = 0;
        int b = 0;
        for(int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (s[i][j] == 'X')
                    a++;
                if (s[i][j] == '0')
                    b++;
            }
        }
        int tmp = a - b;
        return tmp;
    }
     
    bool firstwin()
    {
        for(int i = 0 ; i < 3; i ++ ) {
            if (s[i][0] == s[i][1] && s[i][1] == s[i][2] && s[i][2] == 'X') {
                return true;
            }
        }
        for(int i = 0; i < 3; i++) {
            if(s[0][i] == s[1][i] && s[1][i] == s[2][i] && s[0][i] == 'X')
                return true;
        }
        if(s[0][0] == s[1][1] && s[1][1] == s[2][2] && s[0][0] == 'X')
            return true;
        if(s[2][0] == s[1][1] && s[1][1] == s[0][2] && s[1][1] == 'X')
            return true;
        return false;
    }
    bool secondwin()
    {
        for(int i = 0 ; i < 3; i ++ ) {
            if (s[i][0] == s[i][1] && s[i][1] == s[i][2] && s[i][2] == '0') {
                return true;
            }
        }
        for(int i = 0; i < 3; i++) {
            if(s[0][i] == s[1][i] && s[1][i] == s[2][i] && s[0][i] == '0')
                return true;
        }
        if(s[0][0] == s[1][1] && s[1][1] == s[2][2] && s[0][0] == '0')
            return true;
        if(s[2][0] == s[1][1] && s[1][1] == s[0][2] && s[1][1] == '0')
            return true;
        return false;
    }
    bool man()
    {
        int ans = 0;
        for(int i = 0; i < 3; i++)
            for(int j = 0 ;j < 3; j++)
                if(s[i][j] != '.')
                    ans ++;
         return ans == 9;
    }
    int main()
    {
        for(int i = 0 ;i < 3; i++)
            cin >> s[i];
        if(ill() == false || (firstwin() && secondwin()))
        {
            puts("illegal");
            return 0;
        }
        if(secondwin() && de() == 1)
        {
            puts("illegal");
            return 0;
        }
        if(firstwin() && de() == 0)
        {
            puts("illegal");
            return 0;
        }
        if(firstwin())
        {
            puts("the first player won");
            return 0;
        }
        if(secondwin())
        {
            puts("the second player won");
            return 0;
        }
        if(man())
        {
            puts("draw");
            return 0;
        }
        if(de() == 0)
        {
            puts("first");
            return 0;
        }
        if(de() == 1)
        {
            puts("second");
            return 0;
        }
     
    }
    View Code

    D.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
    struct node{
        int s,pos;
        node(){}
        node(int xx,int pp): s(xx),pos(pp){}
        bool operator < (node a)const {
            return s > a.s;         //s小的优先级高
        }
    };
    priority_queue<node>que;
    int main()
    {
        char s[MAXN];
        scanf("%s",s);
        int len = strlen(s);
        LL ans = 0;
        int flag = 0;
        int wrong = 0;
        for(int i = 0 ; i < len; i++)
        {
            if(s[i] == '(')
                flag++;
            else if(s[i] == ')')
                flag--;
            else {
                int a,b;
                scanf("%d %d",&a,&b);
                flag--;
                ans += 1LL * b;
                que.push(node(a - b,i));
                s[i] = ')';
            }
            if(flag < 0) {
                if(que.empty()) {
                    wrong = 1;
                } else {
                    flag += 2;
                    node tmp = que.top();
                    que.pop();
                    ans += tmp.s;
                    s[tmp.pos] = '(';
                }
            }
        }
    //    debug(flag);
        if(wrong || flag != 0)
            puts("-1");
        else {
            cout << ans << endl;
            printf("%s",s);
        }
    }
    View Code

    Codeforces Beta Round #4(Div. 2 Only)

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
     
    int main()
    {
        int w;
        cin >> w;
        if(w % 2 == 1 || w == 2)
            puts("NO");
        else 
            puts("YES");
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 234 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
     
    int main()
    {
       int d,sum;
       cin >> d >> sum;
       int minn = 0;
       int maxx = 0;
       int a[MAXN];
       int b[MAXN];
       for(int i = 0;i < d; i++) {
           cin >> a[i] >> b[i];
           minn += a[i];
           maxx += b[i];
       }
       if(minn <= sum && sum <= maxx) {
           puts("YES");
           int tmp = sum - minn;
           for(int i = 0; i < d; i++) {
              if(b[i] > a[i] && tmp > 0) {
                  int xx = min(b[i] - a[i],tmp);
                  tmp -= xx;
                  a[i] += xx;
              }
              printf("%d ",a[i]);
           }
       } else {
           puts("NO");
       }
    }
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 234 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
    map<string,int>mp;
    int main()
    {
        int t;
        cin >> t;
        while(t--) {
            string s;
            cin >> s;
            if(mp[s] == 0) {
                mp[s] ++;
                cout << "OK" <<endl;
            } else {
                cout <<s << mp[s] <<endl;
                mp[s]++;
            }
        }
    }
    View Code

    D.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    #define ll long long
    #define LL long long
    const int MAXN = 1e5 + 5;
    const int mod = 998244353;
     
    struct node{
        int w,h;
        int id;
    }a[MAXN];
    bool cmp(node a,node b) {
        if(a.w != b.w) return a.w < b.w;
        return a.h < b.h;
    }
    int dp[MAXN];
    int path[MAXN];
     
    void print(int n) {
        if(path[n] == -1) {
            printf("%d ",a[n].id);
            return ;
        } else {
            print(path[n]);
            printf("%d ",a[n].id);
        }
    }
    int main() {
        int n, w, h;
        cin >> n >> w >> h;
        int pos = 0;
        for(int i = 1; i <= n; i++) {
            int w1,h1;
            cin >> w1 >> h1;
            if(w1 > w && h1 > h) {
                a[pos].w = w1;
                a[pos].h = h1;
                a[pos].id = i;
                pos++;
            }
        }
        if(pos == 0)
        {
            cout << 0 << endl;
            return 0;
        }
        sort(a, a + pos, cmp);
     
        for(int i = 0; i < pos; i++) {
            dp[i] = 1;
            path[i] = i;
        }
        memset(path, -1, sizeof path);
        int maxlen = 1,biao = 0;
        for(int i = 0; i < pos; i++) {
            for(int j = 0; j < i; j++) {
                if(a[j].h < a[i].h && a[j].w < a[i].w && dp[i] < (dp[j] + 1)) {
                    dp[i] = dp[j] + 1;
                    if(dp[i] > maxlen) maxlen = dp[i];
                    path[i] = j;
                }
            }
        }
        int tmp,cmp = 0;
        for(int i = 0; i  < n; i++) {
            if(dp[i] > cmp) {
                cmp = dp[i];
                tmp = i;
            }
        }
        cout << maxlen << endl;
    //    debug(tmp);
        print(tmp);
    }
    View Code

    Codeforces Beta Round #5

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int mod = 998244353;
     
    int main()
    {
        char a[MAXN];
        int num = 0;
        int sum = 0;
        while(gets(a))
        {
           if(a[0] == '+')
               num++;
           else if(a[0] == '-')
               num--;
           else {
               int pos;
               for(int i = 0; i < strlen(a); i++)
                   if(a[i] == ':') {
                       pos = i;
                       break;
                   }
               sum += (strlen(a) - 1 - pos) * num;
           }
        }
        cout << sum << endl;
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e3 + 5;
    const int mod = 998244353;
     
    string s[maxn];
    int main()
    {
        int n = 0;
        int len = 0;
        while (getline(cin,s[n])) {
            len = max(len,(int)s[n].size());
            n++;
        }
        for(int i = 0; i < len + 2; i++)
            putchar('*');
        cout << endl;
        bool flag = true;
        for(int i = 0; i < n; i++) {
            putchar('*');
            int tmp = len - s[i].size();
            int k1 = tmp / 2,k2 = tmp / 2;
     
            if(tmp % 2 != 0) {
                if(flag == false) {
                    k1 ++;
                    flag = true;
                }
                else {
                    k2 ++;
                    flag = false;
                }
            }
            for(int j = 0; j < k1; j++)
                putchar(' ');
            cout << s[i];
            for(int j = 0; j < k2; j++)
                putchar(' ');
            putchar('*');
            cout << endl;
        }
        for(int i = 0; i < len + 2; i++)
            putchar('*');
    }
     
    /*
     
    ************
    * This  is *
    *          *
    *Codeforces*
    *   Beta   *
    *  Round   *
    *     5    *
    ************
     
     */
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e6 + 5;
    const int mod = 998244353;
     
    int f[maxn];
    char a[maxn];
    int maxlen,num,n;
    stack<int>s;
     
    void init() {
        memset(f,0,sizeof f);
        maxlen = 0;
        num = 1;
    }
     
    int main()
    {
        init();
        scanf("%s",a);
        n = strlen(a);
        for(int i = 0 ; i < n; i++) {
            if(a[i] == '(')
                s.push(i);
            else {
                if(!s.empty()) {
                    int t = s.top();
                    s.pop();
                    f[i] = f[t - 1] + i - (t - 1);
                }
                if(f[i] > maxlen) {
                    maxlen = f[i];
                    num = 1;
                } else if(f[i] == maxlen)
                    num++;
            }
        }
        if(maxlen) printf("%d %d
    ",maxlen,num);
        else printf("0 1
    ");
     
    }
    View Code

    D.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e6 + 5;
    const int mod = 998244353;
     
    int main()
    {
        double a,v,l,d,w;
        cin >> a >> v >> l >> d >> w;
     
        double t1,t2,vv,vd;
        if(v <= w) {
            if(2.0 * d * a <= v * v) {
                t1 = sqrt(2.0 * d / a);
                vd = sqrt(2.0 * d * a);
            } else {
                t1 = v / a + (d - v * v * 0.5 / a) / v;
                vd = v;
            }
        } else if(2.0 * d * a <= w * w) {
            t1 = sqrt(2.0 * d / a);
            vd = sqrt(2.0 * d * a);
        } else {
            vv = sqrt(a * d + 0.5 * w * w);
            if(v >= vv && vv >= w)
                t1 = (2.0 * vv - w) / a;
            else {
                t1 = v / a;
                t1 += (d - (v * v - 0.5 * w * w) / a) / v;
                t1 += (v - w) / a;
            }
            vd = w;
        }
     
        if(2.0 * a * (l - d) < v * v - vd * vd) {
            t2 = (sqrt(2.0 * a * (l - d) + vd * vd) - vd) / a;
        } else {
            t2 = (v - vd) / a;
            t2 += ((l - d) - 0.5 * (v * v / a - vd * vd / a)) / v;
        }
        printf("%.10f
    ",t1 + t2);
    }
    View Code

    E.

    https://blog.csdn.net/qq_38759433/article/details/86514227

    include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e6 + 5;
    const int mod = 998244353;
     
    LL h[maxn],hh[maxn],same[maxn],l[maxn],r[maxn];
     
    int main()
    {
        LL n,maxh,pos;
        scanf("%lld",&n);
        for(LL i = 0; i < n; ++i) scanf("%lld",&h[i]);
        maxh = h[0],pos = 0;
        for(LL i = 1; i < n; ++i) {
            if(h[i] > maxh) {
                maxh = h[i];
                pos = i;
            }
        }
        for(LL i = 0; i < n; ++i) {
            hh[i] = h[(pos + i) % n];
        }
        hh[n] = hh[0];
        same[n] = 0;
        for(LL i = n - 1; i >= 0; --i) {
            r[i] = i + 1;
            while(r[i] < n && hh[i] > hh[r[i]])
                r[i] = r[r[i]];
            if(r[i] < n && hh[i] == hh[r[i]]) {
                same[i] = same[r[i]] + 1;
                r[i] = r[r[i]];
            }
        }
        l[0] = 0;
        for(LL i = 1; i <= n; ++i) {
            l[i] = i - 1;
            while(l[i] > 0 && hh[i] >= hh[l[i]])
                l[i] = l[l[i]];
        }
        LL ans = 0;
        for(LL i = 0; i < n; ++i) {
            ans += same[i];
            if(hh[i] < hh[0]) {
                if(l[i] == 0 && r[i] == n)
                    ans++;
                else
                    ans += 2;
            }
        }
        cout << ans << endl;
    }
    View Code

    Codeforces Beta Round #6 (Div. 2 Only)

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e5 + 5;
    const int mod = 998244353;
     
    int a[10];
    int main()
    {
        for(int i = 0; i < 4; i++)
            cin >> a[i];
        sort(a, a + 4);
     
        if(a[2] < (a[0] + a[1]) || a[3] < (a[2] + a[1]))
            puts("TRIANGLE");
        else if(a[2] == (a[0] + a[1]) || a[3] == (a[0] + a[1]) || a[3] == (a[2] + a[1]))
            puts("SEGMENT");
        else
            puts("IMPOSSIBLE");
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e2 + 5;
    const int mod = 998244353;
     
    char s[maxn][maxn];
    set<char>se;
    int dx[4] = {1,-1,0,0};
    int dy[4] = {0,0,1,-1};
    int main() {
        int n, m;
        char ch;
        cin >> n >> m >> ch;
        for (int i = 1; i <= n; i++)
            scanf("%s", s[i] + 1);
     
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if (s[i][j] == ch) {
                    for (int k = 0; k < 4; k++) {
                        int nx = i + dx[k];
                        int ny = j + dy[k];
                        if(1 <= nx && nx <= n && 1 <= ny && ny <= m && s[nx][ny] != '.' && s[nx][ny] != ch) {
    //                        cout << s[nx][ny] << endl;
                           se.insert(s[nx][ny]);
                        }
                    }
                }
            }
        }
        cout << se.size() << endl;
    }
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e5 + 5;
    const int mod = 998244353;
     
    deque<int>que;
    int main()
    {
        int n;
        cin >> n;
        int t[maxn];
        for(int i = 1; i <= n; i++) {
            cin >> t[i];
        }
        int st = 1, en = n;
        int cnta = 0,cntb = 0;
        int aa = 0,bb = 0;
        while(st <= en) {
            if(aa <= bb) {
                aa += t[st++];
                cnta++;
            } else {
                bb += t[en--];
                cntb++;
            }
        }
        printf("%d %d
    ",cnta,cntb);
    }
    View Code

    D.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e5 + 5;
    const int mod = 998244353;
     
    int n,a,b;
    int h[maxn];
    vector<int>tmp;
    vector<int>v;
    int ans = inf;
     
    void dfs(int x,int times) {
        if(times >= ans) return;
        if(x == n) {
            if(h[x] < 0) {
                v = tmp;
                ans = times;
            }
            return;
        }
     
        for(int i = 0; i <= max(h[x - 1] / b + 1,max(h[x] / a + 1,h[x + 1] / b + 1)); i++) {
            if(h[x - 1] < b * i) {
                h[x - 1] -= b * i;
                h[x] -= a * i;
                h[x + 1] -= b * i;
                for (int j = 0; j < i; j++) tmp.push_back(x);
                dfs(x + 1, times + i);
                for (int j = 0; j < i; j++) tmp.pop_back();
                h[x - 1] += b * i;
                h[x] += a * i;
                h[x + 1] += b * i;
            }
        }
    }
    int main()
    {
        cin >> n >> a >> b;
        for(int i = 1; i <= n; i++) cin >> h[i];
        dfs(2,0);
        cout << ans << endl;
        for(int i = 0; i < v.size(); i++)
            printf("%d ",v[i]);
    }
    View Code

    E.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e5 + 5;
    const int mod = 998244353;
     
    int n,k;
    int a[maxn];
    int ma[maxn << 2],mi[maxn << 2];
    void build(int o,int l,int r) {
        if(l == r) {
            ma[o] = a[l];
            mi[o] = a[l];
        } else {
            int mid = (l + r) >> 1;
            build(o << 1,l ,mid);
            build(o << 1 | 1,mid + 1,r);
            ma[o] = max(ma[o << 1],ma[o << 1 | 1]);
            mi[o] = min(mi[o << 1],mi[o << 1 | 1]);
        }
    }
    int querymax(int o,int l,int r,int ql,int qr) {
        if(ql > r || qr < l) return -1;
        if(ql <= l && qr >= r) return ma[o];
        int mid = (l + r) >> 1;
        int p1 = querymax(o << 1 ,l, mid,ql,qr);
        int p2 = querymax(o << 1 | 1,mid + 1, r, ql,qr);
        return max(p1,p2);
    }
    int querymin(int o,int l,int r,int ql,int qr) {
        if(ql > r || qr < l) return inf;
        if(ql <= l && qr >= r) return mi[o];
        int mid = (l + r) >> 1;
        int p1 = querymin(o << 1 ,l, mid,ql,qr);
        int p2 = querymin(o << 1 | 1,mid + 1, r, ql,qr);
        return min(p1,p2);
    }
    pair<int,int>p[maxn];
    int main()
    {
        cin >> n >> k;
        for(int i = 1; i<= n; i++) cin >> a[i];
        build(1,1,n);
        int l ,r, tmp, cnt;
        l = r = tmp = 1;
        cnt = 0;
        while(l <= n) {
            int fx = querymax(1,1,n,l,r);
            int fy = querymin(1,1,n,l,r);
            if(fx - fy <= k) {
                if(r - l + 1 == tmp) {
                    p[cnt].first = l;
                    p[cnt].second = r;
                    cnt ++;
                } else if(r - l + 1 > tmp) {
                    cnt = 0;
                    tmp = r - l + 1;
                    p[cnt].first = l;
                    p[cnt].second = r;
                    cnt++;
                }
                r++;
            } else l++;
            if(r > n) {
                r = n;l++;
            }
            if(l > r) r = l;
        }
        printf("%d %d
    ",tmp,cnt);
        for(int i = 0; i < cnt; i++) printf("%d %d
    ",p[i].first,p[i].second);
    }
    View Code

    Codeforces Round #579 (Div. 3)

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-10
    typedef long long LL;
    const int MAXN = 32000 + 5;
    const int mod = 998244353;
     
    int a[MAXN];
    int main()
    {
        int t;
        cin >> t;
        while(t--) {
            int n;
            cin >> n;
            int pos;
            for(int i = 1; i <= n; i++)
            {
                cin >> a[i];
                if(a[i] == 1)
                    pos = i;
            }
            for(int i = n + 1; i <= 2 * n; i++)
                a[i] = a[i - n];
            int flag = 0;
            int cnt  = 1;
            int ans = 0;
            for(int i = pos; i < pos + n; i++) {
                if(a[i] == cnt){
                    ans++;
                    cnt++;
                }
            }
            if(ans == n)
                flag =1;
            ans = 0;
            cnt =1;
            for(int i = pos + n; i > pos; i--) {
                if(a[i] == cnt) {
                    ans++;
                    cnt++;
                }
            }
            if(ans == n)
                flag =1;
            if(flag)
                puts("YES");
            else
                puts("NO");
        }
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-10
    typedef long long LL;
    const int MAXN = 1e4 + 5;
    const int mod = 998244353;
     
    int a[MAXN];
    int main()
    {
        int t;
        cin >> t;
        while(t--) {
            memset(a,0,sizeof a);
            int n,x;
            cin >> n;
            for(int i = 1; i <= 4 * n; i++)
                cin >> a[i];
            sort(a + 1,a + 4 * n + 1);
            LL ans = a[1] * a[4 * n];
            int flag = 1;
            for(int i = 2;i <= 2 * n; i++) {
                if(i % 2 == 0 && a[i] != a[i - 1])
                    flag = 0;
                if (a[i] * a[4 * n + 1 - i] != ans)
                    flag = 0;
            }
            if(flag)
                puts("YES");
            else
                puts("NO");
        }
    }
     
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-10
    typedef long long LL;
    const int MAXN = 150000 + 5;
    const int mod = 998244353;
     
     
     
    LL gcd(LL a,LL b) {
        return b == 0 ? a : gcd(b,a % b);
    }
    LL num(LL x){
        if(x == 1)
            return 1;
     
        LL ans = 0;
        LL tmp = LL(sqrt(x * 1.0));
        if(tmp * tmp == x)
            ans++;
        if(ans == 0) {
            for (int i = 1; i <= LL(sqrt(x * 1.0)); i++) {
                if (x % i == 0)
                    ans += 2;
            }
        } else {
            for (int i = 1; i < LL(sqrt(x * 1.0)); i++) {
                if (x % i == 0)
                    ans += 2;
            }
        }
     
        return ans;
    }
    int main()
    {
        int n;
        cin >> n;
        LL x,y;
        scanf("%lld",&x);
        for(int i = 1; i < n; i++) {
            scanf("%lld",&y);
            if(x != 1)
                x = gcd(x,y);
        }
        printf("%lld
    ",num(x));
    }
     
     
    View Code

    D1 && D2.

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<list>
    #include<math.h>
    #include<vector>
    #include<stack>
    #include<string>
    #include<cstring>
    #include<string.h>
     
     
    using namespace std;
    typedef long long LL;
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    const int MAXN = 2e5 + 10;
    const double eps = 1e-8;
     
    char a[MAXN],b[MAXN];
    int c1[MAXN],c2[MAXN];
     
    int main()
    {
        scanf("%s %s",a + 1,b + 1);
        int lena = strlen(a + 1);
        int lenb = strlen(b + 1);
     
        int max_len = 0;
        int j = 1,i;
        for(i = 1; i <= lena; i++) {
            if(a[i] == b[j]) {
                c1[j] = i;
                j++;
                if(j == lenb + 1) break;
                continue;
            }
     
        }
        max_len = max(max_len, lena - i);
     
        j = lenb;
        for(i = lena; i >= 1; i--) {
            if(a[i] == b[j]) {
                c2[j] = i;
                j--;
                if(j == 0) break;
                continue;
            }
     
        }
        max_len = max(max_len,i - 1);
     
        for( i = 2; i <= lenb; i++) {
            max_len = max(max_len,c2[i] - c1[i - 1] - 1);
        }
        cout << max_len << endl;
    }
    View Code

    E.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-10
    typedef long long LL;
    const int MAXN = 150000 + 5;
    const int mod = 998244353;
     
    int main()
    {
        int vis[MAXN];
        int a[MAXN];
        int n;
        cin >> n;
        for(int i = 0; i < n; i++)
            scanf("%d",&a[i]);
        sort(a,a + n);
        memset(vis,0,sizeof vis);
        int ans = 0;
        int tmp1,tmp2,tmp3;
        for(int i = 0; i < n; i++)
        {
            tmp1 = a[i] - 1;
            tmp2 = a[i];
            tmp3 = a[i] + 1;
     
            if(tmp1 > 0 && vis[tmp1] == 0) {
                ans++;
                vis[tmp1] = 1;
                continue;
            }
     
            if(tmp2 > 0 && vis[tmp2] == 0)
            {
                ans++;
                vis[tmp2] = 1;
                continue;
            }
     
            if(tmp3 > 0 && vis[tmp3] == 0)
            {
                ans++;
                vis[tmp3] = 1;
                continue;
            }
        }
     
        cout << ans <<endl;
    }
    View Code

    F1.

    F2.

    Codeforces Round #580 (Div. 2)

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e3 + 5;
    const int mod = 998244353;
     
    map<int,int>mpa;
    map<int,int>mpb;
    int a[MAXN],b[MAXN];
    int main()
    {
        int n;
        cin >> n;;
        for(int i = 0; i < n; i++)
        {
            cin >> a[i];
            mpa[a[i]] = 1;
        }
        int m;
        cin >> m;
        for(int i = 0; i < m; i++)
        {
            cin >> b[i];
            mpb[b[i]] = 1;
        }
        for(int i = 0; i < n; i++)
        {
            for(int j = 0 ; j < m; j++)
            {
                int t = a[i] + b[j];
                if(mpa[t] == 0 && mpb[t] == 0)
                {
                    printf("%d %d
    ",a[i],b[j]);
                    return 0;
                }
            }
        }
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e5 + 5;
    const int mod = 998244353;
    int a[MAXN];
    int main()
    {
        int n;
        cin >> n;
        int num0 = 0;
        LL sum = 0;
        for(int i = 0 ; i < n; i++)
        {
            cin >> a[i];
            if(a[i] > 1)
            {
                sum += (a[i] - 1);
                a[i] = 1;
            }
            if(a[i] < -1)
            {
                sum += (-1 - a[i]);
                a[i] = -1;
            }
            if(a[i] == 0)
                num0 ++;
        }
     
        int ji = 1;
        for(int i = 0; i < n; i++)
        {
            if(a[i] != 0)
                ji *= a[i];
        }
     
        if(num0 > 0)
        {
            printf("%lld
    ",sum + num0);
        } else {
            if(ji == 1)
                printf("%lld
    ",sum);
            else
                printf("%lld
    ",sum + 2LL);
        }
    }
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int mod = 998244353;
    int a[MAXN];
    int main()
    {
        int n;
        cin >> n;
        if(n % 2 == 0) {
            printf("NO
    ");
        } else {
            int num = 1;
            for(int i = 1; i <= n; i++) {
                if(i % 2 == 1) {
                    a[i] = num++;
                    a[i + n]  = num++;
                } else {
                    a[i + n] = num++;
                    a[i] = num++;
                }
            }
            puts("YES");
            for(int i = 1; i <= 2 * n; i++)
                printf("%d%c",a[i],i == 2 * n ? '
    ' : ' ');
        }
    }
    View Code

    D.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e3 + 5;
    const int mod = 998244353;
    LL a[MAXN];
    vector<int>v[MAXN];
    int mp[MAXN][MAXN];
    int g[MAXN][MAXN];
    int floyd(int n) {
        int res = MAXN;
        for (int k = 1; k <= n; k++)
        {
            for (int i = 1; i < k; i++)
                for (int j = i + 1; j < k; j++)
                    res = min(res, g[i][j] + mp[i][k] + mp[k][j]);
            for (int i = 1; i <= n; i++)
                for (int j = 1; j <= n; j++)
                    g[i][j] = g[j][i] = min(g[i][j], g[i][k] + g[k][j]);
        }
        return res;
    }
     
    int main() {
        int n;
        cin >> n;
        int num = 1;
        for (int i = 0; i < n; i++) {
            LL x;
            cin >> x;
            if (x != 0 && num < 200) {
                a[num++] = x;
            }
        }
        if (num > 128)
            printf("3
    ");
        else {
    //        debug(num);
            num--;
            for (int i = 1; i <= num; i++)
                for (int j = 1; j <= num; j++)
                    if (i != j)
                        mp[i][j] = g[i][j] = MAXN;
     
            for (int i = 1; i <= num; i++) {
                for (int j = i + 1; j <= num; j++) {
                    if ((a[i] & a[j]) != 0) {
                        mp[i][j] = 1;
                        mp[j][i] = 1;
                        g[i][j] = g[j][i] = 1;
    //                    printf("%d %d
    ", i, j);
                    }
                }
            }
            int ans = floyd(num);
            if(ans == MAXN)
                cout << -1 << endl;
            else
                cout << ans << endl;
        }
    }
    View Code

    E.

    留坑

    F.

    留坑

    Codeforces Round #581 (Div. 2)

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e3 + 5;
    const int mod = 998244353;
     
    int main()
    {
        char s[MAXN];
        scanf("%s",s);
        int len = strlen(s);
     
        int ans =0 ;
        for(int i = 1; i < len; i++)
            if(s[i] == '1')
                ans++;
     
        char a[MAXN];
        for(int i = 0; i < len; i++)
            a[i] = s[len - 1 - i];
    //    cout << a << endl;
     
        int tmp = 0;
        for(int i = 0; i < len; i++)
        {
            if(i % 2 == 0)
                tmp += 1;
        }
        if(ans == 0 && len % 2 == 1)
            tmp --;
        cout << tmp << endl;
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e3 + 5;
    const int mod = 998244353;
    int main()
    {
        int n,l,r;
        cin >> n >> l >> r;
        LL minn = n - l + 1;
        LL num = 2;
        for(int i = 0; i < l - 1; i++) {
            minn += num;
            num *= 2;
        }
        LL maxx = 1;
        num = 2;
        for(int i = 0; i < r - 1; i++)
        {
            maxx += num;
            num *= 2;
        }
        num /= 2;
        maxx += (n - r) * num;
        printf("%lld %lld
    ",minn,maxx);
     
     
    }
    View Code

    C.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 1e2 + 5;
    const int mod = 998244353;
     
    char s[MAXN][MAXN];
    int mp[MAXN][MAXN];
     
    const int N = 1e6 + 10;
    struct node{
        int v,k;
    }stk[N];
    int n;
    void floyd() {
        for (int k = 1; k <= n; k++)
            for (int i = 1; i <= n; i++)
                for (int j = 1; j <= n; j++)
                    mp[i][j] = min(mp[i][j], mp[i][k] + mp[k][j]);
    }
     
    int x[N];
    int main()
    {
        cin >> n;
        for(int i = 1; i <= n; i++)
            scanf("%s",s[i] + 1);
     
        for(int i = 1;i <= n; i++)
        {
            for(int j =1; j <= n; j++)
            {
                if(s[i][j] == '1')
                    mp[i][j] = 1;
                else if(i == j)
                    mp[i][j] = 0;
                else
                    mp[i][j] = INF;
            }
        }
        floyd();
        int m;
        cin >> m;
        for(int i = 0; i < m; i++)
        {
            scanf("%d",&x[i]);
        }
        int top = 0;
        stk[top++] = {x[0],0};
        stk[top++] = {x[1],1};
        for(int i =2; i < m; i++)
        {
            while(mp[stk[top - 2].v][x[i]] == i - stk[top - 2].k)
                --top;
            stk[top++] = node{x[i],i};
        }
        cout << top << endl;
        printf("%d",stk[0].v);
        for(int i = 1; i < top; i++)
            printf(" %d",stk[i].v);
        cout << endl;
    }
    View Code

    D1 && D2.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int MAXN = 2e5 + 5;
    const int maxn = 2e5 + 10;
    const int mod = 998244353;
     
    char a[MAXN];
    int main()
    {
        scanf("%s",a + 1);
        int len = strlen(a + 1);
        int cnt = 0;
        for(int i = len; i >= 1; i--) {
            if(a[i] == '0')
                cnt++;
            else {
                if(cnt == 0)
                    a[i] = '0';
                else
                    cnt --;
            }
        }
        printf("%s",a + 1);
    }
    View Code

     E.  ********

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 2e3 + 5;
    const int mod = 998244853;
    
    int C[maxn * 2][maxn * 2], dp[maxn][maxn], g[maxn][maxn];
    int n, m;
    int main() {
        cin >> n >> m;
        for(int i = 0; i <= n + m; ++i) {
            C[i][0] = 1;
            for(int j = 1; j <= i; ++j)
                C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % mod;
        }
        for(int i = 1; i <= m; ++i)
            g[0][i] = 1;
        for(int i = 1; i <= n; ++i) {
            for(int j = i; j <= m; ++j)
                g[i][j] = (g[i - 1][j] + g[i][j - 1]) % mod;
        }
        for(int i = 1; i <= n; ++i) {
            dp[i][0] = i;
            for(int j = 1; j <= m ; ++j) {
                dp[i][j] = (C[i + j - 1][j] + dp[i - 1][j]) % mod;
                dp[i][j] = (dp[i][j] + dp[i][j - 1]) % mod;
                dp[i][j] = (dp[i][j] + (g[i][j - 1] - C[i + j - 1][i] + mod) % mod) % mod;
            }
        }
        printf("%d
    ",dp[n][m]);
    }
    View Code

    Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)

    A.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 1e5 + 5;
    const int mod = 998244353;
    int f[maxn];
    int main()
    {
        int t;
        cin >> t;
        while (t--) {
            int a,b,n;
            cin >> a >> b >> n;
            int tmp = a xor b;
            if(n % 3 == 0)
                cout << a << endl;
            else if(n % 3 == 1)
                cout << b << endl;
            else cout << tmp << endl;
     
            }
    }
    View Code

    B.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 2e3 + 5;
    const int mod = 998244353;
     
    int a[maxn];
    map<int,int>mp;
    int main() {
        int n;
        cin >> n;
        for(int i = 0; i < n; i++) cin >> a[i];
        int ans = 0;
        for(int i = 0; i < n; i++) {
            mp[a[i]]++;
            if(mp[a[i]] > 1) break;
            int cnt = i + 1;
            map<int,int>w1;
            for(int j = n - 1; j > i; j--) {
                w1[a[j]] ++;
                if(mp[a[j]] + w1[a[j]] > 1) break;
                cnt++;
            }
    //        printf("%d %d
    ",i,cnt);
            ans = max(ans,cnt);
        }
        map<int,int>w1;
        int cnt = 0;
        for(int j = n - 1; j >= 0; j--) {
            w1[a[j]]++;
            if(w1[a[j]] > 1) break;
            cnt++;
        }
        ans = max(ans,cnt);
        cout << n - ans << endl;
    }
    View Code

    C.

    卡诺图,每行每列的异或后的值一样

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 2e3 + 5;
    const int mod = 998244353;
     
    int a[maxn][maxn];
    int main()
    {
        int n;
        cin >> n;
        int cnt = 0;
        for(int j = 1; j <= n - 1; j += 2) {
            for(int i = 1; i <= n - 1; i += 2) {
                a[i][j] = cnt++;
                a[i][j + 1] = cnt++;
                a[i + 1][j] = cnt++;
                a[i + 1][j + 1] = cnt++;
            }
        }
     
        for(int i = 1; i<= n; i++)
            for(int j = 1; j <= n; j++)
                printf("%d%c",a[i][j],j == n ? '
    ' : ' ');
    }
    View Code

    D.

    题意:一个排列,给出当前数之前比其小的数的和,求排列

    思路:最后一个数所涵盖的之和肯定是一串连续的 1 - k 的和,二分求其值,树状数组中将其值归零,求倒数第二个的连续之和

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<stack>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<string.h>
    #include<vector>
    #include<deque>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f3f3f3f
    #define eps 1e-4
    #define bug printf("*********
    ")
    #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    typedef long long LL;
    typedef long long ll;
    const int maxn = 2e5 + 5;
    const int mod = 998244353;
     
    int lowbit(int x) {
        return x & -x;
    }
    LL c[maxn];
    int n;
    void add(int x,int y) {
        for(int i = x; i <= n; i += lowbit(i))
            c[i] += y;
    }
    LL  getsum(int x) {
        LL ans = 0;
        for(int i = x; i; i -= lowbit(i))
                ans += c[i];
        return ans;
    }
     
    LL s[maxn];
    int ans[maxn];
    int main()
    {
        memset(c,0,sizeof c);
        cin >> n;
        for (int i = 1; i <= n; i++)
            scanf("%lld",&s[i]);
        for (int i = 1; i <= n; i++)
            add(i,i);
        for(int i = n; i >= 1; i--) {
            int l = 1,r = n;
            while(r > l) {
                int mid = (l + r + 1) >> 1;
                if(getsum(mid - 1) > s[i])
                    r = mid - 1;
                else
                    l = mid;
            }
            ans[i] = l;
            add(ans[i],-ans[i]);
        }
        for(int i = 1; i <= n; i++) printf("%d%c",ans[i],i == n ? '
    ' : ' ');
    }
    View Code

    EFGH

    先留坑

  • 相关阅读:
    Mysql Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode
    vs2012+ winform+.net4.0发布如何在xp上运行
    ubuntu下手动配置apache2.4.12
    mysql连接错误解决(ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled))
    位运算取绝对值
    位运算两数交换
    java mysql prepareStatement模糊查询like使用注意
    idea14远程调试linux下的tomcat
    web视频播放插件:Video For Everybody
    cmd杀死进程
  • 原文地址:https://www.cnblogs.com/smallhester/p/11394260.html
Copyright © 2020-2023  润新知