Codeforces Round #388 (Div. 2) D. Leaving Auction
来源:互联网 发布:ubuntu下删除文件夹 编辑:程序博客网 时间:2024/06/05 07:37
这道题主要是运用stl和二分,主要是set的运用可以练一下std。
先用vector存每个人的出价,再用一个数组和set存每个人的最高价,最后对于每一个q,把不在的人从set 里面erase掉,结束后再加进去。erase掉不在的人后,取出出价最高的两个人(set里面的最后两个人),找出价第二高的在最高的人的位置+1,就是出价最高的。
#include<bits/stdc++.h>using namespace std;#define clr(a,b) memset(a,b,sizeof(a))#define pb(a) push_back(a)#define fir first#define se second#define LL long longtypedef pair<int,int> pii;const double eps = 0.0000001;const int maxn = 2e5+5;int maxp[maxn],p[maxn];vector<int> num[maxn];set<pii> mp;int main() {int n;scanf("%d",&n);clr(maxp,0);for(int i = 0;i < n;i++) {int u,v;scanf("%d%d",&u,&v);maxp[u] = max(maxp[u],v);num[u].pb(v);}/*for(int i = 1;i <= n;i++) if(maxp[i]) printf("%d ",maxp[i]);printf("\n");*/for(int i = 1;i <= n;i++) if(maxp[i]) mp.insert(make_pair(maxp[i],i));int q;scanf("%d",&q);set<pii>::iterator it;set<pii>::reverse_iterator rit;for(int dd = 1;dd <= q;dd++) {int x;scanf("%d",&x);for(int j = 1;j <= x;j++) {scanf("%d",&p[j]);pii tmp;tmp.se = p[j];tmp.fir = maxp[p[j]];if(tmp.fir == 0) continue;it = mp.find(tmp);mp.erase(it);}int len = mp.size();/*for(it = mp.begin(); it != mp.end(); it++) { printf("%d-%d\n",it->fir,it->se); } */ pii a,b;if(len == 0) printf("0 0\n");else {rit = mp.rbegin(); //运用反向迭代器,erase的时候也要处理一下a = *rit;mp.erase((++rit).base());if(len == 1) printf("%d %d\n",a.se,num[a.se][0]);else {rit = mp.rbegin();b = *rit;mp.erase((++rit).base());int dd = upper_bound(num[a.se].begin(),num[a.se].end(),b.fir)-num[a.se].begin();printf("%d %d\n",a.se,num[a.se][dd]);}}for(int j = 1;j <= x;j++) {pii tmp;tmp.se = p[j];tmp.fir = maxp[p[j]];if(tmp.fir == 0) continue;mp.insert(tmp);}if(len) mp.insert(a);if(len >= 2) mp.insert(b);}}
0 0
- Codeforces Round #388 (Div. 2)D. Leaving Auction
- Codeforces Round #388 (Div. 2)D. Leaving Auction
- Codeforces Round #388 (Div. 2)D. Leaving Auction(水题呀?)
- Codeforces Round #388 (Div. 2) D. Leaving Auction
- Codeforces Round #388 (Div. 2)-D. Leaving Auction
- Codeforces Round #388 (Div. 2)D Leaving Auction
- Codeforces Round #388 (Div. 2)D. Leaving Auction
- Codeforces Round #388(Div. 2)D. Leaving Auction【二分+思维】好题~
- Codeforces Round #388 (Div. 2)D. Leaving Auction(二分+思维)
- [Codeforces #388D Leaving Auction] 线段树+二分
- Codeforces 749D Leaving Auction 二分+Set
- Codeforces 749D Leaving Auction binary search+data structures
- Codeforces Round #388 (Div. 2) A,B,C,D 题解
- Codeforces Round #103 (Div. 2) D
- Codeforces Round #104 (Div. 2) D
- Codeforces Round #105 (Div. 2) D
- Codeforces Round #139 (Div. 2) D. Snake
- Codeforces Round #155 (Div. 2) D-rats
- Dragonboard410c服务器系列二之局域网用户系统
- html中模板引擎—前端与后端
- HDU 2072
- PCA 降维算法详解 以及代码示例
- 使用dmtracedump生成Android API调用图
- Codeforces Round #388 (Div. 2) D. Leaving Auction
- 查询词
- win10 vmware the vmware authorization service is not running无法运行
- 微软技术大会视频下载Microsoft Ignite China 2016
- 期末练习
- npm转cnpm小记
- spring-boot资料
- spring
- UNIX网络编程电子书