• [TJOI2013]奖学金


    想一想我还是一个要写主席树的人

    然后我水了一道优队的题

    额……

    #include<bits/stdc++.h>
    #define re return
    #define ll long long 
    #define dec(i,l,r) for(int i=l;i>=r;--i)
    #define inc(i,l,r) for(int i=l;i<=r;++i)
    
    using namespace std;
    template<typename T>inline void rd(T&x)
    {
        char c;bool f=0;
        while((c=getchar())<'0'||c>'9')if(c=='-')f=1;
        x=c^48;
        while((c=getchar())>='0'&&c<='9')x=x*10+(c^48);
        if(f)x=-x;
    }
    const int maxn=2e5+5,maxm=1e6+5;
    int n,c,F,L[maxn],R[maxn];
    struct node
    {
        int grade,mon;
        bool operator<(node a)const 
        {
            re grade<a.grade;
        }
    }peo[maxn];    
    
    priority_queue<int>q,q1;
    int main()
    {
        rd(c);rd(n);rd(F);
        c/=2;
        inc(i,1,n)
        {
            rd(peo[i].grade);
            rd(peo[i].mon);
            L[i]=R[i]=-1;
        }
        
        sort(peo+1,peo+n+1);//按照成绩排序 
        
    
        int sum=0;
        inc(i,1,c)
        {
            sum+=peo[i].mon;
            q.push(peo[i].mon);
        }
        L[c+1]=sum;
        inc(i,c+1,n-c)
        {
            if(q.top()>peo[i].mon)
            {
                sum-=q.top();
                q.pop();
                q.push(peo[i].mon);
                sum+=peo[i].mon;
            } 
            L[i+1]=sum;
        }
        //从左向右扫一遍 
        
        sum=0;
        dec(i,n,n-c+1)
        {
            sum+=peo[i].mon;
            q1.push(peo[i].mon);
        }
        
        R[n-c]=sum;
        dec(i,n-c,c)
        {
            if(q1.top()>peo[i].mon)
            {
                sum-=q1.top();
                q1.pop();
                sum+=peo[i].mon;
                q1.push(peo[i].mon);
            }
            R[i-1]=sum;
        }
        //从右向左扫一遍 
        
        dec(i,n-c,c+1)
        if(R[i]+L[i]+peo[i].mon<=F)
        {
            printf("%d",peo[i].grade);
            re 0;
        }
        printf("-1");
        //计算 
        re 0;
    }
  • 相关阅读:
    mysql的cmd窗口查看数据库信息
    常见抓包工具
    图形数据库
    支付宝支撑双十一4200万次/秒的数据库请求峰值的技术实现
    处理tomcat内存溢出问题
    maven将jar包打如本地仓库命令
    fastJson去掉指定字段
    mybatis insert 返回主键
    maven引入源码
    mysql实现主从复制
  • 原文地址:https://www.cnblogs.com/lsyyy/p/11389916.html
Copyright © 2020-2023  润新知