Gym - 101572G Galactic Collegiate Programming Contest 小根堆(set)
题目大意:
n个人,m次提交,每次提交都代表某支队伍做出一题,并且给出罚时,让你输出每次提交后,编号为1的队伍的排名。
思路:
首先处理ac和罚时,由于罚时最大1000,最多有1e5次,要保证ac比罚时重要的多,所以一次ac,权值加1e8 再减 罚时。
维护一个小根堆,由于元素没有重复的,所以可以直接用set。
更新的如果是team1,把更新后的team1的权值和小根堆堆顶比较,小于等于team1的删除。
更新的如果是其他队伍,先判断是否在堆内,如果在,就先删去堆中原有的状态,再把更新后的塞回堆,如果不在堆内,就判断一下有没有比team1大,如果大于,则塞入堆内。
每次只要输出堆的大小加一就可以了。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string.h>
#include<sstream>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#include<bitset>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long ll;
inline int rd() {
int f = ; int x = ; char s = getchar();
while (s<'' || s>'') { if (s == '-')f = -; s = getchar(); }
while (s >= ''&&s <= '') { x = x * + s - ''; s = getchar(); }x *= f;
return x;
}
const int maxn = ;
struct dian {
ll val;
int id;
friend bool operator<(const dian &a, const dian &b) {
if (a.val - b.val)return a.val < b.val;
return a.id < b.id;
}
}a[maxn];
set <dian > s;
struct node {
int team; ll time;
}op[maxn];
int n, m;
int vis[maxn];
ll acp = 1e8 + , time , val;
int team;
int main() {
cin >> n >> m;
val = ;
for (int i = ; i <= n; i++) {
a[i].id = i;
}
for (int i = ; i <= m; i++) {
scanf("%d%lld", &team, &time);
if (team != ) {
if (vis[team]) {
s.erase(a[team]);
a[team].val += acp - time;
s.insert(a[team]);
printf("%d\n", + (int)s.size());
}
else {
a[team].val += acp - time;
if (a[team].val > val) {
s.insert(a[team]);
vis[team] = ;
// printf("i:%d\n",i);
// printf("size:%d\n", s.size());
} printf("%d\n", + (int)s.size());
}
}
else {
val += acp - time;
set<dian >::iterator it;
if (s.empty()) {
printf("1\n");
continue;
}
it = s.begin();
while (it->val <= val) {
s.erase(it);
vis[it->id] = ;
if (s.empty())break;
it = s.begin();
}
printf("%d\n", + (int)s.size());
}
} }
Gym - 101572G Galactic Collegiate Programming Contest 小根堆(set)的更多相关文章
- G - Galactic Collegiate Programming Contest Kattis - gcpc (set使用)
题目链接: G - Galactic Collegiate Programming Contest Kattis - gcpc 题目大意:当前有n个人,一共有m次提交记录,每一次的提交包括两个数,st ...
- Codeforces Gym101572 G.Galactic Collegiate Programming Contest (2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017))
Problem G Galactic Collegiate Programming Contest 这个题题意读了一会,就是几个队参加比赛,根据实时的信息,问你1号队的实时排名(题数和罚时相同的时候并 ...
- Galactic Collegiate Programming Contest Gym - 101572G 模拟
#include<bits/stdc++.h> using namespace std; int n,m; struct node { int id; int slove; int pen ...
- 【离散化树状数组】Nordic Collegiate Programming Contest G.Galactic Collegiate Programming Contest
#include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; struct node { in ...
- Nordic Collegiate Programming Contest NCPC 2017-Problem G Galactic Collegiate Programming Contest
题目大意:有n( n<1e5 )只队伍参加程序竞赛,然后给m个信息,每个信息告诉你第p 个队伍过了一题,并且告诉你罚时是多少,让你输入每个信息之后,第一个队伍的 排名. 思路:一眼看过去就像数据 ...
- Gym.102006:Syrian Collegiate Programming Contest(寒假自训第11场)
学习了“叙利亚”这个单词:比较温和的一场:几何的板子eps太小了,坑了几发. A .Hello SCPC 2018! 题意:给定一个排列,问它是否满足,前面4个是有序的,而且前面4个比后面的都小. 思 ...
- Gym .101933 Nordic Collegiate Programming Contest (NCPC 2018) (寒假gym自训第四场)
(本套题算是比较温和吧,就是罚时有点高. B .Baby Bites 题意:给出一个婴儿给出的数组,有一些数字听不清楚,让你还原,问它是否是一个从1开始的一次增加的数组. 思路:从左往右依次固定,看是 ...
- Gym .102021 .German Collegiate Programming Contest (GCPC 18) (寒假gym自训第三场)
B .Battle Royale 题意:给你两个点A,B,以及一个圆S,保证两个点在圆外,且其连线与圆相交,求两点间最短距离. 思路:显然是要分别与圆相切,然后在圆弧想走,直到相交. 那么ans=与圆 ...
- Gym - 101972B Arabella Collegiate Programming Contest (2018) B. Updating the Tree 树DFS
题面 题意:T组数据,每次给你1e5个点的树(1为根),每个点有一权值,询问1-n每个节点的子树中, 至少修改几个点的权值(每次都可以任意修改),才能让子树中任意2点的距离==他们权值差的绝对值 无解 ...
随机推荐
- 两种布局的ListVIew Adapter。例如微信对话界面
这个界面 实现的不是微信对话界面.实现的是,focus的状态下,变为放大的另一种布局 重点: 一.定义类型个数 private final int TYPE_COUNT = 2; privat ...
- 【转】Xcode 清理存储空间
移除 Xcode 运行安装 APP 产生的缓存文件(DerivedData) 只要重新运行Xcode就一定会重新生成,而且会随着运行程序的增多,占用空间会越来越大.删除后在重新运行程序可能会稍微慢一点 ...
- day70-oracle 12-Java调用存储过程和存储函数
我们现在调用的是存储过程和存储函数.用CallableSatement调用存储函数和存储过程. RDBMS:关系数据库.使用标准方式调用存储过程.也就是说:在mysql中调用和在oracle中调用的写 ...
- C#简单的图片合成及防止并发的办法
/// <summary> /// 合成图 /// </summary> private string ComposeCarBrandBadImage(AnonAttachme ...
- cocos2dx帧动画
//帧动画的创建 //方式一,通过多张图片来创建 auto sprite1 = Sprite::create("grossini_dance_05.png"); sprite1-& ...
- 算法Sedgewick第四版-第1章基础-003一封装日期
1. package ADT; import algorithms.util.StdOut; /**************************************************** ...
- OpenGL编程
一.简介 OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序.OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦 ...
- javascript window.showModalDialog不兼容goole解决方案
window.showModalDialog不兼容goole解决方案 一.弹框方案: 1.window.open; 2.window.showModalDialog; 3.div制作窗口:(本节忽略) ...
- java 学习第零篇JDK安装和记事本编辑JAVA(2)
上面说了如何安装JDK那么这把就是来说怎么用记事本编写java 桌面上新建一个记事本 之后编写: public class a{ public static void main(String [ ...
- 毛玻璃CHBlurEffect
1.将需要加入毛玻璃的UI控件传入接口即可 1.1 .h文件 // // 文 件 名:CHBlurEffect.h // // 版权所有:Copyright © 2018年 leLight. All ...