题目链接

洛谷
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大数查询相关推荐

  1. bzoj 3110: [Zjoi2013]K大数查询(树套树)

    树套树: 本质:一棵树的每个节点套着另一棵树 通常时间复杂度:O(nlog²n) 空间复杂度:因为树的大小是nlogn,而每个节点又有一棵nlogn的树,所以最大空间复杂度为O(n²log²) 但事实 ...

  2. bzoj:3110: [Zjoi2013]K大数查询

    Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位 ...

  3. [bzoj 3110] [ZJOI2013] K大数查询

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3110 题目: 有N个位置,M个操作.操作有两种,每次操作如果是: 1 a b c:表示 ...

  4. 3110: [Zjoi2013]K大数查询

    3110: [Zjoi2013]K大数查询 https://lydsy.com/JudgeOnline/problem.php?id=3110 分析: 整体二分+线段树. 两种操作:区间加入一个数,区 ...

  5. bzoj3110 [Zjoi2013]K大数查询

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 10703  Solved: 3209 [Submit][ ...

  6. [BZOJ3110] [Zjoi2013]K大数查询

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 9208  Solved: 2737 [Submit][S ...

  7. 洛谷 P3332 [ZJOI2013]K大数查询 解题报告

    P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...

  8. P3332 [ZJOI2013]K大数查询(整体二分做法)

    P3332 [ZJOI2013]K大数查询 题意: 题解: 利用整体二分来做,这个题和P3834 [模板]可持久化线段树 2的区别在于本题的修改是区间修改,所以将里面的树状数组改成线段树就行,区间修改 ...

  9. BZOJ3110: [Zjoi2013]K大数查询

    BZOJ3110: [Zjoi2013]K大数查询 Description 有N个位置,M个操作. 操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如 ...

  10. P3332 [ZJOI2013]K大数查询 - 整体二分-区间修改

    题目链接:https://www.luogu.com.cn/problem/P3332 思路:我们区间修改用一个线段树维护就可以了. #include <bits/stdc++.h> us ...

最新文章

  1. 验证码识别的原理python_Python验证码识别处理实例
  2. OpenCV使用MultiTracker
  3. 使用最新版mysql 8.0.11会出现的一些问题
  4. 你犯了没?电脑最忌讳的18个小动作之三
  5. 基于xilinx vivado的XADC IP设置使用详解
  6. ASP.NET----web用户控件
  7. Lync常识之Lync Server有哪些角色
  8. 《暮色4:破晓(上)》暮光之城 高清蓝光BD 1080P 720P下载,附中英双字字幕!...
  9. 笔记本计算机涂硅脂,图吧小白教程 篇十一:笔记本拆机换硅脂教程(大拆)...
  10. GB2312编码范围
  11. 【java毕业设计】基于javaEE+SSH+mysql的医院在线挂号系统设计与实现(毕业论文+程序源码)——医院在线挂号系统
  12. 服务器支持win10,服务器版Windows 10太强大了:容器最亮
  13. 面试:设计一个电商平台积分兑换系统
  14. 中大型公司的开发流程
  15. 北京医保卡怎么使用?
  16. 上新 | 追光几何(EverCraft)全新交互界面重磅亮相!
  17. 203. 移除链表元素 力扣 c语言
  18. Lua快速入门篇(基础概述)(Yanlz+toLua+xLua)
  19. 从后端到前端的简陋博客开发
  20. 中科院计算所培训中心四季度课程安排

热门文章

  1. book回车键 mac_锋友分享:如何修复MacBook Pro键盘失灵
  2. 人脸识别接口_活体检测在人脸识别中不可或缺的一部分
  3. java 毫秒转分钟和秒_将毫秒转换为分钟和秒的java程序
  4. Zblog模板调用标签情况说明
  5. 计算机网络 数字签名
  6. 算法设计与分析: 3-4 多重幂计数问题
  7. android 音乐平板,酷狗音乐安卓Pad版
  8. 黑盒测试---等价类划分
  9. 怎么简单的生成SSL证书
  10. python课本图片_python爬虫当当网python书籍图片