分析:这道题和以前做过的模拟赛题很像:传送门.

对于前30%的数据可以直接暴力求,k=1的数据利用线段树求区间最大值,没有修改操作可以用主席树.100%的数据主席树是肯定用不了的,观察到K非常小,可以用线段树来暴力维护.

线段树记录每个区间内的第k小值(1≤k≤10),其它的操作没啥变化,就是pushup的时候要把两棵子树的信息给合并起来,用两个指针就好了.

要维护的信息特别少,并且可以用线段树来维护的可以考虑用线段树来暴力维护.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int maxn = ; struct node
{
int minn[];
}e[maxn << ]; int n, m, tag[maxn << ]; node hebing(node a, node b)
{
int p1 = , p2 = ;
node temp;
for (int i = ; i <= ; i++)
{
if (a.minn[p1] > b.minn[p2])
temp.minn[i] = a.minn[p1++];
else
temp.minn[i] = b.minn[p2++];
}
return temp;
} void pushup(int o)
{
e[o] = hebing(e[o * ], e[o * + ]);
} void color(int o, int v)
{
tag[o] += v;
for (int i = ; i <= ; i++)
if (e[o].minn[i])
e[o].minn[i] += v;
} void pushdown(int o)
{
if (tag[o])
{
color(o * , tag[o]);
color(o * + , tag[o]);
tag[o] = ;
}
} void build(int o, int l, int r)
{
if (l == r)
{
scanf("%d", &e[o].minn[]);
return;
}
int mid = (l + r) >> ;
build(o * , l, mid);
build(o * + , mid + , r);
pushup(o);
} void update(int o, int l, int r, int x, int y, int v)
{
if (x <= l && r <= y)
{
color(o, v);
return;
}
pushdown(o);
int mid = (l + r) >> ;
if (x <= mid)
update(o * , l, mid, x, y, v);
if (y > mid)
update(o * + , mid + , r, x, y, v);
pushup(o);
} node query(int o, int l, int r, int x, int y)
{
if (x <= l && r <= y)
return e[o];
pushdown(o);
int mid = (l + r) >> ;
node temp;
bool flag = false;
if (x <= mid)
{
if (!flag)
temp = query(o * , l, mid, x, y);
else
temp = hebing(temp, query(o * , l, mid, x, y));
flag = ;
}
if (y > mid)
{
if (!flag)
temp = query(o * + , mid + , r, x, y);
else
temp = hebing(temp, query(o * + , mid + , r, x, y));
}
return temp;
} int main()
{
scanf("%d%d", &n, &m);
build(, , n);
for (int i = ; i <= m; i++)
{
int op, l, r, k;
scanf("%d%d%d%d", &op, &l, &r, &k);
if (op == )
{
if (r - l + < k)
printf("-1\n");
else
printf("%d\n", query(, , n, l, r).minn[k]);
}
else
update(, , n, l, r, k);
} return ;
}

noip模拟赛 无题的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  3. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  4. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  5. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  6. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  7. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. 给ambari集群里的kafka安装基于web的kafka管理工具Kafka-manager(图文详解)

    不多说,直接上干货! 参考博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口 ...

  2. 程序猿工具——svn

    一个项目的产生,都需要团队中的开发人员互相协作.它的简单,方便深深吸引了我. svn的使用,有2部分组成--svn服务器.svn客户端.svn服务器一般团队之间只要有一个安装就可以了. 在学习安装sv ...

  3. (五)Mybatis总结之一对多、一对一

    一对多 业务场景:张三既是java开发师又是大学老师又是LOL代练,张三拥有多个角色. 1.创建实体类UserInfo和RoleInfo package com.qf.mybatisdemo.pojo ...

  4. php socket通信演示以及socket操作类

    准备做Java的课程设计,一个通讯录.采用C/S架构.客户端用java FX和Java,服务器端用php,采用socket通信. 下面来讲一讲php的socket通信: 讲之前,得先讲一下TCP/IP ...

  5. CCF|路径解析|Java

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=ne ...

  6. git 学习笔记1

    目前我属于粗放型的[学习者],接下来需要做一些改变,让自己更加规范.首先需要学习的就是版本控制系统,本科在工作室的时候使用过一点Subversion,不过到现在已经基本没有印象了.git现在越来越成为 ...

  7. php5.6.30开启redis扩展

    注:5.6版本的php一定要下载phpredis3.0以上的版本,之前自己下载用的2.2.4的redis,安装配置完成后,PHP死活不支持redis的扩展,通过phpinfo打印也压根看不到,重复服务 ...

  8. Redis 存储字符串和对象

    今天用redis存储,发现客户端jedis提供的存储方法中存储的类型只有String和byte数据,没有能够存储对象的,网上发现可以序列化存储对象.这就开始了我第一次序列化之旅.     1 测试类 ...

  9. 按键精灵txt判断

      句子 = "度阿斯达娘阿婶是大的百度知道" 词 = "百度知道" MyPos = Instr(句子, 词) If MyPos > 0 Then Tra ...

  10. ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)

    消息结构说明nav_msgs/Path.msg结构#An array of poses that represents a Path for a robot to followHeader heade ...