[COCI2015]COCI

题目大意:

有\(n(n\le5\times10^5)\)个人比赛,比赛总共进行\(3\)轮,每一轮得分为\([0,650]\)内的整数。现在已经得知每个人前两轮的成绩。若规定一个人\(A\)在前两轮的成绩均严格高于\(B\),则\(A\)在第\(3\)轮的成绩也一定高于\(B\)。求每个人在比赛完成后,最高及最低的可能排名。

思路:

以最高排名为例,对于人\(A\)来言,若\(B\)在前两轮得分的总和\(-A\)在前两轮得分的总和\(\ge 650\),则无论如何,\(A\)都没有再次超过\(B\)的可能。

剩下我们则需要统计与\(A\)两轮得分差值不超过\(650\),但是又全面碾压\(A\)的人的个数。这显然是一个二维数点问题,用二维树状数组解决即可。

时间复杂度\(\mathcal O(n\log^2650)\)。

源代码:

#include<cstdio>
#include<cctype>
#include<algorithm>
inline int getint() {register char ch;while(!isdigit(ch=getchar()));register int x=ch^'0';while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');return x;
}
const int N=5e5+1,M=652;
struct Player {int a,b,id;int total() const {return a+b;}bool operator < (const Player &rhs) const {return total()<rhs.total();}
};
Player p[N];
class FenwickTree1 {private:int val[M][M];int lowbit(const int &x) const {return x&-x;}public:void modify(int p,const int &q,const int &x) {for(;p;p-=lowbit(p)) {for(register int j=q;j;j-=lowbit(j)) {val[p][j]+=x;}}}int query(int p,const int &q) {int ret=0;for(;p<M;p+=lowbit(p)) {for(register int j=q;j<M;j+=lowbit(j)) {ret+=val[p][j];}}return ret;}
};
FenwickTree1 t1;
class FenwickTree2 {private:int val[M][M];int lowbit(const int &x) const {return x&-x;}public:void modify(int p,int q,const int &x) {for(p++,q++;p<M;p+=lowbit(p)) {for(register int j=q;j<M;j+=lowbit(j)) {val[p][j]+=x;}}}int query(int p,int q) {int ret=0;for(p++,q++;p;p-=lowbit(p)) {for(register int j=q;j;j-=lowbit(j)) {ret+=val[p][j];}}return ret;}
};
FenwickTree2 t2;
int max[N],min[N];
int main() {const int n=getint();for(register int i=1;i<=n;i++) {p[i].a=getint();p[i].b=getint();p[i].id=i;}std::sort(&p[1],&p[n]+1);for(register int i=1,j=1;i<=n;i++) {for(;j<=n&&p[j].total()-p[i].total()<=650;j++) {t1.modify(p[j].a,p[j].b,1);}max[p[i].id]=n-j+1+t1.query(p[i].a+1,p[i].b+1);t1.modify(p[i].a,p[i].b,-1);}std::reverse(&p[1],&p[n]+1);for(register int i=1,j=1;i<=n;i++) {for(;j<=n&&p[i].total()-p[j].total()<650;j++) {t2.modify(p[j].a,p[j].b,1);}min[p[i].id]=n-(n-j+1+t2.query(p[i].a-1,p[i].b-1));}for(register int i=1;i<=n;i++) {printf("%d %d\n",max[i]+1,min[i]);}return 0;
}

转载于:https://www.cnblogs.com/skylee03/p/9934136.html

[COCI2015]COCI相关推荐

  1. [COCI 2017-2018-2]-San

    [COCI 2017-2018-2]-San san(1s64M) 游戏世界中有N个楼从左到右排列,从左到右编号为1到N,第i幢楼的高度为Hi,楼上的金币数为Gi,游戏可以从任意一个楼开始且包涵几步. ...

  2. 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树

    题目传送门: 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮 ...

  3. 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树(二分法)

    题目链接 : 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树 文章目录 前言 一.题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 二.代码 前言 第一次写博客, ...

  4. 【C++】洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树

    [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 MMM 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍 ...

  5. BZOJ3745: [Coci2015]Norma【CDQ】

    3745: [Coci2015]Norma 我们对于a序列分治,枚举左端点(从右往左)维护MINMINMIN和MAXMAXMAX,右端点同时更新两个指针j,k,表示a[mid+1,j]≤MAXa[mi ...

  6. 寒假作业:COCI 2014/2015题选 题目与题解

    目录 T1 MAFIJA 题目 题解 T2 ZABAVA 题目 题解 T3 KAMP 题目 题解 T4 BOB 题目 题解 T5 SUMA 题目 题解 T6 NORMA 题目 题解 T7 COCI 题 ...

  7. 《二分答案》—— P1873 [COCI 2011/2012 #5] EKO / 砍树

    [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M M M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一 ...

  8. COCI 2018/2019 CONTEST #2 T4 Maja T5Sunčanje Solution

    COCI 2018/2019 CONTEST #2 T4 T5 Solution abstract 花式暴力 #2 T5 Sunčanje 题意 按顺序给你1e5个长方形(左下角坐标&& ...

  9. COCI 2020/2021 Svjetlo(树形DP)

    COCI 2020/2021 Svjetlo 题目大意 求最短的树上路径(可以重复经过点或边)长度使得经过每个点的次数满足给定的奇偶性.树的大小为NNN. N≤500000N\le 500000N≤5 ...

最新文章

  1. 思维dp ---- 复杂状态找中间状态作为dp状态 1552F - Telepanting
  2. [HDOJ4006]The kth great number
  3. JMM中的原子性、可见性、有序性和volatile关键字
  4. 清华硕士面试阿里惨遭淘汰,网友:并非所有都是强者,也要看人
  5. Synchronize读脏
  6. 使用windbg排查一个内存溢出的问题
  7. python copy函数用法_Python深浅拷贝
  8. 非捕获Lambda的实例
  9. 三星+android+7.0+自动纠正单词,升级党必看!三星S/Note系列更新Android 7.0指南
  10. 安卓qpythonttsspeak_当python遇到Android手机 那么,万物皆可盘
  11. 关于mysql优化_关于MySQL优化的几点总结
  12. 区块链 Fisco bcos 智能合约(12)-Solidity的高级特性
  13. lora网关软件设计_LoRa网关 - 舜为互联
  14. 如何选择适合你的兴趣爱好(二十七),外语
  15. 通向Golang的捷径【21. Go 语言的实际应用】
  16. 视频教程-微信小程序全集-微信开发
  17. LSP协议被劫持,导致无法上网
  18. 将下列计算机中文翻译成英文,急...将计算机类英文翻译成中文
  19. 视频直播类小程序遇到cover-view坑
  20. 关于信息科技新课标心得

热门文章

  1. 64位centos 下编译 hadoop 2.6.0 源码
  2. 安装rebar时提示Uncaught error in rebar_core
  3. 卡巴斯基7.0防病毒官方中文版
  4. 微信公众平台开发,自定义菜单,群发消息,网页授权(3)
  5. Exchange 2010 OAB下载问题排错error 0x80200049
  6. ImageMagick之PDF转换成图片(image)
  7. Scrumban-拉动企业渐进式变革的利器
  8. IPSec ***和SSL ***两种***的安全风险比较
  9. 更改centos 5 yum源
  10. 如何更新 Exchange2003 SP2 中的智能邮件筛选器版本