[Zhx] 无题
https://www.luogu.org/problemnew/show/T15368
区间修改,区间查询k(<= 10)大值
应该也可以用分块写
#include <cstdio>
#include<algorithm>
#include<iostream>
#include<cstring> #define N 100010
#define tq getchar() using namespace std; struct Note {
long long nm[];
int top;
Note() {memset(nm,,sizeof(nm));top = ;}
} note[N << ],zero_;
long long lazy[N << ];
int n, m; inline int read(){
int x = ; char c = tq;
while(c < '' || c > '') c = tq;
while(c >= '' && c <= '') x = x * + c - '', c = tq;
return x;
} inline Note mer(Note a, Note b) {
if(a.top == ) return b;
if(b.top == ) return a;
Note ans;
int ln = ,rn = ;
while(ln < a.top && rn < b.top) {
if(a.nm[ln] > b.nm[rn]) {ans.nm[ans.top] = a.nm[ln]; ln ++;}
else {ans.nm[ans.top] = b.nm[rn]; rn ++;}
ans.top ++;
if(ans.top == )break;
}
while(ln < a.top) {
if(ans.top == ) break;
ans.nm[ans.top] = a.nm[ln];
ans.top ++;
ln ++;
}
while(rn < b.top) {
if(ans.top == ) break;
ans.nm[ans.top] = b.nm[rn];
ans.top ++;
rn ++;
}
return ans;
} inline void Update(int now) {note[now] = mer(note[now << ],note[now << | ]);} inline void pushdown(int now) {
if(lazy[now]) {
lazy[now << ] += lazy[now];
lazy[now << | ] += lazy[now];
int lson = now << ;
int rson = now << | ;
for(int i = ; i < note[lson].top; i++) note[lson].nm[i] += lazy[now];
for(int i = ; i < note[rson].top; i++) note[rson].nm[i] += lazy[now];
lazy[now] = ;
}
} void build(int l, int r, int now) {
if(l == r) {
note[now].top = ;
note[now].nm[] = read();
return;
}
int mid = (l + r) >> ;
build(l, mid, now << );
build(mid + , r, now << | );
Update(now);
} Note query(int l, int r, int now, int ln, int rn) {
if(l > rn || r < ln) return zero_;
if(l >= ln && r <= rn) return note[now];
pushdown(now);
int mid = (l + r) >> ;
Note lx = query(l, mid, now << , ln, rn);
Note rx = query(mid + , r, now << | , ln, rn);
return mer(lx,rx);
} void add(int l, int r, int now, int ln, int rn, int v) {
if(l > rn || r < ln) return;
if(l >= ln && r <= rn) {
lazy[now] += v;
for(int i = ; i < note[now].top; i++) note[now].nm[i] += v;
return;
}
pushdown(now);
int mid = (l + r) >> ;
add(l, mid, now << , ln, rn, v);
add(mid + , r, now << | , ln, rn, v);
Update(now);
} int main()
{
n = read();
m = read();
build(,n,);
while(m--){
int op = read();
if(op == ) {
int l = read(),r = read(),k = read();
Note zz = query(, n, , l, r);
if(zz.top < k) printf("-1\n");
else cout << zz.nm[k - ] <<"\n";
}
if(op == ) {int l = read(), r = read(), v = read(); add(, n, , l, r, v);}
}
return ;
}
[Zhx] 无题的更多相关文章
- zhx and contest (枚举 + dfs)
zhx and contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- zhx's contest (矩阵快速幂 + 数学推论)
zhx's contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To ...
- HDU - 5187 - zhx's contest (高速幂+高速乘)
zhx's contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To ...
- HDOJ 5188 zhx and contest 贪婪+01背包
zhx and contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU - 5186 - zhx's submissions (精密塔尔苏斯)
zhx's submissions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 5186 zhx's submissions (进制转换)
Problem Description As one of the most powerful brushes, zhx submits a lot of code on many oj and mo ...
- 【HDU5187】zhx's contest
[问题描述] 作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题.zhx认为第i道题的难度就是i.他想要让这些题目排列起来很漂亮. zhx认为一个漂亮的序列{ai}下列两个条件均需满足 ...
- HDU5187 zhx's contest
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission ...
- HDU 1871 无题
无题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
随机推荐
- mac oxs 上查看进程监听的端口号 lsof
sudo netstat -ltnp |grep xxx lsof -p 26917 | grep LISTEN https://mengkang.net/1090.html
- Spring Boot 集成 Swagger生成接口文档
目的: Swagger是什么 Swagger的优点 Swagger的使用 Swagger是什么 官网(https://swagger.io/) Swagger 是一个规范和完整的框架,用于生成.描述. ...
- stdmap 用 at() 取值,如果 key 不存在,不好意思,程序崩溃。QMap 用 value()取值,如果 key 不存在,不会崩溃,你还可以指定默认值
我觉得 Qt6 最应该升级的是容器类 stdmap 在遍历的时候,同时获取 key 与 value 非常方便: for(auto& var:map){ qDebug()<<v ...
- vue 的 solt 子组件过滤
如上图: 1.定义了一个类似下拉的组件 mySelect , 然后里面有自定义的组件 myOptions 2.有很多时候,我们希望, mySelect 组件内部的子组件,只能是 myOptions . ...
- pfSense QoS IDS
pfSense QoS IDS 来源 https://blanboom.org/2018/pfsense-setup/ 之前我使用的无线路由器是 RT1900ac,其内置了 QoS 和 IDS/IPS ...
- sublime text3上设置 python 环境
1. 打开Sublime text 3 安装package control 2. 安装 SublimeREPL Preferences -> package control 或者Ctrl+shi ...
- 关于MQ的几件小事(五)如何保证消息按顺序执行
1.为什么要保证顺序 消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常.举例: 比如通过mysql binlog进行两个数据库的数据 ...
- JDK反编译的两种方式
环境 链接:https://pan.baidu.com/s/1DwWj5Kt4Gfi68k_EOAea_Q 提取码:57j2 apktools+dex2jar+gd-gui 方式一: apktools ...
- BASIS小问题汇总1
try to start SAP system but failed 2019-04-04 Symptom: when i tried to start SAP system, using the c ...
- Python排序算法(六)——归并排序(MERGE-SORT)
有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10800699.html 一.归并排序(MERG ...