【离散化树状数组】Nordic Collegiate Programming Contest G.Galactic Collegiate Programming Contest
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m;
const int maxn=1e5+;
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 lowbit(int x)
{
return x&(-x);
}
void add(int k,int x)
{
while(k<=m)
{
tree[k]+=x;
k+=lowbit(k);
}
}
int query(int k)
{
int res=;
while(k)
{
res+=tree[k];
k-=lowbit(k);
}
return res;
} bool cmp(node x,node y)
{
if(x.num!=y.num) return x.num>y.num;
else if(x.time!=y.time) return x.time<y.time;
else if(x.team!=) return false;
//else return true;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(b,,sizeof(b));//题数
memset(c,,sizeof(c));//罚时数
memset(tree,,sizeof(tree));
memset(ans,,sizeof(ans));
memset(pre,,sizeof(pre));
int tmp;
for(int i=;i<=m;i++)
{
scanf("%d%d",&a[i].team,&tmp);
a[i].num=b[a[i].team]+;
b[a[i].team]=a[i].num;
a[i].time=c[a[i].team]+tmp;
c[a[i].team]=a[i].time;
a[i].id=i;
team[i]=a[i].team;
}
sort(a+,a++m,cmp);
for(int i=;i<=m;i++)
{
s[a[i].id]=i;
}
for(int i=;i<=m;i++) pre[team[i]]=-;
int r=m;
for(int i=;i<=m;i++)
{
if(pre[team[i]]!=-)
add(pre[team[i]],-);
pre[team[i]]=s[i];
if(team[i]==)
r=s[i]-;
add(s[i],);
ans[i]=query(r)+;
}
for(int i=;i<=m;i++) cout<<ans[i]<<endl; }
return ;
}
注意自定义cmp,最后没有return 导致wa
【离散化树状数组】Nordic Collegiate Programming Contest G.Galactic Collegiate Programming Contest的更多相关文章
- HDU 6318.Swaps and Inversions-求逆序对-线段树 or 归并排序 or 离散化+树状数组 (2018 Multi-University Training Contest 2 1010)
6318.Swaps and Inversions 这个题就是找逆序对,然后逆序对数*min(x,y)就可以了. 官方题解:注意到逆序对=交换相邻需要交换的次数,那么输出 逆序对个数 即可. 求逆序对 ...
- hdu 3015 Disharmony Trees (离散化+树状数组)
Disharmony Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- CodeForces 540E - Infinite Inversions(离散化+树状数组)
花了近5个小时,改的乱七八糟,终于A了. 一个无限数列,1,2,3,4,...,n....,给n个数对<i,j>把数列的i,j两个元素做交换.求交换后数列的逆序对数. 很容易想到离散化+树 ...
- Ultra-QuickSort(归并排序+离散化树状数组)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 50517 Accepted: 18534 ...
- HDU 5862 Counting Intersections(离散化+树状数组)
HDU 5862 Counting Intersections(离散化+树状数组) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=5862 D ...
- BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组
BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 ...
- poj-----Ultra-QuickSort(离散化+树状数组)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 38258 Accepted: 13784 ...
- Code Forces 652D Nested Segments(离散化+树状数组)
Nested Segments time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- 【bzoj4627】[BeiJing2016]回转寿司 离散化+树状数组
题目描述 给出一个长度为n的序列,求所有元素的和在[L,R]范围内的连续子序列的个数. 输入 第一行包含三个整数N,L和R,分别表示寿司盘数,满意度的下限和上限. 第二行包含N个整数Ai,表示小Z对寿 ...
- 【bzoj5055】膜法师 离散化+树状数组
题目描述 给定一个序列$a$,求满足$i<j<k$且$a_i<a_j<a_k$的三元组$(i,j,k)$的个数. 输入 第一行1个数 n 第二行n个数 a_i 输出 一个数,表 ...
随机推荐
- 洛谷 P2922 [USACO08DEC]秘密消息Secret Message
题目描述 Bessie is leading the cows in an attempt to escape! To do this, the cows are sending secret bin ...
- openstack 存储节点按照报错Device /dev/sdb not found (or ignored by filtering).
root@dell-PowerEdge-T30:~# pvcreate /dev/sdb Device /dev/sdb not found (or ignored by filtering).首页 ...
- Cairo Drawing Model
Cairo Drawing Model Cairo是一个强力的2D绘图库. Destination 是你最终绘图的目标, 可以是一系列Pixel或者绑定到SVG或PDF文件上. Source 是实际在 ...
- URAL 2048 Histroy(打表+模拟)
因为年历是400年一个循环节的,所以递推出一年的情况,然后递推处理出一个循环节的情况.对于询问,求一个类似前缀和的东西就好了. 跑出来和比样例小一,把A和B加一以后交后AC... 写得时候注意变量的定 ...
- leetcode_1053. Previous Permutation With One Swap
1053. Previous Permutation With One Swap https://leetcode.com/problems/previous-permutation-with-one ...
- maven项目jsp无法识别jstl的解决办法
EL表达式无效是因为maven项目的jsp不识别jstl,只要在web-APP 标签中引入命名空间 xmlns="http://xmlns.jcp.org/xml/ns/javaee&quo ...
- 3d点云
rgb-d:rgb加depth组成4channel的 3d点云
- jQuery-AJAX简介
AJAX是浏览器后台与服务器交换数据的技术,无须加载整个页面的情况下,对页面中的局部进行更新. AJAX=异步的JavaScript与XML(Asynchronous JavaScript and X ...
- 使用一位数组解决 1 1 2 3 5 8 13 数列问题 斐波纳契数列 Fibonacci
斐波纳契数列 Fibonacci 输出这个数列的前20个数是什么? 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 使用数组实现输出数列的前30 ...
- Python爬虫环境常用库安装
1:urllib urllib.request这两个库是python自带的库,不需要重新安装,在python中输入如下代码: import urllibimport urllib.requestres ...