洛谷P4231 三步必杀
题目描述:
$N$ 个柱子排成一排,一开始每个柱子损伤度为0。
接下来勇仪会进行$M$ 次攻击,每次攻击可以用4个参数$l$ ,$r$ ,$s$ ,$e$ 来描述:
表示这次攻击作用范围为第$l$ 个到第$r$ 个之间所有的柱子(包含$l$ ,$r$ ),对第一个柱子的伤害为$s$ ,对最后一个柱子的伤害为$e$ 。
攻击产生的伤害值是一个等差数列。若$l=1$ ,$r=5 $, $s=2$ ,$e=10$ ,则对第1~5个柱子分别产生2,4,6,8,10的伤害。
鬼族们需要的是所有攻击完成之后每个柱子的损伤度。
输入输出格式
输入格式:
第一行2个整数 $N$ , $M$ ,用空格隔开,下同。
接下来 $M$ 行,每行4个整数 $l$ , $r$ , $s$ ,$e$ ,含义见题目描述。
数据保证对每个柱子产生的每次伤害值都是整数。
输出格式:
由于输出数据可能过大无法全部输出,为了确保你真的能维护所有柱子的损伤度,只要输出它们的异或和与最大值即可。
(异或和就是所有数字按位异或起来的值)
(异或运算符在c++里为^)
数据范围:
本题满分为100分,下面是4个子任务。(x/y)表示(得分/测试点数量)
妖精级(18/3): $1⩽n ,m⩽1000$ 。这种工作即使像妖精一样玩玩闹闹也能完成吧?
河童级(10/1): $s=e$ ,这可以代替我工作吗?
天狗级(20/4): $1⩽n⩽1e5$ , $1⩽m⩽1e5$ 。小打小闹不再可行了呢。
鬼神级(52/2):没有特殊限制。要真正开始思考了。
以上四部分数据不相交。
对于全部的数据: $1⩽n⩽1e7$ , $1⩽m⩽3×1e5$ ,$1⩽l<r⩽n$ .
所有输入输出数据以及柱子受损伤程度始终在$[0,9×1e18]$ 范围内。
这题n<=1e7,看上去有点吓人?同时也是很大的提示:使用O(N)甚至更低的数据结构
我们来看一下这题的需求,区间加一个等差数列,一开始就可以想到N log n的 差分+线段树 经典做法。
a[l]~a[r]加上一个首项为x,公比为y的等差数列的做法
设b数组为a数组的差分数列
则:$b[l]+=x$,$b[l]~b[r]+=y$.$b[r+1]-=(r-l)*y$ (末项)
我们发现如果用线段树去维护它的话,只是一个区间加,查询操作只有最后一次。
考虑到不用查询,我们就可以放弃线段树,维护a数列的差分数列b的差分数列c
似乎有点绕口?没关系可以自己模拟一下
反正就是这样,然后把所有操作都变成区间加。
差分数列区间加的方法区间$(l,r)$加x,$c[l]+=x$,$c[r+1]-=x$;
最后查询求一遍前缀和,完了!!!
洛谷P4231 三步必杀的更多相关文章
- Luogu P4231 三步必杀 (差分)
目录 题目 题解 题目 题目链接 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的鬼 ...
- 【luogu P4231 三步必杀】 题解
题目链接:https://www.luogu.org/problemnew/show/P4231 诶 我很迷啊..这跟树状数组有什么关系啊...拿二阶差分数组过了..? #include <cs ...
- 【Luogu】P4231三步必杀(差分,差分)
题目链接 郑重宣布我以后真的再也不会信样例了,三种写法都能过 另:谁评的蓝题难度qwq 蓝题有这么恐怖吗 两次差分,第一次差分,前缀和求出增量数组,第二次求出原数组顺便更新答案 看题解之后……第二次差 ...
- luogu P4231 三步必杀
嘟嘟嘟 这道题就是区间加一个等差数列,然后最后求每一个数的值. O(n)做法:二阶差分. 其实就是差分两遍.举个例子 0 0 0 0 0 0 0,变成了 0 2 4 6 8 0 0.第一遍差分:0 2 ...
- P4231 三步必杀
题目描述 问题摘要: N个柱子排成一排,一开始每个柱子损伤度为0. 接下来勇仪会进行M次攻击,每次攻击可以用4个参数l,r,s,e来描述: 表示这次攻击作用范围为第l个到第r个之间所有的柱子(包含l, ...
- luoguP4231_三步必杀_差分
luoguP4231_三步必杀_差分 题意:N 个柱子排成一排,一开始每个柱子损伤度为0.接下来勇仪会进行M 次攻击,每次攻击可以用4个参数l,r ,s ,e 来描述: 表示这次攻击作用范围为第l个到 ...
- 洛谷P1459 三值的排序 Sorting a Three-Valued Sequence
P1459 三值的排序 Sorting a Three-Valued Sequence 166通过 369提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 那么 ...
- [洛谷U62364]三次函数极值
U62364 三次函数极值 题面 给定一个三次函数\(f(x)=a_3x^3+a_2x^2+a_1x+a_0\) 求其极值. 格式 输入包括一行四个整数\(a_3,a_2,a_1,a_0\) 输出包括 ...
- 洛谷 P3904 三只小猪
题目背景 你听说过三只小猪的故事吗?这是一个经典的故事.很久很久以前,有三只小猪.第一只小猪用稻草建的房子,第二个小猪用木棍建的房子,第三个小猪则使用砖做为材料.一只大灰狼想吃掉它们并吹倒了稻草和木棍 ...
随机推荐
- Response.Redirect 打开新窗口的两种方法
一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...
- Unity3d中使用assetbundle
1.导出assetbundle: ①单个资源导出成assetbundle: ②多个资源导出成一个assetbundle: 2.读取assetbundle: ①加载到内存: ②解压为具体资源. 1.导出 ...
- spring boot 监控与管理(actuator)
Spring POMs 中提供了一个特殊的依赖模块,即spring-boot-starter-actuator,我们只需要在我们的POM中添加依赖即可 <!-- 监控 管理 --> < ...
- hibernate课程 初探单表映射3-1 单一主键
本节简介: 1 单一主键的两种赋值方式:手动赋值(assigned)和自动赋值(native) 2 mysql和oracle赋值的不同形式 3 demo 2 native由底层数据库生成标识符,如果是 ...
- 移植mavlink到stm32详细教程,后面附快速移植方法
一:准备材料: mavlink源码 stm32串口程序 1.mavlink源码: a.进入mavlink官网(http://qgroundcontrol.org/mavlink/s ...
- 从零开始的全栈工程师——js篇2.17(属性和节点获取)
DOM 一.节点树状图 Document>documentElement>body>tagname 二.常用的节点类型 元素节点(标签) 文本节点(文本节点) 属性节点(标签里的属性 ...
- css 选择器 & UI元素的伪类选择器 & 伪元素选择器
UI元素的伪类选择器 1. :focus 用来选取获取焦点事件 2. :enabled 用来指定当元素处于可用状态时的样式 3. :disable 用来指定元素处于不可用时的状态 表单里应用 ...
- Vue打包后页面出现cannot get
学习Vue有大半个月了,然而遇到了不少坑,完全没有高手们那么容易,中间有不少值得记录下的东东,回头好好理理.先理下今天的: Vue打包命令简单啊,直接在命令行输入:npm run build 然而没一 ...
- eCharts图表(polar极坐标图)
极坐标图 HTML: <div id="eChart"></div> css: #eChart{ width:500px; height:500px; } ...
- 禁止ASP.NET MVC模型绑定时将空字符串绑定为null
为model添加[DisplayFormat(ConvertEmptyStringToNull = false)] [Display(ResourceType = typeof(AppStrings) ...