题目:http://codeforces.com/problemset/problem/749/D

题目大意:

有n个人竞拍,也有n个叫牌,一个人可以有多个叫价牌,但也可能有一些人根本不叫价

每个叫牌由叫价人的下标和价码,后叫的价码一定比前面的高,而且不会有人连续出两次价(即不与自己竞价)

可能会有一些人离场,如果下标为1的人离场了,那么他参与的叫价均作废。

如果因离场致使出现某人连续竞价的情况,那么,按此人连续竞价最早的价码计算。

问,在有人离场的情况下,输出那个人以什么样的价码赢得拍卖,均离场,则输出0 0

思路:

记录每个人出价最高的时候,从右往左遍历,如果该编号的人离场了,则跳过,直到找到第一个未离场的人,此人即为获胜者

然后算出正确出价:上面的步骤继续往下找,下一个没有离场的人,用此人的最高价到获胜者的出价序列中找到第一个大于(因为出价按时间递增)此价的价码即为答案

代码如下:

 #include<iostream>
#include<map>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std; const int MAX = 2e5 + ;
int Pos[MAX]; //每个人参与竞拍,出价最高的时候
long B[MAX]; //对应每个人出的最高价
map<int, bool>P;
vector<long> Prices[MAX]; //每个人的价位表 inline bool my_cmp(const int lhs, const int rhs)
{
return B[lhs] < B[rhs];
} int main()
{
int N, Q, K, l, result, a;
scanf("%d", &N);
for (long b = , i = ; i <= N && (Pos[i] = i); ++i, B[a] = b)
{
scanf("%d %ld", &a, &b);
Prices[a].push_back(b);
}
sort(Pos + , Pos + N + , my_cmp);
scanf("%d", &Q);
while (Q--)
{
P.clear(), result = ;
scanf("%d", &K);
while (K--)
{
scanf("%d", &l);
P[l] = true;
}
int i = ;
for (i = N; i > ; --i)
{
if (!P[Pos[i]])
{
if (result)break;
result = Pos[i];
}
}
if (result&&B[result])printf("%d %ld\n", result, *upper_bound(Prices[result].begin(), Prices[result].end(), B[Pos[i]]));
else printf("0 0\n");
}
return ;
}

感谢您的阅读,生活愉快~

Leaving Auction CF 749D的更多相关文章

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

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

  2. cf 749D Leaving Auction

    Leaving Auction time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  3. Codeforces 749D. Leaving Auction set+二分

    D. Leaving Auction time limit per test: 2 seconds memory limit per test:256 megabytes input:standard ...

  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

    二分查找,$set$. 对于某一次询问,如果把人删光了,那么输出$0$ $0$. 如果只剩下$1$个人,那么输出那个人喊的最低价格. 如果剩下的人数有大于等于两个, 这时最底下出现的情景必然是红色部分 ...

  8. 【codeforces 749D】Leaving Auction

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

  9. codeforces 749D Leaving Auction(二分)

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

随机推荐

  1. jQuery技巧笔记

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...

  2. Google推荐的15条HTML 5代码军规----来看看你知道几个,我一个都不知道。。。

    Google规范的原文链接大家可以访问:http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml 1.协议头: 建议在指向图 ...

  3. TED_Topic4:How I fell in love with quasars, blazars and our incredible universe

    By Jedidah Isler # Background about our speaker Jedidah Isler studies blazars(耀变天体) — supermassive h ...

  4. Grep学习笔记

    Grep(Global search Regular Expression and Print out the line)是一种强大的文本搜索工具. 1. 正则表达式的基本组成部分 正则表达式 描述 ...

  5. zedboard 初使用 -- 工具篇

    <一> 安装ISE和Vivada: <二> 安装USB转UART驱动 <三> 安装USB转JTAG驱动插件 http://blog.sina.com.cn/s/bl ...

  6. HDU 1556 Color the ball (树状数组 区间更新+单点查询)

    题目链接 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽&quo ...

  7. IIS8.0 配置应用程序初始化功能

    IIS进程回收后,第一次访问会超级慢,这对于用户是不能接受的,怎么解决这个问题? 我们不能设置IIS不回收进程,因为这样可能会导致IIS内存泄漏.有效的方法时,尽量在业务空闲时间回收进程,回收后立刻预 ...

  8. java中并发Queue种类与各自API特点以及使用场景!

    一 先说下队列 队列是一种数据结构.它有两个基本操作:在队列尾部加入一个元素,和从队列头部移除一个元素(注意不要弄混队列的头部和尾部) 就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经 ...

  9. 【HASPDOG】Communication error

    靠,防火墙没关,关了防火墙生成文件成功

  10. gitHub 迁移到gitlab上

    GitHub 迁移到 GitLab 上 第一步在github上生成 token 地址 https://blog.csdn.net/u014175572/article/details/55510825 ...