ZCMU—1494
来源:互联网 发布:英菲克网络机顶盒 编辑:程序博客网 时间:2024/06/06 13:07
1494: Problem F
Time Limit: 3 Sec Memory Limit: 128 MB[Submit][Status][Web Board]
Description
Zjvcc 的一年一度运动会开始了,Chieh 当然是做裁判了(像我这么厉害的人是吧~~~),
跑步比赛进入最后总决赛的阶段了,但是必须选择一部分人进总选赛,半决赛一共分为2场,每一场有n个人,所以一共有2n个人,现在要选择n个人进入决赛,这里有个特殊的规则纯在:
如果每场选择前k个人,(0<=2*k<=n,这是必然的是吧 :) everybody)则名额被拿走了2*k个,当然0<=2*k<=n,还剩下n-2*k,现在从最后的人中成绩最好的人进入决赛。
现在一共来了2*n个人,k还不知道,Chieh想知道谁可能有机会进决赛,谁必须提前。
Input
T 输入组数
n 每场的人数 1<=n<=10^5
n行包含 a b 表示人的跑步成绩(毫秒) 1<=a,b<=10^9,时间在半决赛递增,全部时间不同
Output
2行,表示每一场,1表示当前场当前的人可能进入总决赛,0则不能。
Sample Input
2
2
1 2
3 4
3
1 2
3 4
5 6
Sample Output
10
10
110
100
【分析】
题意就是问谁有可能进决赛,谁一定不可能进决赛,弄懂题目就好做了...而且给你时间的时候连排序都排好了...
能进决赛的情况有两种,一种是k=n,那么两组中前一半人都可以进入决赛,另外一个情况是时间排在前n位的人能进决赛...所以条件就是i<n/2 || a[i](b[i])<res res为2n个人中排第n+1位的时间,因为题目说明了不会有重复。。所以连判重都省了..不过感觉判重也影响不了什么~
【代码】
#include <stdio.h>#include <algorithm>using namespace std;int f[210000];int a[101000];int b[101000];int main(){int pp;scanf("%d",&pp);while (pp--){int n;scanf("%d",&n);for (int i=0;i<n;i++) scanf("%d%d",&a[i],&b[i]),f[2*i]=a[i],f[2*i+1]=b[i];sort(f,f+2*n);int res=f[n];for (int i=0;i<n;i++)if (i<n/2|| a[i]<res)printf("1");else printf("0");printf("\n");for (int i=0;i<n;i++)if (i<n/2|| b[i]<res)printf("1");else printf("0");printf("\n");}return 0;}
0 0
- ZCMU—1494
- ZCMU—1678
- ZCMU—1605
- ZCMU—1067
- ZCMU—1607
- ZCMU—1069
- ZCMU—1611
- ZCMU—1606
- ZCMU—1774
- ZCMU—1766
- ZCMU—1752
- ZCMU—1724
- ZCMU—1623
- ZCMU—1689
- ZCMU—1667
- ZCMU—1639
- ZCMU—1668
- ZCMU—1540
- Gartner2016年10大信息安全技术
- Android网络缓存,retrofit+okhttp
- Logstash -- Nginx 日志收集处理!
- dubbo的使用及配置
- 无法下载文件
- ZCMU—1494
- Android 发布Library到Jcenter
- HTML5 学习笔记1-全局属性
- 2016小小总结
- python--set集合下的函数
- [其他]专有名词中英对照总结
- vuex在ie9中提示错误
- 安卓音乐播放器歌词滚动显示
- SurfaceView常见崩溃的原因以及解决办法