| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:谁帮我按我的想法把程序写出来
取消只看楼主 加入收藏
xdj2011
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-11-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
谁帮我按我的想法把程序写出来
题目
Description
N个人做一个游戏,游戏中每个人说了一句话(可能是真的也可能是假的)
第i个人说:“N个人中有至少有ai个,至多有bi个人说的是真话!”(i = 1, 2, 3…..n)你能推断出最多能有多少个人说的是真话吗?
1 <= N <= 100000;
0 <= ai<=bi<=1000000000;
 
Input
第一行为一个整数T,代表测试数据的组数;
每组数据以n开头,接下来有n行,每行两个整数ai,bi(代表第i个人说的);

Output
输出占一行。如果原问题有解,输出最多能有多少个人说的是真话;否则输出-1.
 
Sample Input
2
3
0 0
1 1
2 2
3
2 5
3 5
0 3

Sample Output
1
3

我的想法。
1建立一个2行n-1列的数组,第(0,i)个元素存放第i+1个人的至少值,第(1,i)个元素存放第i+1个人的之多值
2对这个数组以第一行的值从大到小进行排序,当(0,i)个元素的位置变化时,第(1,i)个元素也要变化,保持在前者下方对应。
3对第一行从第一个元素到最后一个进行扫描如果有(0,i)元素等于(0,i+1)元素,且(1,i)大于(1,i+1),则交换(1,i)和(1,i+1)的位置
4设i=0如(0,i)小于等于从(1,i)到(1,n-1)之间的最小值则人数为n-i,如不满足则,i=i+1,继续第四步,当i=n时则没有输出-1。
搜索更多相关主题的帖子: 游戏 
2010-11-29 21:04
快速回复:谁帮我按我的想法把程序写出来
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036657 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved