zoukankan      html  css  js  c++  java
  • 2019.7.9

    2019.7.9

    cf #572 div2 A

    给你一个只有0和1的字符串,如果0和1的数目不相等,那么就是good,求用最少次数拆分字符串,使得他所有子串都是good。

    思路:如果字符串是奇数位的,显然该字符串是good,不用拆分。如果是偶数位,先判断字符串是否是good,如果不是good,那就把第一个字符拆出来。

    #include <cstdio>
    
    int main() {
        int n;
        char a[110];
        while(~scanf("%d %s", &n, a)) {
            int cnt = 0;
            if(n % 2) printf("1
    %s
    ", a);
            else {
                for(int i = 0; i < n; i++) {
                    if(a[i] == '0') cnt++;
                }
                if(cnt != n / 2) printf("1
    %s
    ", a);
                else {
                    printf("2
    %c ", a[0]);
                    for(int i = 1; i < n; i++) printf("%c", a[i]);
                    printf("
    ");
                }
            }
        }
        return 0;
    }
    

    cf #572 div2 B

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int main() {
        int n;
        while(~scanf("%d", &n)) {
            int a[100010];
            for(int i = 0; i < n; i++) scanf("%d", &a[i]);
            sort(a,a + n);
            if(a[n-1] >= a[n - 2] + a[n - 3]) printf("NO
    ");
            else {
                printf("YES
    ");
                for(int i = 0; i < n; i += 2) printf("%d ", a[i]);
                for(int i = n - 1 - (n%2); i >= 0; i -= 2) printf("%d ", a[i]);
                printf("
    ");
            }
        }
        return 0;
    }
    

    cf #572 div2 C

    https://www.cnblogs.com/wyboooo/p/11153973.html

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int main() {
        int n;
        while(~scanf("%d", &n)) {
            int a[100010];
            a[0] = 0;
            for(int i = 1; i <= n; i++) {
                scanf("%d", &a[i]);
                a[i] += a[i-1];
            }
            int q;
            scanf("%d", &q);
            while(q--) {
                int l, r;
                scanf("%d %d", &l, &r);
                printf("%d
    ", (a[r] - a[l-1]) / 10);
            }
        }
        return 0;
    }
    

    cf #572 div2 D1

    判断是否存在度为二的节点,如果有就NO,否则YES。

    题意:能否通过改变两个叶子之间所有路径的值,使得每条路径可以任意改变其值。如果有度为二的节点,那么就有两条边的值是一定相等的。(注:题目中只有4567是叶子)

    #include <cstdio>
    #include <cstring>
    int main() {
        int n;
        while(~scanf("%d", &n)) {
            int a[100010], l, r, flag = 0;
            memset(a, 0, sizeof(a));
            for(int i = 0; i < n - 1; i++) {
                scanf("%d %d", &l, &r);
                a[l]++, a[r]++;
            }
            for(int i = 0; i < 100010; i++) {
                if(a[i] == 2) {
                    flag = 1;
                    break;
                }
            }
            if(flag) printf("NO
    ");
            else printf("YES
    ");
        }
        return 0;
    }
    
    

    cf #572 div2 E

    https://www.cnblogs.com/wyboooo/p/11155925.html

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    typedef long long LL;
    using namespace std;
    
    int a[300010];
    LL c[300010];
    
    int main() {
        c[0] = 0;
        for(int i = 1; i < 300010; i++) c[i] = c[i-1] + i;
        LL n, p, k;
        while(~scanf("%lld %lld %lld", &n, &p, &k)) {
            memset(a, 0, sizeof(a));
            LL ans = 0, b;
            for(int i = 0; i < n; i++) {
                scanf("%lld", &b);
                b = (b % p * b % p * b % p * b % p) + p - ((b % p) * (k % p) ) % p;
                b = b % p;
                a[i] = b;
            }
            sort(a, a+n);
            a[n] = p;
            int cnt = 1;
            for(int i = 0; i < n; i++) {
                if(a[i] == a[i+1]) {
                    cnt++;
                }
                else {
                    ans += c[cnt-1];
                    cnt = 1;
                }
            }
            printf("%lld
    ", ans);
        }
        return 0;
    }
    
    

    cf #571 div2 A

    水题

    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int main(){
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        if(min(b,c)>=a) printf("Yes
    ");
        else printf("No
    ");
        return 0;
    }
    

    cf #571 div2 D

    注意9.000只能是9,而不能是10

    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int main(){
        int n;
        while(~scanf("%d", &n)) {
            double a[100010];
            long long ans = 0;
            for(int i = 0; i < n; i++) {
                scanf("%lf", &a[i]);
                ans += (int)a[i];
            }
            //printf("ans=%d
    ",ans);
            if(ans >= 0) {
                for(int i = 0; i < n; i++) {
                    if(ans > 0 && a[i] <= 0 &&( (long long)(a[i] * 100000) % 100000 )!= 0) {
                        printf("%d
    ",(int) a[i] - 1);
                        ans--;
                    }
                    else printf("%d
    ",(int)a[i]);
                }
            }
            else {
                for(int i = 0; i < n; i++) {
                    if(ans < 0 && a[i] >= 0 &&( (long long)(a[i] * 100000) % 100000 )!= 0) {
                        printf("%d
    ", (int)a[i] + 1);
                        ans++;
                    }
                    else printf("%d
    ",(int)a[i]);
                }
            }
        }
        return 0;
    }
    
  • 相关阅读:
    odoo11 外部数据导入方法2
    odoo 11 实现多个字段对应一个查询参数的查询
    ionic 访问odoo11之具体业务类api接口
    ionic访问odoo 11接口
    odoo 11导入外部数据过程记录
    程序发送邮件的思考
    Topshelf的Ioc实现
    查看MS Sqlserver文件大小语句
    TopShelf 自动配置Service测试
    odoo11 添加自定义模块报错问题
  • 原文地址:https://www.cnblogs.com/fanshhh/p/11163791.html
Copyright © 2011-2022 走看看