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维护每个人最后一次投票的时间, 每 ...
随机推荐
- request获取url链接和参数
//Returns the part of this request's URL from the protocol name up to the query string in th ...
- WebRTC:一个视频聊天的简单例子
相关API简介 在前面的章节中,已经对WebRTC相关的重要知识点进行了介绍,包括涉及的网络协议.会话描述协议.如何进行网络穿透等,剩下的就是WebRTC的API了. WebRTC通信相关的API非常 ...
- Oracle中ROWNUM伪列和ROWID伪列的用法与区别
做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两 ...
- Android平台使用Ceres Solver
在Android平台上使用Ceres求解器,官方教程不明确,且编译过程遇到了很多问题. 环境 Ubuntu 18.04 源代码 https://github.com/Great-Keith/ceres ...
- kubeadm源码分析
k8s离线安装包 三步安装,简单到难以置信 kubeadm源码分析 说句实在话,kubeadm的代码写的真心一般,质量不是很高. 几个关键点来先说一下kubeadm干的几个核心的事: kubeadm ...
- 【React踩坑记四】React项目中引入并使用js-xlsx上传插件(结合antdesign的上传组件)
最近有一个前端上传并解析excel/csv表格数据的需求. 于是在github上找到一个14K star的前端解析插件 github传送门 官方也有,奈何实在太过于浅薄.于是做了以下整理,避免道友们少 ...
- 新手的java学习建议
前言 进入IT领域,就像进入大海—浩瀚而广阔.然而,它又很容易让人迷茫,不知所措.所以,在IT的海洋中,找好一艘船特别重要,这艘船带你前进.减少迷失.这艘船或许是一个人,或一本书,又或许是一篇文章. ...
- 全屏滚动插件pagePiling.js
全屏滚动效果是最近非常流行的网页设计形式,带给用户良好的视觉和交互体验.pagePiling.js 这款 jQuery 插件可以帮助前端开发人员轻松实现这种效果.支持所有的主流浏览器,包括IE8+,支 ...
- eclipse Maven配置以及使用方法
简述: 现需要在Eclipse中配置Maven插件,同时安装maven应用,配置Maven环境变量,建立Maven管理的工程,并用Maven导入Gson包, 编写简易Json输出程序 步骤: 1. 首 ...
- 微信小程序如何动态增删class类名达到切换tabel栏的效果
微信小程序和vue还是有点差别的,要想实现通过动态切换class来达到切换css的效果,请看代码: //wxml页面: <view class="tab"> <v ...