解题报告:Codeforces Round #433 (Div. 2) E. Boredom ( 离线处理+树状数组)
来源:互联网 发布:淘宝商品信用卡套现 编辑:程序博客网 时间:2024/05/18 01:38
题目链接
题意:
n*n的矩阵,有n个不同行列的格子染色,染色的格子两两之间组成的矩阵定义为beautiful。
q组询问,每次给出一个矩阵,询问与它相交的beautiful的矩阵的数目
n,q<=2e5
思路:
每次查询分成九个矩阵,只需要知道各个矩阵中的染色的点数,即可得出答案
其中五个矩阵可以由染色的性质可以直接得出答案
离线处理另外四个即可
代码:
#include<bits/stdc++.h>#define lowbit(x) (x&-x)#define pii pair<int,int>#define fi first#define se second#define LL long longconst int N = 2e5+10;using namespace std;int n,q;int num[N][9];struct node{ int x,y,pos;}Q[N<<2];int bit[1<<20];pii P[N];inline LL C2(int x){return 1LL * x * (x-1) / 2 ;}void add(int x){ while(x<=n){ ++bit[x]; x+=lowbit(x); }}int query(int x){ int res = 0; while(x){ res += bit[x]; x -= lowbit(x); }return res;}int main(){ scanf("%d%d",&n,&q); for(int i=1,x;i<=n;++i){ scanf("%d",&x); P[i-1] = pii(i,x); }for(int i=0,l,d,r,u,j=0,k;i<q;i++){ k = i*9; scanf("%d%d%d%d",&l,&d,&r,&u);--l;--d; Q[j++] = node{l,d,k}; Q[j++] = node{r,d,k+1}; Q[j++] = node{l,u,k+3}; Q[j++] = node{r,u,k+4}; num[i][6] = l;num[i][7] = r; num[i][2] = d;num[i][5] = u; num[i][8] = n; }q <<= 2; sort(Q,Q+q,[](node a,node b){return a.x<b.x;}); int p = 0; for(int i=0;i<q;++i){ while(p<n&&P[p].fi<=Q[i].x)add(P[p++].se); num[Q[i].pos/9][Q[i].pos%9] = query(Q[i].y) ; }q >>= 2;LL sum = C2(n); for(int i=0;i<q;++i){ LL ans = sum - C2(num[i][2]) - C2(num[i][6]) - C2(num[i][8]-num[i][7]) - C2(num[i][8]-num[i][5]); num[i][5] -= num[i][4] ; num[i][8] -= num[i][7] + num[i][5]; ans += C2(num[i][0]) + C2(num[i][6]-num[i][3]) + C2(num[i][2]-num[i][1]) + C2(num[i][8]); printf("%I64d\n",ans); } return 0;}
阅读全文
0 0
- 解题报告:Codeforces Round #433 (Div. 2) E. Boredom ( 离线处理+树状数组)
- Codeforces Round #433 (Div. 2) E. Boredom
- Codeforces Round #368 (Div. 2) E. Garlands (树状数组)
- Codeforces Round #188 (Div. 2) 解题报告 //缺E
- Codeforces Round #192 (Div. 2) 解题报告 //缺E
- Codeforces Round #274 (Div. 2) 解题报告 (C D E)
- Codeforces Round #306 (Div. 2) D.E. 解题报告
- 解题报告:Codeforces Round #364 (Div. 2) A~E
- 解题报告:Codeforces Round #371 (Div. 2) A~E
- 解题报告:Codeforces Round #421 (Div. 2) A-E
- 树状数组Codeforces Round #301 (Div. 2) E - Infinite Inversions
- Codeforces Round #368 (Div. 2) E. Garlands 二维树状数组
- Codeforces Round #368 (Div. 2) E. Garlands(二维树状数组)
- Codeforces Round #423 (Div. 2) E. DNA Evolution(树状数组)
- Codeforces Round #424 (Div. 2) E. Cards Sorting(树状数组)
- Codeforces Round #368 (Div. 2) E. Garlands 二维树状数组
- Codeforces Round #433 (Div. 2) E. Boredom (主席树 计算矩形内点的个数)
- Codeforces Round #280 (Div. 2) 解题报告(A B C D E)
- Cocos2d-x里面如何实现MVC(五)
- 删除分区表里某个分区的数据
- 读懂源码系列-FileZilla Server 设计原则分析-socket 事件处理流程(4)
- 数字货币开发过程中常用的算法有哪些?比如SHA256
- docker-容器
- 解题报告:Codeforces Round #433 (Div. 2) E. Boredom ( 离线处理+树状数组)
- WOJ1211-表达式的值
- s:if标签字符串比较注意事项
- ftp 命令详解
- 小菜鸟的第一篇文章,在学习RN,就当是做笔记吧,iOS开发RN中添加第三方库react-native-image-picker
- Java基础面试题目
- python提示错误TypeError: 'dict_keys' object does not support indexing
- oracle 数据库 order by 排序的使用
- spring 同时配置hibernate and jdbc 事务