cf749 D. Leaving Auction

 1 #include<bits/stdc++.h>
 2 #define lowbit(x) x&(-x)
 3 #define LL long long
 4 #define N 200005
 5 #define M 1000005
 6 #define mod 1000000007LL
 7 #define inf 0x7ffffffff
 8 using namespace std;
 9 inline int ra()
10 {
11     int x=0,f=1; char ch=getchar();
12     while (ch<‘0‘ || ch>‘9‘){if (ch==‘-‘) f=-1; ch=getchar();}
13     while (ch>=‘0‘ && ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();}
14     return x*f;
15 }
16 vector<int> man[N];
17 int mx[N],person[N];
18 bool cmp(int a, int b)
19 {
20     return mx[a]<mx[b];
21 }
22 int main()
23 {
24     int n=ra();
25     for (int i=1; i<=n; i++)
26     {
27         int a=ra(),b=ra();
28         man[a].push_back(b);
29         mx[a]=b;
30         person[i]=i;
31     }
32     sort(person+1,person+1+n,cmp);
33     int q=ra();
34     while (q--)
35     {
36         set<int> leave;
37         int k=ra();
38         for (int i=1; i<=k; i++)
39         {
40             int t=ra();
41             leave.insert(t);
42         }
43         int tmp[2],num=0;
44         tmp[0]=tmp[1]=0;
45         for (int i=n; i>=1; i--)
46         {
47             if (leave.count(person[i])) continue;
48             tmp[num++]=person[i];
49             if (num==2) break;
50         }
51         if (man[tmp[0]].size()==0)
52         {
53             cout<<"0 0"<<endl;
54             continue;
55         }
56         if (num==2)
57         {
58             int it=*lower_bound(man[tmp[0]].begin(),man[tmp[0]].end(),mx[tmp[1]]);
59             printf("%d %d\n",tmp[0],it);
60         }
61         else if (num==1)
62             printf("%d %d\n",tmp[0],man[tmp[0]][0]);
63     }
64     return 0;
65 }
66 //真是尴尬了一开始,竟然觉得找个最大的就可以了2333
67 //没想到只是比第二大最大的大就可以,真是已经弱智了。
68 //第一次发现vector还可以用lower_bound玩2333 
时间: 2024-10-11 04:44:32

cf749 D. Leaving Auction的相关文章

CF749D Leaving Auction

题目链接: http://codeforces.com/problemset/problem/749/D 题目大意: 一场拍卖会,共n个买家.这些买家共出价n次,有的买家可能一次都没有出价.每次出价用(ai,bi)表示,ai为此次出价人的编号,bi为价格.出价严格递增(bi<bi+1)并且没有玩家在一轮竞拍中在没有其他竞争对手的情况下自动增加自己的出价(ai!=ai+1).现在给定q次查询,每次去掉一些出价者及其所有出价,问最后谁是赢家并且他以什么价格赢得拍卖品. 解题思路: 首先预处理所有的出

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

大意: 若干个人参加拍卖会, 给定每个人出价顺序, 保证价格递增, q个询问, 给出k个人的编号, 求删除这k个人的所有出价后, 最终谁赢, 他最少出价多少. set维护每个人最后一次投票的时间, 每次询问直接暴力找到最后一个未删除的, 假设为$x$, 那么$x$就是最后赢家, 求最少出价的话, 只要$x$的出价大于$x$之前一位的最大出价即可. #include <iostream> #include <sstream> #include <algorithm> #i

cf 749D Leaving Auction

题意:拍卖一件物品,有n个竞标,一个人可以有多个竞标.给出n个竞标,a[i],b[i].a[i]表示人的序号,b[i]表示竞标价格. 接下来有q个询问,每次一个k,之后k个数表示该序号的人缺席.问谁最终以多少钱得标.如果没有输出0 0,否则输出序号和价钱. 思路:可以按竞标价格排个序,先将所有人逆序加入set集合中,由于set会自动排序,所以set中存2个元素, 一个用来防止其加入自动排序,一个存每个人的编号.然后再将未出席的删除,如果最后set中没有人了, 则输出0 0,如果还剩1个,则输出该

百度是否会金卡身份卡是否

http://www.ebay.com/cln/yuus_impgrcdt/auction/158168378014/20150131 http://www.ebay.com/cln/yuus_impgrcdt/auction/158168384014/20150131 http://www.ebay.com/cln/yuus_impgrcdt/auction/158168388014/20150131 http://www.ebay.com/cln/yuus_impgrcdt/auction/

【BZOJ-1974】auction代码拍卖会 DP + 排列组合

1974: [Sdoi2010]auction 代码拍卖会 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 305  Solved: 122[Submit][Status][Discuss] Description 随着iPig在P++语言上的造诣日益提升,他形成了自己一套完整的代码库.猪王国想参加POI的童鞋们都争先恐后问iPig索要代码库.iPig不想把代码库给所有想要的小猪,只想给其中的一部分既关系好又肯出钱的小猪,于是他决定举行了一个超大型拍

BZOJ 1974: [Sdoi2010]auction 代码拍卖会( dp )

在1, 11, 111……中选<=8个, + 11..(n个1)拼出所有可能...这些数mod p至多有p中可能, 找出循环的处理一下. 那么dp就很显然了...dp(i, j, k)表示前i种选出了j个, 组合出的数mod p = k, 然后递推一下就好了. ----------------------------------------------------------------------- #include<cstdio> #include<cstring> #i

ZOJ 3202: Second-price Auction

ZOJ 3202: Second-price Auction ///@author Sycamore, ZJNU ///@date 2017-02-09 #include<iostream> #include<vector> #include<algorithm> #include<functional> using namespace std; int main() { int T,N; cin >> T; while (T--) { cin

Electronic Auction

Electronic Auction Time limit: 0.5 secondMemory limit: 64 MB There is a deficit in cast-iron pigs in the country. They are sold at an electronic auction. Customers make their bids: announce a price at which they are ready to buy a pig. From time to t

维克里拍卖 Vickrey auction

https://en.wikipedia.org/wiki/Vickrey_auction 维克里拍卖(Vickrey auction),即次价密封投标拍卖(Second-price sealed-bid auction).投标者在不知道其他人标价的情况下递出标单,标价最高的人得标,但只需付次高的标价.虽然维克里拍卖早在1893年就被用在邮票的拍卖上[1],这种拍卖方式在学术上最早是由哥伦比亚大学教授威廉·维克里于1961年提出的[2].这类拍卖在策略上类似英式拍卖,且会让投标者有以实际价值出价