2018.11.01 loj#2319. 「NOIP2017」列队(线段树)
传送门
唉突然回忆起去年去noipnoipnoip提高组试水然后省二滚粗的悲惨经历。。。
往事不堪回首。
所以说考场上真的有debuffdebuffdebuff啊!!!虽然当时我也不会权值线段树
这道题直接上权值线段树维护nnn行和第mmm列就行了。
原因?
这是因为每次修改只会影响到某一行和最后一列。
但直接跑是会炸空间的。
因此我们动态开点来操作一波就行了。
对于被删除的点我们存到vectorvectorvector里面就行。
代码:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
typedef long long ll;
const int N=600005;
vector<ll>g[N];
int siz[N*50],rt[N],son[N*50][2],n,m,q,tot=0;
ll lim;
inline void update(int&p,int l,int r,int k){
if(!p)p=++tot;
++siz[p];
if(l==r)return;
int mid=l+r>>1;
if(k<=mid)update(son[p][0],l,mid,k);
else update(son[p][1],mid+1,r,k);
}
inline int query(int p,int l,int r,int k){
if(l==r)return l;
int mid=l+r>>1,sum=mid-l+1-siz[son[p][0]];
if(sum>=k)return query(son[p][0],l,mid,k);
return query(son[p][1],mid+1,r,k-sum);
}
inline ll modifr(int x,ll v){
int k=query(rt[n+1],1,lim,x);
update(rt[n+1],1,lim,k);
ll ret=k<=n?(ll)k*m:g[n+1][k-n-1];
return g[n+1].push_back(v?v:ret),ret;
}
inline ll modifl(int px,int py){
int k=query(rt[px],1,lim,py);
update(rt[px],1,lim,k);
ll ret=k<m?(ll)(px-1)*m+k:g[px][k-m];
return g[px].push_back(modifr(px,ret)),ret;
}
int main(){
n=read(),m=read(),q=read(),lim=max(n,m)+q;
for(int i=1,x,y;i<=q;++i)x=read(),y=read(),printf("%lld\n",(y==m)?modifr(x,0):modifl(x,y));
return 0;
}
2018.11.01 loj#2319. 「NOIP2017」列队(线段树)的更多相关文章
- loj#2255. 「SNOI2017」炸弹 线段树优化建图,拓扑,缩点
loj#2255. 「SNOI2017」炸弹 线段树优化建图,拓扑,缩点 链接 loj 思路 用交错关系建出图来,发现可以直接缩点,拓扑统计. 完了吗,不,瓶颈在于边数太多了,线段树优化建图. 细节 ...
- LOJ 2551 「JSOI2018」列队——主席树+二分
题目:https://loj.ac/problem/2551 答案是排序后依次走到 K ~ K+r-l . 想维护一个区间排序后的结果,使得可以在上面二分.求和:二分可以知道贡献是正还是负. 于是想用 ...
- LOJ #2005. 「SDOI2017」相关分析 线段树维护回归直线方程
题目描述 \(Frank\) 对天文学非常感兴趣,他经常用望远镜看星星,同时记录下它们的信息,比如亮度.颜色等等,进而估算出星星的距离,半径等等. \(Frank\) 不仅喜欢观测,还喜欢分析观测到的 ...
- LOJ 2312(洛谷 3733) 「HAOI2017」八纵八横——线段树分治+线性基+bitset
题目:https://loj.ac/problem/2312 https://www.luogu.org/problemnew/show/P3733 原本以为要线段树分治+LCT,查了查发现环上的值直 ...
- 2018.08.01 BZOJ4552: [Tjoi2016&Heoi2016]排序(二分+线段树)
传送门 线段树简单题. 二分答案+线段树排序. 实际上就是二分答案mid" role="presentation" style="position: relat ...
- bzoj5518 & loj3046 「ZJOI2019」语言 线段树合并+树链的并
题目传送门 https://loj.ac/problem/3046 题解 首先问题就是问有多少条路径是给定的几条路径中的一条的一个子段. 先考虑链的做法. 枚举右端点 \(i\),那么求出 \(j\) ...
- 2018.09.01 loj#2330. 「清华集训 2017」榕树之心(树形dp)
传送门 树形dp好题啊. 我们用w[i]" role="presentation" style="position: relative;">w[ ...
- 2018.10.20 loj#2593. 「NOIP2010」乌龟棋(多维dp)
传送门 f[i][j][k][l]f[i][j][k][l]f[i][j][k][l]表示用iii张111,jjj张222,kkk张333,lll张444能凑出的最大贡献. 然后从f[i−1][j][ ...
- loj 2955 「NOIP2018」保卫王国 - 树链剖分 - 动态规划
题目传送门 传送门 想抄一个短一点ddp板子.然后照着Jode抄,莫名其妙多了90行和1.3k. Code /** * loj * Problem#2955 * Accepted * Time: 26 ...
随机推荐
- HTTP协议原理(长连接,短连接/ get,post区别等等)
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...
- python之语音识别(speech模块)
1.原理 语音操控分为 语音识别和语音朗读两部分. 这两部分本来是需要自然语言处理技能相关知识以及一系列极其复杂的算法才能搞定,可是这篇文章将会跳过此处,如果你只是对算法和自然语言学感兴趣的话,就只有 ...
- 【python】入门指南:控制语句
条件控制 if,if-else,if-elseif-else #!/bin/python a = 'test' if a == 'test': print('a is %s' %(a)) else: ...
- Django的视图函数和路由系统中一些没有用过的小点
1.request对象 print("返回用户访问的url,但是不包括域名",request.path_info) print("返回请求的方法,全大写",re ...
- Linux日志文件分割
经常有这样的情况,日志文件或者数据文件会变得很庞大,那么每次对这些目标文件的访问或者修改就会变得极其耗时.因而引发一些性能问题,但是如果对这些目标文件进行分割,限定其大小,那么每次的访问或者修改就会变 ...
- JS获取Dropdownlist选中值
var dropDownList = document.getElementById("ddl_sheng"); //获取DropDownList控件 var dropDownLi ...
- 搭建FTP服务器 window7
1.安装IIS组件,打开控制面板-->程序和功能,点击打开或关闭windows功能 找到Internet信息服务,勾选FTP服务器和Web管理工具下的IIS管理控制台进行安装ftp,如图所示 2 ...
- vs2015未能计算子级
数据源 属性里边值 设置出现问题
- opencv 3.2安装
opencv 3.2安装 下载地址: https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.2.0/opencv-3.2. ...
- js 标准对象
在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // ' ...