题目链接:http://codeforces.com/problemset/problem/749/D

题意:就是类似竞拍,然后报价肯定要比上一个高,然后查询输入k个数表示那些人的竞拍无效,

输出最后谁竞拍到了花了多少钱。

比较简单的二分只要找到删除无效人后最大的两个人然后用第二大的那个人的最大竞拍价二分查找

最大的那个人中的竞拍价,然后的得到的第一个大于等于的值即可。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int M = 2e5 + 10;
vector<int>vc[M];
int cp[M] , vis[M] , change[M];
struct TnT {
int num , val;
}s[M];
bool cmp(TnT a , TnT b) {
return a.val > b.val;
}
int maxn , maxnnext , temp;
void find() {
int flag = 0;
for(int i = 0 ; i < temp ; i++) {
if(flag == 2) {
break;
}
if(!vis[s[i].num]) {
if(flag == 0) {
maxn = s[i].num;
flag++;
continue;
}
if(flag == 1) {
maxnnext = s[i].num;
flag++;
continue;
}
}
}
}
int binsearch(int pos , int val) {
int l = 0 , r = vc[pos].size() - 1;
while(l <= r) {
int mid = (l + r) >> 1;
if(vc[pos][mid] >= val)
r = mid - 1;
else {
l = mid + 1;
}
}
return r + 1;
}
int main() {
int n;
cin >> n;
for(int i = 0 ; i < n ; i++) {
int x , y;
cin >> x >> y;
vc[x].push_back(y);
cp[x] = y;
}
temp = 0;
for(int i = 1 ; i <= M - 10 ; i++) {
if(cp[i] != 0) {
s[temp].num = i;
s[temp++].val = cp[i];
}
}
sort(s , s + temp , cmp);
int q;
cin >> q;
while(q--) {
int k;
cin >> k;
for(int i = 1 ; i <= k ; i++) {
cin >> change[i];
vis[change[i]] = 1;
}
maxn = 0 , maxnnext = 0;
find();
int gg = cp[maxnnext];
int ans = binsearch(maxn , gg);
if(maxn == 0) {
cout << 0 << ' ' << 0 << endl;
}
else if(maxnnext == 0) {
cout << maxn << ' ' << vc[maxn][0] << endl;
}
else {
cout << maxn << ' ' << vc[maxn][ans] << endl;
}
for(int i = 1 ; i <= k ; i++) {
vis[change[i]] = 0;
change[i] = 0;
}
}
return 0;
}

codeforces 749D Leaving Auction(二分)的更多相关文章

  1. Codeforces 749D. Leaving Auction set+二分

    D. Leaving Auction time limit per test: 2 seconds memory limit per test:256 megabytes input:standard ...

  2. CodeForces 749D Leaving Auction

    二分查找,$set$. 对于某一次询问,如果把人删光了,那么输出$0$ $0$. 如果只剩下$1$个人,那么输出那个人喊的最低价格. 如果剩下的人数有大于等于两个, 这时最底下出现的情景必然是红色部分 ...

  3. cf 749D Leaving Auction

    Leaving Auction time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  4. CF749D Leaving Auction set排序查找

    CodeForces 749D. Leaving Auction 传送门 There are n people taking part in auction today. The rules of a ...

  5. Leaving Auction

    Leaving Auction 题目链接:http://codeforces.com/contest/749/problem/D 二分 本来以为是哪种神奇的数据结构,没想到sort+lower_bon ...

  6. [Codeforces 1199C]MP3(离散化+二分答案)

    [Codeforces 1199C]MP3(离散化+二分答案) 题面 给出一个长度为n的序列\(a_i\)和常数I,定义一次操作[l,r]可以把序列中<l的数全部变成l,>r的数全部变成r ...

  7. Codeforces 749D:Leaving Auction(set+二分)

    http://codeforces.com/contest/749/problem/D 题意:有几个人在拍卖场竞价,一共有n次喊价,有q个询问,每一个询问有一个num,接下来num个人从这次拍卖中除去 ...

  8. 【codeforces 749D】Leaving Auction

    [题目链接]:http://codeforces.com/problemset/problem/749/D [题意] 有n个人在竞价; 按照时间的顺序给出n次竞价(可能有一些人没有参加竞价); 每次竞 ...

  9. Leaving Auction CodeForces - 749D (set,贪心,模拟)

    大意: 若干个人参加拍卖会, 给定每个人出价顺序, 保证价格递增, q个询问, 给出k个人的编号, 求删除这k个人的所有出价后, 最终谁赢, 他最少出价多少. set维护每个人最后一次投票的时间, 每 ...

随机推荐

  1. Nginx配置安装(Mac)

    我用到的安装工具是:homebrew 真的很方便! 步骤1: 打开终端,输入 brew info nginx结果:我们可以看到,nginx在本地还未安装(Not installed),nginx的来源 ...

  2. 邮件服务配置(虚拟域&虚拟用户)

    邮件服务配置(虚拟域&虚拟用户) 现在我做的是: Linux + httpd + php + mariadb + postfix + dovecot + phpMyAdmin + postfi ...

  3. 佳木斯集训Day3

    D3是我的巅峰 D3的出题人毒瘤!!!T3放了一道莫队,我们全体爆炸,到现在只有一个奆老A掉了T3 据说lkh被晓姐姐D了 T1是个26进制数,当时在考场上想了好久才想到(太次了)注意需要处理一下溢出 ...

  4. javascript 异步请求封装成同步请求

    此方法是异步请求封装成同步请求,加上token验证,环境试用微信小程序,可以修改文件中的ajax,进行封装自己的,比如用axios等 成功码采用标准的 200 到 300 和304 ,需要可以自行修改 ...

  5. mac 下 docker 镜像加速器

    配置镜像加速器 具体设置见下图即可. 

  6. MySQL一键生成实体文件的神器-ginbro

    Java转过来的同学对Mybatis的使用肯定不陌生,特别是对一堆表去生成相应的dao和entity的时候使用Mybatis generator所带来的感触,无比深刻.前面我们也讲过原生的数据库使用, ...

  7. input默认值设置

    在input框里我们可以设置 一些默认值,在点击之后input之后就消失了 <input id="_le_name" type="text" onFocu ...

  8. 重学计算机组成原理(五)- "旋转跳跃"的指令实现

    CPU执行的也不只是一条指令,一般一个程序包含很多条指令 因为有if-else.for这样的条件和循环存在,这些指令也不会一路平直执行下去. 一个计算机程序是怎么被分解成一条条指令来执行的呢 1 CP ...

  9. Git使用(码云)

    1.安装git软件(码云/GitHub) 2.码云注册,保存代码 3.创建代码托管仓库,仓库名相当于码云上的文件夹 4.写作业并提交 在作业文件夹上,右键选择‘get bash here’ 在黑框里输 ...

  10. DDOS浅谈

    一.DDOS攻击的来源 任何攻击都不会凭空产生,DDOS也有特定的来源.绝大多数的DDOS攻击都来自于僵尸网络.僵尸网络就是由数量庞大的可联网僵尸主机组成,而僵尸主机可以是任何电子设备(不仅是X86架 ...