bzoj3110树套树
wa一片,最后一个T,终于心碎了。。。
为什么没人告诉我要开longlong
为什么所有人都说没有负数
#include<cstdio>
#include<algorithm>
#define mid ((l+r)>>1)
using namespace std;
long long cas,a,b,c,k,l,r,n,m,sz;
int root[];
int ls[],rs[],sum[],lazy[];
void pushdown(int k,int l,int r)
{
if(!lazy[k]||l==r)return;
if(!ls[k])ls[k]=++sz;
if(!rs[k])rs[k]=++sz;
lazy[ls[k]]+=lazy[k];lazy[rs[k]]+=lazy[k];
sum[ls[k]]+=(mid-l+)*lazy[k];
sum[rs[k]]+=(r-mid)*lazy[k];
lazy[k]=;
}
void add(int k,int l,int r,int a,int b)
{
if(l==a&&r==b)
{
sum[k]+=r-l+;
lazy[k]++;
return;
}
pushdown(k,l,r);
if(a<=mid)ls[k]=ls[k]?ls[k]:++sz,add(ls[k],l,mid,a,min(b,mid));
if(b>mid)rs[k]=rs[k]?rs[k]:++sz,add(rs[k],mid+,r,max(mid+,a),b);
sum[k]=sum[ls[k]]+sum[rs[k]];
}
long long que(int k,int l,int r,int a,int b)
{
if(!k)return ;
if(l==a&&r==b)return sum[k];
pushdown(k,l,r);
if(b<=mid)return que(ls[k],l,mid,a,b);
else if(a>mid)return que(rs[k],mid+,r,a,b);
else return que(ls[k],l,mid,a,mid)+que(rs[k],mid+,r,mid+,b);
}
int solve()
{
int l=,r=*n,k=;
while(l!=r)
{
long long t=que(root[k<<|],,n,a,b);
if(c<=t)l=mid+,k=k<<|;
else r=mid,k=k<<,c-=t;
}
return l;
}
int main()
{
for(scanf("%d%d",&n,&m);m;m--)
{
scanf("%d%d%d%d",&cas,&a,&b,&c);
if(cas==)
for(k=,l=,r=*n,c+=n;l!=r;root[k]=root[k]?root[k]:++sz,add(root[k],,n,a,b))
if(c<=mid)r=mid,k=k<<;
else l=mid+,k=k<<|;
else printf("%d\n",solve()-n);
}
return ;
}
这次代码还是比较优美的
bzoj3110树套树的更多相关文章
- BZOJ3110 [Zjoi2013]K大数查询 树套树 线段树 整体二分 树状数组
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3110 题意概括 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位 ...
- bzoj3110: [Zjoi2013]K大数查询 【cdq分治&树套树】
模板题,折腾了许久. cqd分治整体二分,感觉像是把询问分到答案上. #include <bits/stdc++.h> #define rep(i, a, b) for (int i = ...
- [BZOJ3110] [Zjoi2013] K大数查询 (树套树)
Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置 ...
- BZOJ3110 K大数查询 【线段树 + 整体二分 或 树套树(非正解)】
Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位 ...
- BZOJ 3110: [Zjoi2013]K大数查询 [树套树]
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6050 Solved: 2007[Submit][Sta ...
- BZOJ4170 极光(CDQ分治 或 树套树)
传送门 BZOJ上的题目没有题面-- [样例输入] 3 5 2 4 3 Query 2 2 Modify 1 3 Query 2 2 Modify 1 2 Query 1 1 [样例输出] 2 3 3 ...
- bzoj3262: 陌上花开(树套树)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- bzoj3295: [Cqoi2011]动态逆序对(树套树)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- BZOJ 3110 k大数查询 & 树套树
题意: 有n个位置,每个位置可以看做一个集合,现在要求你实现一个数据结构支持以下功能: 1:在a-b的集合中插入一个数 2:询问a-b集合中所有元素的第k大. SOL: 调得火大! 李建说数据结构题能 ...
- BZOJ 3110 树套树 && 永久化标记
感觉树套树是个非常高深的数据结构.从来没写过 #include <iostream> #include <cstdio> #include <algorithm> ...
随机推荐
- 优先队列实现Huffman编码
首先把所有的字符加入到优先队列,然后每次弹出两个结点,用这两个结点作为左右孩子,构造一个子树,子树的跟结点的权值为左右孩子的权值的和,然后将子树插入到优先队列,重复这个步骤,直到优先队列中只有一个结点 ...
- BZOJ 3160: 万径人踪灭
Description 一个ab串,问有多少回文子序列,字母和位置都对称,并且不连续. Sol FFT+Manacher. 不连续只需要减去连续的就可以了,连续的可以直接Manacher算出来. 其他 ...
- centos 7 配置网络
文档: https://wiki.centos.org/FAQ/CentOS7
- django 强制登录最佳实践
参考: https://python-programming.courses/recipes/django-require-authentication-pages/ 即通过中间件来做AOP拦截.不用 ...
- Mac 编写oracle 连接脚本
首先需要本地存有sqlplus命令, 如果没有则需要到官网下载 也可点击我进行下载 (解压 readme.txt 有安装配置说明): 在Oracle官网下载instant client for os ...
- ffmpeg-20161003[04,05.06]-bin.7z
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 5 屏幕横向放大 20 像素 6 屏幕横向缩小 20 像素 S 下一帧 [ -2秒 ] +2 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- asp.net mvc ajax FileUpload
//后台代码 [HttpPost] public ActionResult CreateCategory(HttpPostedFileBase file) { string url = Upload( ...
- APM的飞行模式
1.稳定模式Stabilize 稳定模式是使用得最多的飞行模式,也是最基本的飞行模式,起飞和降落都应该使用此模式. 此模式下,飞控会让飞行器保持稳定,是初学者进行一般飞行的首选,也是FPV第一视角飞行 ...
- 编译器--__attribute__ ((packed))
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法.这个功能是跟操作系统没关系,跟编译器有关,g ...