• zstu月赛 招生


    题目

     浙江理工大学招生,一开始有0名学生报考,现在有如下几种情况;

    1.增加一名报考学生,报考学生成绩为x;

    2.一名成绩为x的学生放弃报考。

    3.从现在报考的学生来看,老师想知道如果要招生至少x名学生,需要将分数线最高设置为多少;

    4.从现在报考的学生来看,如果分数线设置为x,能有几名学生被录取。

    第一行先输入一个n,表示有n次操作或查询;

    接下来n行,每行输入两个整数opt和x(用空格隔开):

    如果opt为1,则增加一名报考学生,报考学生成绩为x;

    如果opt为2,则表示一名成绩为x的学生放弃报考。

    如果opt为3,从现在报考的学生来看,老师想知道如果要招生至少x名学生,需要将分数线最高设置为多少,输出最高分数线。

    如果opt为4,从现在报考的学生来看,如果分数线设置为x,能有几名学生被录取,输出录取人数。

    对于每个输出占一行。

    n不超过50000;0<=x<=1000000;1<=k<=现在的学生数。

    Input

    第一行输入一个n,接下来n行,每行输出两个整数opt,x,用空格隔开

    Output

    对于每次输出, 输出一个整数占一行

    据说正解是线段树平衡树Treap什么之类的,不懂不懂

    下面代码:

    opt==3部分 可以直接访问v[num]

     1 vector<int>v; 
     2 vector<int>::iterator it; 
     3   
     4 int main() 
     5 { 
     6     int n,x,opt; 
     7     cin>>n; 
     8     int cnt=0; 
     9     while(n--) 
    10     { 
    11         scanf("%d%d",&opt,&x); 
    12         if(opt==1) 
    13         { 
    14             cnt++; 
    15             v.insert(lower_bound(v.begin(),v.end(),x) ,x); 
    16             /*for(it=v.begin();it!=v.end();it++) 
    17             { 
    18                 cout<<*it<<' '; 
    19             }*/
    20         } 
    21         else if(opt==2) 
    22         { 
    23             cnt--; 
    24             v.erase( lower_bound(v.begin(),v.end(),x) ); 
    25             /*for(it=v.begin();it!=v.end();it++) 
    26             { 
    27                 cout<<*it<<' '; 
    28             }*/
    29         } 
    30         else if(opt==3) 
    31         { 
    32             int num=cnt-x; 
    33             for(it=v.begin();it!=v.end();it++) 
    34             { 
    35                 if(num==0) 
    36                 { 
    37                     cout<<*it<<endl; 
    38                     break; 
    39                 }    
    40                 num--; 
    41             } 
    42         } 
    43         else if(opt==4) 
    44         { 
    45             int cant; 
    46             cant=lower_bound(v.begin(),v.end(),x)-v.begin(); 
    47             cout<<cnt-cant<<endl; 
    48         } 
    49     }    
    50 } 
    51 /************************************************************** 
    52     Problem: 4405 
    53     User: ys1810z17 
    54     Language: C++ 
    55     Result: Accepted 
    56     Time:664 ms 
    57     Memory:1464 kb 
    58 ****************************************************************/
    vector
  • 相关阅读:
    ubuntu 升级到5.1kernel,打开bbr
    python json.loads json.dumps的区别
    centos7 install vim8
    Linux的Network Tunnel技术
    Linux内核网络数据包处理流程
    CAD2010 破解方法
    [原创]MSP430FR4133练习(一):GPIO输入电平状态判断
    [原创] Xinput_1.3.DLL / MSVCR100.DLL文件缺失解决办法
    [原创]找不到mswinsck.ocx的解决办法
    Windows7系统推荐
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9902156.html
Copyright © 2020-2023  润新知