设为首页 加入收藏

TOP

URAL 1303
2014-11-23 21:27:54 来源: 作者: 【 】 浏览:14
Tags:URAL 1303

题目大意:给出N个区间[Li,Ri](1<=i<=N),一个正整数M,求N个区间里,并区间包含[0,M]的区间的最小个数(无解时输出:No solution)。

Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u


数据规模:1<=M<=5000,-50000<=Li

理论基础:无。

题目分析:用贪心法。

首先,预处理,除去所有可以被别的区间包含的区间,可以证明,这样以后,得出的最优解不会劣于未处理前。

证明:假设原解用到区间[a,b]包含于[m,n]那么将原解中的区间替换为[m,n]答案不会变劣,证毕。

还可以证明,在所有能够覆盖左端点的区间中选择最靠近左端点的区间得到的解不会劣于原解。

证明:假设原解中有区间[a,b],现有区间[m,n],ab,所以必然也可以覆盖右端点,这样结果不劣于原解。所以命题得证。

贪心策略:每次找到一个区间后,将左端点更新为此区间的右端点,再进行寻找。直到找到的区间的右端点覆盖了M为止。

最后,我们来证明这样贪心得出的解必为最优解,假设不是最优解,那么必然有一个区间可以去除。

1.假设此区间为第一个区间,则根据贪心策略,有第二个区间不覆盖左端点(如果覆盖的话,选择的第一个区间即为此区间),去掉第一个区间后,则左端点没有被覆盖,所以此区间不可去除。

2.假设此区间为最后一个区间,同1,如果去除此区间后,则右端点未被覆盖,所以不可去除。

3.假设此区间为相邻的三个区间[a,b],[x,y],[m,n]中的[x,y]。则根据贪心策略存在d属于区间[x,y]有:a

综上所述,贪心策略所得解中所有区间都不可去除,所以必为最优解。得证。

代码如下:

#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
using namespace std;  
typedef double db;  
#define DBG 0   
#define maa (1<<31)   
#define mii ((1<<31)-1)   
#define ast(b) if(DBG && !(b)) { printf("%d!!|\n", __LINE__); while(1) getchar(); }  //调试   
#define dout DBG && cout << __LINE__ << ">>| "   
#define pr(x) #x"=" << (x) << " | "   
#define mk(x) DBG && cout << __LINE__ << "**| "#x << endl   
#define pra(arr, a, b)  if(DBG) {\   
    dout<<#arr"[] |" < inline bool updateMin(T& a, T b) { return a>b  a=b, true: false; }  
template inline bool updateMax(T& a, T b) { return a s[N+5],pre[N+5],ans[N+5];  
int m,cnt,np,na;  
ostream& operator << (ostream& out,pair  a)  
{  
    printf("%d %d\n",a.first,a.second);  
    return out;  
}  
bool fun(pair  a,pair  b)  
{  
    if(a.first!=b.first)return a.first=right)  
    {  
        printf("%d\n",na);  
        for(int i=0;i 
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇poj1190 生日蛋糕 dfs 下一篇1007. Maximum Subsequence Sum (..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)