洛谷 P3332 BZOJ 3110 [ZJOI2013]K大数查询
题目链接
洛谷
bzoj
题解
整体二分
Code
#include<bits/stdc++.h>#define LL long long
#define RG registerusing namespace std;inline int gi() {RG int x = 0; RG char c = getchar(); bool f = 0;while (c != '-' && (c < '0' || c > '9')) c = getchar();if (c == '-') c = getchar(), f = 1;while (c >= '0' && c <= '9') x = x*10+c-'0', c = getchar();return f ? -x : x;
}
const int N = 50010;
int n, m;#define ls (rt<<1)
#define rs (rt<<1|1)LL t[N<<2], z[N<<2];
inline void pushdown(int rt, int l, int r) {if (z[rt]) {int mid = (l + r) >> 1;t[ls] += (mid-l+1)*z[rt]; t[rs] += (r-mid)*z[rt];z[ls] += z[rt]; z[rs] += z[rt];z[rt] = 0;}return;
}
inline void update(int rt, int l, int r, int L, int R, int k) {if (L <= l && r <= R) {z[rt] += k;t[rt] += k*(r-l+1);return ;}int mid = (l + r) >> 1;pushdown(rt, l, r);if (L <= mid)update(ls, l, mid, L, R, k);if (R > mid)update(rs, mid+1, r, L, R, k);t[rt] = t[ls]+t[rs];return ;
}inline LL query(int rt, int l, int r, int L, int R) {if (L <= l && r <= R) return t[rt];int mid = (l + r) >> 1;LL s = 0;pushdown(rt, l, r);if (L <= mid)s = query(ls, l, mid, L, R);if (R > mid)s += query(rs, mid+1, r, L, R);t[rt] = t[ls]+t[rs];return s;
}
struct Question {int op, a, b, id;LL c;
}q[N], lq[N], rq[N];
LL ans[N];void div(int l, int r, int st, int ed) {if (st > ed) return ;if (l == r) {for (int i = st; i <= ed; i++)if (q[i].op == 2)ans[q[i].id] = l;return ;}int mid = (l + r) >> 1, lt = 0, rt = 0;for (int i = st; i <= ed; i++) {if (q[i].op == 1) {if (q[i].c <= mid)lq[++lt] = q[i];else update(1, 1, n, q[i].a, q[i].b, 1), rq[++rt] = q[i];}else {LL s = query(1, 1, n, q[i].a, q[i].b);if (s >= q[i].c) rq[++rt] = q[i];else q[i].c -= s, lq[++lt] = q[i];}}for (int i = st; i <= ed; i++)if (q[i].op == 1 && q[i].c > mid) update(1, 1, n, q[i].a, q[i].b, -1);for (int i = 1; i <= lt; i++)q[st+i-1] = lq[i];for (int i = 1; i <= rt; i++)q[st+lt+i-1] = rq[i];div(l, mid, st, st+lt-1); div(mid+1, r, st+lt, ed);return ;
}int main() {n = gi(); m = gi();int k = 0;for (int i = 1; i <= m; i++) {q[i].op = gi(), q[i].a = gi(), q[i].b = gi();scanf("%lld", &q[i].c);q[i].id = (q[i].op == 2) ? ++k : 0;}div(-n, n, 1, m);for (int i = 1; i <= k; i++)printf("%lld\n", ans[i]);return 0;
}
转载于:https://www.cnblogs.com/zzy2005/p/10153733.html
洛谷 P3332 BZOJ 3110 [ZJOI2013]K大数查询相关推荐
- bzoj 3110: [Zjoi2013]K大数查询(树套树)
树套树: 本质:一棵树的每个节点套着另一棵树 通常时间复杂度:O(nlog²n) 空间复杂度:因为树的大小是nlogn,而每个节点又有一棵nlogn的树,所以最大空间复杂度为O(n²log²) 但事实 ...
- bzoj:3110: [Zjoi2013]K大数查询
Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位 ...
- [bzoj 3110] [ZJOI2013] K大数查询
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3110 题目: 有N个位置,M个操作.操作有两种,每次操作如果是: 1 a b c:表示 ...
- 3110: [Zjoi2013]K大数查询
3110: [Zjoi2013]K大数查询 https://lydsy.com/JudgeOnline/problem.php?id=3110 分析: 整体二分+线段树. 两种操作:区间加入一个数,区 ...
- bzoj3110 [Zjoi2013]K大数查询
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 10703 Solved: 3209 [Submit][ ...
- [BZOJ3110] [Zjoi2013]K大数查询
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 9208 Solved: 2737 [Submit][S ...
- 洛谷 P3332 [ZJOI2013]K大数查询 解题报告
P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...
- P3332 [ZJOI2013]K大数查询(整体二分做法)
P3332 [ZJOI2013]K大数查询 题意: 题解: 利用整体二分来做,这个题和P3834 [模板]可持久化线段树 2的区别在于本题的修改是区间修改,所以将里面的树状数组改成线段树就行,区间修改 ...
- BZOJ3110: [Zjoi2013]K大数查询
BZOJ3110: [Zjoi2013]K大数查询 Description 有N个位置,M个操作. 操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如 ...
- P3332 [ZJOI2013]K大数查询 - 整体二分-区间修改
题目链接:https://www.luogu.com.cn/problem/P3332 思路:我们区间修改用一个线段树维护就可以了. #include <bits/stdc++.h> us ...
最新文章
- 验证码识别的原理python_Python验证码识别处理实例
- OpenCV使用MultiTracker
- 使用最新版mysql 8.0.11会出现的一些问题
- 你犯了没?电脑最忌讳的18个小动作之三
- 基于xilinx vivado的XADC IP设置使用详解
- ASP.NET----web用户控件
- Lync常识之Lync Server有哪些角色
- 《暮色4:破晓(上)》暮光之城 高清蓝光BD 1080P 720P下载,附中英双字字幕!...
- 笔记本计算机涂硅脂,图吧小白教程 篇十一:笔记本拆机换硅脂教程(大拆)...
- GB2312编码范围
- 【java毕业设计】基于javaEE+SSH+mysql的医院在线挂号系统设计与实现(毕业论文+程序源码)——医院在线挂号系统
- 服务器支持win10,服务器版Windows 10太强大了:容器最亮
- 面试:设计一个电商平台积分兑换系统
- 中大型公司的开发流程
- 北京医保卡怎么使用?
- 上新 | 追光几何(EverCraft)全新交互界面重磅亮相!
- 203. 移除链表元素 力扣 c语言
- Lua快速入门篇(基础概述)(Yanlz+toLua+xLua)
- 从后端到前端的简陋博客开发
- 中科院计算所培训中心四季度课程安排