zoukankan      html  css  js  c++  java
  • CF-378 B.Semifinals

    题目意思:有n个参赛者,他们都需要参加两场半决赛。第一场半决赛的成绩依次是a1a2, ..., an,分别对应第1~第n个人的成绩。第二场则是b1b2, ..., bn。其中这两个序列都是以递增方式排列的。需要从中找出有机会跻身于总决赛的人(标记为1)包括成绩排名前k人(对应成绩是a1,b1;a2,b2,...,ak,bk)和处在两场半决赛的总成绩处在n-2k排名的人。至于k是不确定的,只知道范围是:0 ≤ 2k ≤ n

    做法:

    似乎显然可以证明当k=0时所能上场的人就是确定了右边界。然后当k取最大值时也就不怎么需要从k名开外的地方选人了,两个边界一叠加,答案就出来了。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define maxn 100010
    using namespace std;
    int a[maxn],b[maxn],w[maxn],q[maxn],n;
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&a[i],&b[i]);
        int i,j,z;
        i=j=z=1;
        while(z<=n){
            if(a[i]<=b[j]){
                q[i]=1;
                i++;z++;
            }
            else {
                w[j]=1;
                j++;z++;
            }
        }
        for(int i=1;i<=n/2;i++)printf("1");
        for(int i=n/2+1;i<=n;i++)printf("%d",q[i]);
        puts("");
        for(int i=1;i<=n/2;i++)printf("1");
        for(int i=n/2+1;i<=n;i++)printf("%d",w[i]);
        puts("");
        return 0;
    }
  • 相关阅读:
    MVC设计模式和三层架构
    Servlet使用反射机制
    JSP的工作原理
    Servlet相关的几种乱码
    Word发送至博客园
    使用为知笔记上传到博客园
    idea乱码问题
    Servlet快速入门及运行流程
    【转】SQL注入及mybatis中#{}和${}的区别
    我的这个时代与你们
  • 原文地址:https://www.cnblogs.com/thmyl/p/11734919.html
Copyright © 2011-2022 走看看