| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:求教各位大侠2005年百度之星初赛第二题(该题该如何理解)
只看楼主 加入收藏
wangxiaosu
Rank: 1
来 自:cumt
等 级:新手上路
帖 子:19
专家分:1
注 册:2010-11-29
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
求教各位大侠2005年百度之星初赛第二题(该题该如何理解)
2005年百度之星初赛第二题:


题目描述:请编写程序,找出下面 “ 输入数据及格式 ” 中所描述的输入数据文件中最大重叠区间的大小。

对一个正整数 n ,如果 n 在数据文件中某行的两个正整数(假设为 A 和 B )之间,即 A<=n<=B 或 A>=n>=B ,则 n 属于该行;如果 n 同时属于行 i 和 j ,则 i 和 j 有重叠区间;重叠区间的大小是同时属于行 i 和 j 的整数个数。
例如,行( 10 20 )和( 12 25 )的重叠区间为 [12 20] ,其大小为 9 ;行( 20 10 )和( 12 18 )的重叠区间为 [10 12] ,其大小为 3 ;行 (20 10) 和( 20 30 )的重叠区间大小为 1 。

输入数据:程序读入已被命名为 input.txt 的输入数据文本文件,该文件的行数在 1 到 1,000,000 之间,每行有用一个空格分隔的 2 个正整数,这 2 个正整数的大小次序随机,每个数都在 1 和 2^32-1 之间。(为便于调试,您可下载测试 input.txt 文件,实际运行时我们会使用不同内容的输入文件。)

输出数据:在标准输出上打印出输入数据文件中最大重叠区间的大小,如果所有行都没有重叠区间,则输出 0 。
搜索更多相关主题的帖子: 百度 初赛 
2010-11-29 23:27
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
收藏
得分:10 
#include<iostream>
#include<fstream>
using namespace std;
unsigned m,n,p,q;
class Bai {
public:
    unsigned m,n,p,q,tos;
    Bai():tos(1){}
    void set(unsigned int mm,unsigned int nn,unsigned int pp,unsigned int qq){
        m=mm;n=nn;p=pp;q=qq;}
inline void exchange(unsigned int a,unsigned int b)
{}
void jd();
};
void Bai::jd(){
    unsigned int temp;
if(m>n) {temp=m;m=n;n=temp;}
if(p>q) {temp=p;p=q;q=temp;}
if(m>p) {temp=m;m=p;p=temp;}
if(n>q) {temp=n;n=q;q=temp;}
   
    if(p<=n) m=p;
    else tos=0;
}
int main() {
    unsigned int m,n,p,q;
    Bai die;
    ifstream in("input.txt");
    in>>m>>n>>p>>q;
    die.set(m,n,p,q);
    die.jd();
    if(die.tos==0) {cout<<0<<endl;return 0;}
    for(;in>>p>>q;) {
    die.p=p;die.q=q;
    die.jd();
        if(die.tos==0) break;
    }
    cout<<(die.tos ? die.n-die.m+1 :0)<<"\n";
    return 0;
}
2010-11-30 20:06
wangxiaosu
Rank: 1
来 自:cumt
等 级:新手上路
帖 子:19
专家分:1
注 册:2010-11-29
收藏
得分:0 
回复 2楼 kittel
谢谢,非常棒
2010-11-30 22:45
wangxiaosu
Rank: 1
来 自:cumt
等 级:新手上路
帖 子:19
专家分:1
注 册:2010-11-29
收藏
得分:0 
回复 2楼 kittel
请问该题的意思是怎样的,就是该如何分析该题,谢谢
2010-12-02 22:57
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
收藏
得分:0 
回复 4楼 wangxiaosu
这题目就是求若干个区间的交集,但每个区间的两个数不是按顺序排的。
思路是先建个类,里面有四个数据成员,其实就是求两个区间的交集,最后把求的结果赋给m,n(m <n)
然后再读入下一行数据,赋给p,q,从而对新的m,n,p,q再用一次求交集的函数jd,把结果赋给m,n(m <n)
再读入下一行数据,再求交集,。。。
关于求交集的函数jd的实现,则是个数学问题,你想想就知道了
2010-12-03 12:04
wangxiaosu
Rank: 1
来 自:cumt
等 级:新手上路
帖 子:19
专家分:1
注 册:2010-11-29
收藏
得分:0 
回复 5楼 kittel
谢谢,我再思考一下,有疑问了,还得请教你
2010-12-04 21:57
快速回复:求教各位大侠2005年百度之星初赛第二题(该题该如何理解)
数据加载中...
 
   



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

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