zoukankan      html  css  js  c++  java
  • codeforces 589F:贪心

    每盘菜都要吃到,而且吃的时间是一样

    我们按照区间右端点从小到大排序,排在前面的是要优先满足的

    假如1号区间是[l,r],2号区间在r之后还有选择,所以1号先考虑

    二分一下答案判断一下就好

    #include"cstdio"
    #include"queue"
    #include"cmath"
    #include"stack"
    #include"iostream"
    #include"algorithm"
    #include"cstring"
    #include"queue"
    #include"map"
    #include"set"
    #include"vector"
    #define ll long long
    #define mems(a,b) memset(a,b,sizeof(a))
    
    using namespace std;
    const int MAXN = 205;
    const int MAXE = 10050;
    const int INF = 9999999;
    
    struct node{
        int l,r;
    }seg[MAXN];
    int vis[MAXE];
    int n;
    bool cmp(node a,node b){
        return a.r<b.r;
    }
    
    bool judge(int x){
        mems(vis,0);
        for(int i=0;i<n;i++){
            int cnt=0;
            for(int j=seg[i].l;j<seg[i].r;j++){
    
                if(cnt==x) break;
                if(!vis[j])  vis[j]=1,cnt++;
            }
            if(cnt<x) return false;
        }
        return true;
    }
    
    int main(){
        int low=0,high=INF,mid;
        scanf("%d",&n);
        for(int i=0;i<n;i++) scanf("%d%d",&seg[i].l,&seg[i].r);
        sort(seg,seg+n,cmp);
        int ans=0;
    
        while(low<=high){
            mid=(low+high)>>1;
            if(judge(mid)){
                ans=mid;
                low=mid+1;
            }
            else high=mid-1;
        }
        cout<<ans*n<<endl;
        return 0;
    }
  • 相关阅读:
    数据库的查询笔记
    数据库设计第3级的阶梯:构建表
    数据库使用学习笔记
    index()
    面向对象写法的拖拽
    js面向对象
    laytpl.js 模板使用记录
    面试总结
    JS的基础类型与引用类型
    jQuery两种扩展插件的方式
  • 原文地址:https://www.cnblogs.com/luxiaoming/p/5149583.html
Copyright © 2011-2022 走看看