您的位置:首页 > 产品设计 > UI/UE

day4 CodeForces 589F Gourmet and Banquet

2016-08-02 23:05 134 查看
题目是要求每道菜都能吃的最大区间,首先可以将区间按照右端点排序,可以让当前区间队后面区间的影响最低,之后从最大区间往下扫找到符合的答案就可以了

#include"iostream"
#include"memory.h"
#include"algorithm"
using namespace std;
int n;
struct node{
int l,r;
};
node d[10005];
int v[10005];
int cmp(const node& a,const node& b)
{
return (a.r<b.r)||(a.r==b.r&&a.l<b.l);
}

int test(int x)
{

memset(v,0,sizeof(v));
for(int i=1;i<=n;i++)
{
int sum=0;
for(int j=d[i].l+1;j<=d[i].r;j++)
if(!v[j])
{
v[j]=1;
sum++;
if(sum==x) break;
}
if(sum<x) return 0;
}
return 1;
}

int main()
{

cin>>n;
for(int i=1;i<=n;i++) cin>>d[i].l>>d[i].r;
//for(int i=0;i<n;i++) cout<<d[i].l<<d[i].r<<endl;
sort(d+1,d+n+1,cmp);
//for(int i=0;i<n;i++) cout<<d[i].l<<d[i].r<<endl;
int hi,lo,mid;
lo=1;
hi=10000+1;

while(!test(hi)&&hi>0) hi--;

if(test(hi)) cout<<hi*n<<endl;
else cout<<0<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: