#include<bits/stdc++.h> using namespace std; int n,m; struct node { int id; int slove; int pen; bool operator<(const node &b)const { //如果解决的数量和罚时都一样,就按照序号排序 if(slove==b.slove&&pen==b.pen) return id<b.id; //如果解决的数目不一样,就优先按照数目排序 if(s…
Problem G Galactic Collegiate Programming Contest 这个题题意读了一会,就是几个队参加比赛,根据实时的信息,问你1号队的实时排名(题数和罚时相同的时候并列). 暴力模拟,简直要模拟死了...有个地方感觉很有意思,就是如果某个队还一道题都没写出来的话根本就不用和1队比较,这里用一个数组存一下出题数大于等于1的队伍,直接比较这些队伍就可以,如果全都比较一遍就会超时,真的,相信我. 代码: 1 #include<iostream> 2 #include…
题目链接: G - Galactic Collegiate Programming Contest Kattis - gcpc 题目大意:当前有n个人,一共有m次提交记录,每一次的提交包括两个数,st和ed.st代表当前人的编号,ed代表总的耗费的时间,每一次提交代表这个人AC了一道题.具体的排名顺序就是先按照题目数量和提交的时间来拍的,然后每一次提交后问你当当前编号为1的人排名是多少. 具体思路:我们把人分为两类,第一类 编号为1的人.第二类,排名大于1的人.每一次当一个人进来的时候,如果这个…
题目传送门 题目大意: n个人,m次提交,每次提交都代表某支队伍做出一题,并且给出罚时,让你输出每次提交后,编号为1的队伍的排名. 思路: 首先处理ac和罚时,由于罚时最大1000,最多有1e5次,要保证ac比罚时重要的多,所以一次ac,权值加1e8 再减 罚时. 维护一个小根堆,由于元素没有重复的,所以可以直接用set. 更新的如果是team1,把更新后的team1的权值和小根堆堆顶比较,小于等于team1的删除. 更新的如果是其他队伍,先判断是否在堆内,如果在,就先删去堆中原有的状态,再把更…
#include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; struct node { int team; int num; int time; int id; }a[maxn]; int ans[maxn]; int b[maxn]; int c[maxn]; int s[maxn]; int team[maxn]; int tree[maxn]; int pre[maxn]; int lowbi…
题目大意:有n( n<1e5 )只队伍参加程序竞赛,然后给m个信息,每个信息告诉你第p 个队伍过了一题,并且告诉你罚时是多少,让你输入每个信息之后,第一个队伍的 排名. 思路:一眼看过去就像数据结构题,我们可以用足够大的数表示过了一题然后减去罚时, 这样就可以用一个数值来确定排名,然后我们用将所有出现过的分数抽离出来,排序去重 用这些数离散化用树状数组维护各个分数队伍数的前缀和,这样就能快速计算排名. #include<bits/stdc++.h> #define ll long lon…
比赛链接:传送门 本场我们队过的题感觉算法都挺简单的,不知道为啥做的时候感觉没有很顺利. 封榜后7题,罚时1015.第一次模拟赛金,虽然是北欧的区域赛,但还是有点开心的. Problem B Best Relay Team 00:49 (+2) Solved by xk 排序后简单模拟一下题意即可. xk说他要背个锅. 代码: #include <iostream> #include <cmath> #include <map> #include <algorit…
A. Airport Coffee 设$f_i$表示考虑前$i$个咖啡厅,且在$i$处买咖啡的最小时间,通过单调队列优化转移. 时间复杂度$O(n)$. #include<cstdio> const int N=500010; typedef long long ll; const double inf=1e20; ll L,A,B,T,R,lim0,lim1,a[N]; double f[N],val[N]; double dp0=inf; int id0; int pre[N]; int…
A - Airport Coffee 留坑. B - Best Relay Team 枚举首棒 #include <bits/stdc++.h> using namespace std; #define N 510 #define INF 0x3f3f3f3f struct node { string name; double v1, v2; inline void scan() { cin >> name >> v1 >> v2; } inline boo…
The 18th Zhejiang Provincial Collegiate Programming Contest GYM链接 https://codeforces.com/gym/103055 F 题意: 给定两个整数$n$和$m$,有两种操作: 当$n\geq 2$时,将$n$的值减少$1$…