二分查找,$set$。

对于某一次询问,如果把人删光了,那么输出$0$ $0$。

如果只剩下$1$个人,那么输出那个人喊的最低价格。

如果剩下的人数有大于等于两个,

这时最底下出现的情景必然是红色部分由一个人喊,紫色部分由另一个人喊。

这两个人分别是喊价最高价次高者和最高者,并且红色部分最后一个位置的下一个位置就是答案。因此只需在获取两个人的信息后,在最高者喊价序列中二分即可。

#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<iostream>
#include<set>
using namespace std; const int maxn=;
int n,q; struct X
{
int id,val;
}s[maxn]; struct XX{
int a,b;
XX () { }
XX(int A,int B)
{
a=A;
b=B;
} bool operator < (const XX &aa) const
{
return b>aa.b;
}
}; XX fir,sec; vector<int> v[maxn];
set<XX> h; int tmp[maxn],mn[maxn],mx[maxn]; bool check(int x)
{
int tt=v[fir.a][x];
if(s[tt].val<sec.b) return ;
return ;
} int main()
{
scanf("%d",&n);
for(int i=;i<=;i++) mx[i]=,mn[i]=; for(int i=;i<=n;i++)
{
scanf("%d%d",&s[i].id,&s[i].val);
v[s[i].id].push_back(i);
mx[s[i].id]=max(mx[s[i].id],s[i].val);
mn[s[i].id]=min(mn[s[i].id],s[i].val);
} for(int i=;i<=;i++)
{
if(mx[i]==) continue;
h.insert(XX(i,mx[i]));
} scanf("%d",&q);
for(int i=;i<=q;i++)
{
int k; scanf("%d",&k);
for(int j=;j<=k;j++) scanf("%d",&tmp[j]);
for(int j=;j<=k;j++)
{
if(mx[tmp[j]]==) continue;
h.erase(XX(tmp[j],mx[tmp[j]]));
} if(h.size()==)
{
printf("0 0\n");
}
else if(h.size()==)
{
XX ans = *h.begin();
printf("%d %d\n",ans.a,mn[ans.a]);
}
else
{
set<XX>::iterator iter;
int cnt=; for(iter = h.begin() ; iter != h.end(); iter++)
{
cnt++;
if(cnt==) fir = *iter;
else if(cnt==) { sec = *iter; break; }
} int L=,R=v[fir.a].size()-;
int ans; while(L<=R)
{
int mid=(L+R)/;
if(check(mid)) ans=mid,R=mid-;
else L=mid+;
} int tt=v[fir.a][ans];
printf("%d %d\n",s[tt].id,s[tt].val); } for(int j=;j<=k;j++)
{
if(mx[tmp[j]]==) continue;
h.insert(XX(tmp[j],mx[tmp[j]]));
}
}
return ;
}

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(二分)

    题目链接:http://codeforces.com/problemset/problem/749/D 题意:就是类似竞拍,然后报价肯定要比上一个高,然后查询输入k个数表示那些人的竞拍无效, 输出最后 ...

  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 749D:Leaving Auction(set+二分)

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

  7. 【codeforces 749D】Leaving Auction

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

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

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

  9. Leaving Auction CF 749D

    题目:http://codeforces.com/problemset/problem/749/D 题目大意: 有n个人竞拍,也有n个叫牌,一个人可以有多个叫价牌,但也可能有一些人根本不叫价 每个叫牌 ...

随机推荐

  1. HDU 2064 汉诺塔III

    汉诺塔III Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. PLSQL-Developer数据库连接工具使用方法

    PLSQL-Developer数据库连接工具使用方法 该方法适用于本机未安装Oracle客户端的情况下如何让连接到数据库.经过本人亲自测试绝对可以连接.前提是您安装的版本没有问题,如您安装的版本有问题 ...

  3. MVC 用扩展方法执行自定义视图,替代 UIHint

    MVC 用扩展方法执行自定义视图,替代 UIHint 项目中用了 Bootstrap , 这样就不用写太多的CSS了,省去很多事情.但是这个业务系统需要输入的地方很多,每个表都有100多个字段,每个页 ...

  4. QualityCenter的备份

    1.停止QC Server:2.备份Domain repository,它囊括每个项目的大量数据(包括自动化测试数据.附件.设置和格式表单等).要想知道某个项目所使用的数据库的名字,可以在Site A ...

  5. 推荐一个比较好的VBS编辑器

    QTP 本身的IDE环境, 有诸多缺陷.所以,一般中级以上的自动化测试工程师都会采用外部其他编辑器来编辑VBS脚本.通常情况下,一般都 notepad++. 但是,notepad++也是有很多不足之处 ...

  6. Windows上memcached的使用

    Memcached是什么?Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度. Memcached能缓存什 ...

  7. ShopEx4.8.5.55328破解版

    ShopEx4.8.5.55328最新版完美破解版 http://club.1688.com/article/30369057.html?domainid=lhy16868 ShopEx4.8.5.5 ...

  8. Ubuntu中的.bashrc文件

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运 ...

  9. 利用XCode来进行IOS的程序开发

    利用XCode来进行IOS的程序开发 本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换 ...

  10. 随机函数Surprising

    之前写了个用来抽取1-54号的随机函数,发现30-40出现的情况很大,就在果壳上提问了一下//听取了某个大神的建议循环了10000次之后惊喜的发现这样写出现了一大堆相同的数字! 之后有个很神大牛解答了 ...