2019 Nanchang Online Contest Problem I Yukino With Subinterval
将每个连续的最右端赋值权值1,需要写带修改的主席树,我没写过拿CDQ分治水过
这题居然是全场AC最少的题目,我一个半小时搞定(其实是因为写主席树写了一半发现不会写,改成了CDQ分治)
#include<bits/stdc++.h>
using namespace std;
#define maxn 2000005
int s,w,n,cnt;
int ans[maxn],sum[maxn],A[maxn];
struct data{int x,y,z,pos,id;}a[maxn],b[maxn];
inline bool cmp(data a,data b){if (a.x==b.x&&a.y==b.y) return a.pos<b.pos;else if (a.x==b.x) return a.y<b.y;else return a.x<b.x;
}
inline void add(int x,int v){for(int i=x;i<=w;i+=i&(-i)) sum[i]+=v;
}
inline int query(int x){int ret=0;for(int i=x;i;i-=i&(-i)) ret+=sum[i];return ret;
}
inline void solve(int l,int r){if (l==r) return;int mid=(l+r)/2,l1=l,l2=mid+1; for(int i=l;i<=r;++i){if (a[i].id<=mid&&!a[i].pos) add(a[i].y,a[i].z);if (a[i].id>mid&&a[i].pos) ans[a[i].pos]+=query(a[i].y)*a[i].z;}for(int i=l;i<=r;++i) if (a[i].id<=mid&&!a[i].pos) add(a[i].y,-a[i].z);for(int i=l;i<=r;++i){if (a[i].id<=mid) b[l1++]=a[i];else b[l2++]=a[i];}for(int i=l;i<=r;++i) a[i]=b[i];solve(l,mid);solve(mid+1,r);
}
void add(int x,int y,int z){n++;a[n]=(data){x,y,z,0,n};}
int main(){s=0;int m,x,y,z;cin>>w>>m;for(int i=1;i<=w;++i)scanf("%d",&A[i]);for(int i=1;i<=w;++i){if(A[i]==A[i-1]){x=i-1;y=A[i-1];z=-1;n++;a[n]=(data){x,y,z,0,n};}x=i;y=A[i];z=1;n++;a[n]=(data){x,y,z,0,n};}while(m--){int op;scanf("%d",&op);if (op==1){scanf("%d%d",&x,&y);if(A[x]==y)continue;if(A[x]==A[x-1]&&A[x]==A[x+1]){add(x-1,A[x-1],1);add(x,y,1);}else if(A[x]==A[x-1]&&A[x]!=A[x+1]){add(x-1,A[x-1],1);add(x,A[x],-1);if(A[x+1]!=y)add(x,y,1);}else if(A[x]!=A[x-1]&&A[x]==A[x+1]){if(A[x-1]==y){add(x-1,A[x-1],-1);}add(x,A[x],-1);add(x,y,1);}else if(A[x]!=A[x-1]&&A[x]!=A[x+1]){if(y==A[x-1]&&y==A[x+1]){add(x-1,A[x-1],-1);add(x,A[x],-1);}if(y==A[x-1]&&y!=A[x+1]){add(x-1,A[x-1],-1);add(x,A[x],-1);add(x,y,1);}if(y==A[x+1]&&y!=A[x-1]){add(x,A[x],-1);}if(y!=A[x-1]&&y!=A[x+1]){add(x,A[x],-1);add(x,y,1);}}A[x]=y;}else {int x1,x2,y1,y2;scanf("%d%d%d%d",&x1,&x2,&y1,&y2);--x1,--y1;ans[++cnt]=(x2-x1)*(y2-y1)*s;n++;a[n]=(data){x1,y1,1,cnt,n};n++;a[n]=(data){x1,y2,-1,cnt,n};n++;a[n]=(data){x2,y1,-1,cnt,n};n++;a[n]=(data){x2,y2,1,cnt,n};}}sort(a+1,a+n+1,cmp);solve(1,n);for(int i=1;i<=cnt;i++) printf("%d\n",ans[i]);
}
2019 Nanchang Online Contest Problem I Yukino With Subinterval相关推荐
- 2019南昌网络赛 I. Yukino With Subinterval 树状数组套线段树
I. Yukino With Subinterval 题目链接: Problem Descripe Yukino has an array \(a_1, a_2 \cdots a_n\). As a ...
- HDU 2019 Multi-University Training Contest 1 杭电2019多校联合训练赛 第一场 1001 Blank (6578)
HDU 2019 Multi-University Training Contest 1 杭电2019暑期多校集训第一场 1001 Blank (6578) Problem Description T ...
- HDU 6638 [2019 Multi-University Training Contest 6]
Snowy Smile Problem Description There are n pirate chests buried in Byteland, labeled by 1,2,-,n. Th ...
- 2019 ICPC World Finals Problem J. Miniature Golf
2019 ICPC World Finals Problem J. Miniature Golf Solution 设lll为l0l_0l0时iii的总分为si,l0s_{i,l_0}si,l0 ...
- 2019 ICPC World Finals Problem B. Beautiful Bridges
2019 ICPC World Finals Problem B. Beautiful Bridges Solution 太菜了,sbsbsb题调了一个下午. 首先有一个显然的O(n3)O(n^3)O ...
- 2019 Multi-University Training Contest 7 部分补题
2019 Multi-University Training Contest 7 部分补题 这场比赛三个人一起组队,比赛期间自己感觉并没有奉献多少东西,所以补题.而且总感觉比赛到后期很乏力(没力气那种 ...
- 2019年ACM-ICPC - 南昌网络赛I:Yukino With Subinterval【带修主席树】
题目: 2019ICPC南昌网络赛I:Yukino With Subinterval 题意: 给定长度为 N 的数组,有两种操作:(1)单点修改,(2)查询区间[qL,qR]内有多少个不同的段(连续相 ...
- I. Yukino With Subinterval 树套树入门题
I. Yukino With Subinterval 题意:有两种操作,第一种修改一个位置的值,第二种求给定区间[l,r]内有多少合法区间.合法区间定义:al = al+1 = - = ar ,且该区 ...
- 2019 GDUT Rating Contest I : Problem H. Mixing Milk
题面: H. Mixing Milk Input file: standard input Output file: standard output Time limit: 1 second Memory ...
最新文章
- ytu 2335: 0-1背包问题
- 2.1 网站防******与企业虚拟化需求分析
- 一套完整的java程序_编写一个完整的Java Application 程序
- 苹果挂端口方法_调音台变身直播声卡的方法
- python接收邮件内容启动程序_如何使用python获取电子邮件的文本内容?
- BZOJ3676[APIO2014] 回文串
- 详解健康体检信息管理系统技术开发
- 闪迪内存卡软件测试,存储卡不稳定?我们用微波炉测试 结果震惊了!
- macOS devtools安装github包失败解决
- 是时候让打字更“快舒”了-小鹤双拼
- oracle简单函数的写法,Oracle 简单函数
- think in java interview-高级开发人员面试宝典(十)
- 43岁,转行当了大学老师
- 如何在数据库中存储用户密码_如何在数据库中存储密码
- In Search of the Holy Grail 寻找圣杯 中文翻译
- “裸辞” 备战15天三面美团,交叉面却被吊起来锤
- 【新歌推荐】崔恕:2011听于文博《孤男寡女》再唱苦情歌
- fastDB CLI
- regexp_substr()用法
- PowerBuilder中图片文件的处理
热门文章
- 最全遥感图像数据集(用于深度学习,包括效果图)
- Ubuntu下文件解压缩
- 国企与互联网公司当程序员,我选择国企,哪怕工资少一截
- typora 无法显示内联公式解决办法
- 关于市级资助系统资助学生签名上传方法
- 清明上河图-分解图[珍藏]
- 数字嗅觉将气味模拟系统带入21世纪(Digital Olfaction Brings Scent Systems Into the 21st Century)
- 阿里合伙人范禹:常挂在阿里技术人嘴边的四句土话
- 【解决】Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse
- 获取x-sign/x-mini-wua/x-sgext/x-umt