codeforces 749D Leaving Auction(二分)
题目链接: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(二分)的更多相关文章
- Codeforces 749D. Leaving Auction set+二分
D. Leaving Auction time limit per test: 2 seconds memory limit per test:256 megabytes input:standard ...
- CodeForces 749D Leaving Auction
二分查找,$set$. 对于某一次询问,如果把人删光了,那么输出$0$ $0$. 如果只剩下$1$个人,那么输出那个人喊的最低价格. 如果剩下的人数有大于等于两个, 这时最底下出现的情景必然是红色部分 ...
- cf 749D Leaving Auction
Leaving Auction time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- CF749D Leaving Auction set排序查找
CodeForces 749D. Leaving Auction 传送门 There are n people taking part in auction today. The rules of a ...
- Leaving Auction
Leaving Auction 题目链接:http://codeforces.com/contest/749/problem/D 二分 本来以为是哪种神奇的数据结构,没想到sort+lower_bon ...
- [Codeforces 1199C]MP3(离散化+二分答案)
[Codeforces 1199C]MP3(离散化+二分答案) 题面 给出一个长度为n的序列\(a_i\)和常数I,定义一次操作[l,r]可以把序列中<l的数全部变成l,>r的数全部变成r ...
- Codeforces 749D:Leaving Auction(set+二分)
http://codeforces.com/contest/749/problem/D 题意:有几个人在拍卖场竞价,一共有n次喊价,有q个询问,每一个询问有一个num,接下来num个人从这次拍卖中除去 ...
- 【codeforces 749D】Leaving Auction
[题目链接]:http://codeforces.com/problemset/problem/749/D [题意] 有n个人在竞价; 按照时间的顺序给出n次竞价(可能有一些人没有参加竞价); 每次竞 ...
- Leaving Auction CodeForces - 749D (set,贪心,模拟)
大意: 若干个人参加拍卖会, 给定每个人出价顺序, 保证价格递增, q个询问, 给出k个人的编号, 求删除这k个人的所有出价后, 最终谁赢, 他最少出价多少. set维护每个人最后一次投票的时间, 每 ...
随机推荐
- oracle常用的一些sql命令
//查看系统当前时间 HH24 24小时制 MI是正确的分钟 select to_char(sysdate,'yyyy-mm-dd HH24:MI:SS') from dual //HH非24 ...
- 基于Docker的GitLab搭建
今天写一些Docker搭建GitLab,好久没有写博客园了,今天又回来了,为了学习技术? 建议使用Linux内核系统,或者虚拟机,首先安装docker环境(菜鸟教程) 一.下载镜像文件 如果慢的话,可 ...
- 关于FFT分析音频的学习
本文部分知识从以下文章学习: https://zhuanlan.zhihu.com/p/19763358 傅里叶变换的知识 https://www.cnblogs.com/RabbitHu/p/FFT ...
- jenkins未授权访问漏洞
jenkins未授权访问漏洞 一.漏洞描述 未授权访问管理控制台,可以通过脚本命令行执行系统命令.通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,wget写webshe ...
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- 微信JSSDK签名
微信JS-SDK说明文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 生成签名 1.签名规则 参与签名的 ...
- 2月11日 阿里巴巴Java开发手册 读后感
该手册分为几个部分: 印象深刻的几点: (五)集合处理 2.[强制]ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException 异常:java. ...
- Redis——发布和订阅
发布与订阅(又称pub/sub),订阅者(listener)负责订阅频道(channel),发送者(publisher)负责向频道发送二进制字符串消息(binary string message).每 ...
- java高并发系列 - 第25天:掌握JUC中的阻塞队列
这是java高并发系列第25篇文章. 环境:jdk1.8. 本文内容 掌握Queue.BlockingQueue接口中常用的方法 介绍6中阻塞队列,及相关场景示例 重点掌握4种常用的阻塞队列 Queu ...
- 帝国CMS(EmpireCMS) v7.5 代码注入分析(CVE-2018-19462)
帝国CMS(EmpireCMS) v7.5 代码注入分析(CVE-2018-19462) 一.漏洞描述 EmpireCMS7.5及之前版本中的admindbDoSql.php文件存在代码注入漏洞.该漏 ...