• Codeforces Round #575 (Div. 3)


    A. Three Piles of Candies

    一定数量n糖,a和b两个人分,且a和b分到的糖的数目应该相等。

    直接 n/2 输出

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            long long  a,b,c;
            scanf("%lld%lld%lld",&a,&b,&c);
            printf("%lld
    ",(a+b+c)/2); 
        }
     } 
    View Code

    B. Odd Sum Segments

    题意:给一个含n个数的数组 一个k 要求问能否将数组分成k段 且使每一段和和都为奇数。

    分析:奇数加偶数等于奇数,所以我们只需要统计奇数的个数并记录奇数的位置使得每一段区间都有奇数个奇数和任意个偶数。

    当奇数数量 s==k时 一个区间恰好有一个奇数。当奇数数量s>k 且 (s-k)%2==0时 代表多出来偶数个奇数 偶数个奇数相加还是偶数

    这样我们就可以 把前k-1奇数分别放到前k-1个区间内 并将剩下的奇数放到一个区间 这样每个区间的元素和都是奇数

    #include <iostream>
    #include <algorithm>
    const int N =2e5+10;
    int a[N],count[N];
    int t,n,k;
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            int top=0;
            long long  sum=0;
            scanf("%d%d",&n,&k);
            for(int i=1;i<=n;i++)
            {
            scanf("%d",&a[i]);
            if(a[i]%2!=0)
            count[++top]=i;
            }
            if(top>=k&&(top-k)%2==0)
            {
                printf("YES
    ");
                for(int i=1;i<k;i++)
                printf("%d ",count[i]);
                printf("%d",n);
                printf("
    ");
            } 
            else
            printf("NO
    ");
        
        
        }
     } 
    View Code
    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int N=1e5+10,INF=1e5;
    int t;
    
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            int mxy=INF,mnx=-INF,mny=-INF,mxx=INF;
            int n;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                int x,y,c,d,e,f;
                scanf("%d%d%d%d%d%d",&x,&y,&c,&d,&e,&f);
                if(!c) mnx=max(mnx,x);
                if(!d) mxy=min(mxy,y);
                if(!e) mxx=min(x,mxx);
                if(!f) mny=max(y,mny);
            }
            if(mxx>=mnx&&mxy>=mny)
            printf("1 %d %d
    ",mnx,mny);
            else
            printf("0
    ");
        }
    }
    View Code

    C. Robot Breakout

    题意:给定n个机器人  他们共有四个移动方向,每个机器人的移动方向数量不相等。给你n个机器人,并给出该机器人可以移动的方向,问所有机器人能否走到一个点上。

    分析:我们先设四个方向的边界,枚举每个机器人,通过它可以移动的方向来更新我们的边界,最后判断四个边界能否构成矩形。

  • 相关阅读:
    HTTP/2的优先级
    JavaScript 日期权威指南
    岂曰无衣与子同袍
    Android项目中实现native调用
    关键渲染路径
    @ModelAttribute使用详解
    @SessionAttribute使用详解
    @ControllerAdvice 拦截异常并统一处理
    js获取文件MD5值
    Mybatis分页插件PageHelper的配置和使用方法
  • 原文地址:https://www.cnblogs.com/daoyuan/p/12426596.html
Copyright © 2020-2023  润新知