noip模拟赛 无题

分析:这道题和以前做过的模拟赛题很像:传送门.
对于前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模拟赛 无题的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
随机推荐
- MFC显示文本文档 分类: MFC 2014-12-30 10:03 457人阅读 评论(1) 收藏
新建基于对话框的MFC应用程序.资源视图的对话框上添加编辑框(Edit Control)和按钮(Button), 将编辑框属性:Mutiline.Auto HScroll.Auto VScroll设为 ...
- ORACLE 如何查看存储过程的定义
ORACLE 如何查看存储过程的定义 相关的数据字典 USER_SOURCE 用户的存储过程.函数的源代码字典 DBA_SOURCE 整个系统所有用户的存储过程.函数的源代码字典 ALL_SOUR ...
- Hadoop集群搭建及MapReduce应用
一.Hadoop集群的搭建与配置 1.节点准备 集群规划: 主机名 IP 安装的软件 运行的进程 weekend 01 192.168.1.60 jdk.hadoop NameNode.DFSZKFa ...
- [转]在ASP.NET MVC3中使用EFCodeFirst 1.0
本文转自:http://kb.cnblogs.com/page/97003/ 作者: NinoFocus 来源: 博客园 发布时间: 2011-04-12 10:41 阅读: 11971 次 ...
- js获取select选中的标签option的值
js中获取方法 var obj = document.getElementByIdx_xx_x(”testSelect”); //定位id var index = obj.selectedInde ...
- SQL——连接查询、聚合函数、开窗函数、分组功能、联合查询、子查询
连接查询 inner join,用的最多,表示多张表一一对应 聚合函数 操作行数据,进行合并 sum.avg.count.max.min 开窗函数 将合并的数据分布到原表的每一行,相当于多出来了一列, ...
- IOS 面试题系列
随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1. Ob ...
- SqlServer2012学习 - 基本数据类型认知
精确数字: 1.整数 int是Sql Server主要整数类型.tinyint,smallint,int 不会自动转成bigint. 大于 2,147,483,647 的整数常量将转换为 decima ...
- Java基础(十一)--Serializable和Externalizable接口实现序列化
序列化在日常开发中经常用到,特别是涉及到网络传输的时候,例如调用第三方接口,通过一个约定好的实体进行传输,这时你必须实现序列 化,这些都是大家都了解的内容,所以文章也会讲一下序列化的高级内容. 序列化 ...
- 16第一章 ASP.Net编程基础知识
第一章 ASP.Net编程基础知识 第一章 ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...