Leaving Auction
Leaving Auction
题目链接:http://codeforces.com/contest/749/problem/D
二分
本来以为是哪种神奇的数据结构,没想到sort+lower_bonud就解决了,妙。
这道题的精髓在于将每个人出价的最大值记录下来,最后竞拍到的一定为没有leave的人中出价最高的那个人(因为It's guaranteed that the sum of k over all question won't exceed 200 000. 所以这个操作的总复杂度不会超过200 000)。而这个人的最低出价,只需要比第二个人的最高出价高即可,此操作可以用二分。//最后不得不说scanf和cin在没有关同步之前,差别真的很大...
代码如下:
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <set>
#define pb(x) push_back(x)
#define N 200005
using namespace std;
int n,q,k,t,biggest[N],person[N];
vector<int>man[N];
bool cmp(int a,int b){
return biggest[a]<biggest[b];
}
int main(void){
scanf("%d",&n);
for(int i=;i<=n;++i){
int a,b;
scanf("%d%d",&a,&b);
man[a].pb(b);
biggest[a]=b;
person[i]=i;
}
sort(person+,person++n,cmp);
scanf("%d",&q);
while(q--){
set<int>leave;
scanf("%d",&k);
for(int i=;i<k;++i){
scanf("%d",&t);
leave.insert(t);
}
int temp[],num=;
temp[]=temp[]=;
for(int i=n;i>=;--i){
if(leave.count(person[i]))continue;
temp[num++]=person[i];
if(num==)break;
}
if(man[temp[]].size()==){
printf("0 0\n");
continue;
}
if(num==){
int it=*lower_bound(man[temp[]].begin(),man[temp[]].end(),biggest[temp[]]);
printf("%d %d\n",temp[],it);
}else if(num==){
printf("%d %d\n",temp[],man[temp[]][]);
}
}
}
Leaving Auction的更多相关文章
- Codeforces 749D. Leaving Auction set+二分
D. Leaving Auction time limit per test: 2 seconds memory limit per test:256 megabytes input:standard ...
- 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 ...
- Codeforces 749D:Leaving Auction(set+二分)
http://codeforces.com/contest/749/problem/D 题意:有几个人在拍卖场竞价,一共有n次喊价,有q个询问,每一个询问有一个num,接下来num个人从这次拍卖中除去 ...
- CodeForces 749D Leaving Auction
二分查找,$set$. 对于某一次询问,如果把人删光了,那么输出$0$ $0$. 如果只剩下$1$个人,那么输出那个人喊的最低价格. 如果剩下的人数有大于等于两个, 这时最底下出现的情景必然是红色部分 ...
- Leaving Auction CF 749D
题目:http://codeforces.com/problemset/problem/749/D 题目大意: 有n个人竞拍,也有n个叫牌,一个人可以有多个叫价牌,但也可能有一些人根本不叫价 每个叫牌 ...
- CF749D Leaving Auction
题目链接: http://codeforces.com/problemset/problem/749/D 题目大意: 一场拍卖会,共n个买家.这些买家共出价n次,有的买家可能一次都没有出价.每次出价用 ...
- D. Leaving Auction 一题很好的思维题
http://codeforces.com/contest/749/problem/D 现在发现做题要把样例抄下来,然后画一画,这样才容易发现新大陆.嗯,以后做题就这样. 如果排除了被删除了的人,那么 ...
- 【codeforces 749D】Leaving Auction
[题目链接]:http://codeforces.com/problemset/problem/749/D [题意] 有n个人在竞价; 按照时间的顺序给出n次竞价(可能有一些人没有参加竞价); 每次竞 ...
随机推荐
- 宿主机跟Vmware中的linux使用host-only,bridge 方式通信
声明:我的机器在本文中叫 宿机,vmware中的linux就叫linux 本文已经实现了通过host-only模式 宿机 ping通 linux,但是在host-only模式下,linux 没有pin ...
- JS中的prototype(转载)
在研究别人写的js图像处理算法时,发现其中脚本中大量使用prototype,很难读明白,就网上查了下资料发现这篇文章很易懂,就转载如下: 1 原型法设计模式 在.Net中可以使用clone()来实现原 ...
- iis处理请求随记回顾
----http是无状态的, 每次http请求户不影响,都是独立的:不会记的上次请求: -------iis原理:输入地址--socket封装请求体报文--发送---iis解析封装响应体---返回: ...
- sql简单实用的统计汇总案例参考
USE [PM]GO/****** 对象: StoredProcedure [dbo].[LfangSatstics] 脚本日期: 08/24/2013 10:57:48 ******/SET ...
- ASP.NET MVC路由
ASP.NET MVC路由(四) 前言 在前面的篇幅中我们讲解路由系统在MVC中的运行过程以及粗略的原理,想必看过前面篇幅的朋友应该对路由有个概念性的了解了,本篇来讲解区域,在读完本篇后不会肯定的让你 ...
- Asp.Net Identity 2.0 认证
转Asp.Net Identity 2.0 认证 一个星期前,也就是3月20日,微软发布了Asp.Net Identity 2.0 RTM.功能更加强大,也更加稳定.Identity这个东西现在版本还 ...
- 基于A2DFramework的事件机制实现
随笔- 102 文章- 3 评论- 476 发布订阅 - 基于A2DFramework的事件机制实现 SUMMARY 能做什么 DEMO 原理图 应用场景 能做什么 A2DFramework ...
- Scientific Toolworks Understand for linux安装方法
1.首先从官网http://www.scitools.com/download/index.php下载Linux版本 2.解压到安装目录下: 32位:gzip -cd Understand-3.1.6 ...
- ASP.NET MVC4中使用NHibernate
ASP.NET MVC4中使用NHibernate 1:下载安装NHibernate 打开 VS 2012新建一个 MVC4项目. 在项目名称上右击选择Manage NuGet Packages.你会 ...
- Github官方app分析——用户身份验证模块
这篇文章记述的是我对Giuhub官方app的用户身份验证模块的分析. Giuhub的官方app虽然是一个非常小众的程序,但是从程序的设计的角度看,这是一个非常优秀的项目.对于其用户身份验证模块,给我留 ...