1005 琐碎的区间

1005: 琐碎的区间

时间限制: 4 Sec  内存限制: 256 MB
提交: 100  解决: 10
[提交][状态][讨论版]

题目描述

给出一个长度为 n 的整数序列 A[1..n],有三种操作: 
1 l r x :  把[l, r]区间的每个数都加上 x 
2 l r :  把[l, r]  区间每个 A[i]变为sqrt(a[i])的整数部分
3 l r :  求[l, r]  区间所有数的和 
其中 l 和 r 和 x 都代表一个整数

输入

第一行一个 T,表示数据组数。 
对于每组数据 
Line1:两个数 n m,表示整数序列长度和操作数 
Line2:n 个数,表示 A[1..n] 
Line3…Line3+m-1:每行一个询问,对于第三种询问,请输出答案。 
对于每一种询问,先给出操作的编号,再给出相应的操作,编号与题目描述对应。 
数据约定: 
1<=T<=5 
n,m <= 100000 
1<= A[i], x<=100000

输出

对于第三种询问,输出答案。每个答案占一行。

样例输入

1
5 5
1 2 3 4 5
1 3 5 2
2 1 4
3 2 4
2 3 5
3 1 5

样例输出

5
6

提示

时间: 2024-10-17 11:23:45

1005 琐碎的区间的相关文章

琐碎的区间

1005: 琐碎的区间 时间限制: 4 Sec  内存限制: 256 MB 题目描述 给出一个长度为 n 的整数序列 A[1..n],有三种操作: 1 l r x :  把[l, r]区间的每个数都加上 x 2 l r :  把[l, r]  区间每个 A[i]变为sqrt(a[i])的整数部分3 l r :  求[l, r]  区间所有数的和 其中 l 和 r 和 x 都代表一个整数 输入 第一行一个 T,表示数据组数. 对于每组数据 Line1:两个数 n m,表示整数序列长度和操作数 Li

算法复习——区间dp

感觉对区间dp也不好说些什么直接照搬讲义了2333 例题: 1.引水入城(洛谷1514) 这道题先开始看不出来到底和区间dp有什么卵关系···· 首先肯定是bfs暴力判一判可以覆盖到哪些城市····无解直接输出···有解得话就要想想了···· 这道题关键是要发现··如果一个蓄水池所在城市可以覆盖到一些沙漠城市···那么这些沙漠城市肯定是一段····不然假设有一个城市是断开的而两边都被同一个蓄水池流出的水覆盖,这个城市四周的城市都肯定比它矮···(不理解举个反例吧···反正我举不出来)···然后就

合并石子 区间dp水题

合并石子 链接: nyoj 737 描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求出总的代价最小值. tags:最基本的区间dp,这题范围小,如果n大一些,还是要加个平行四边行优化. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring&g

HDU 5396 Expression (区间DP)

链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5396 设d[i][j] 代表i~j的答案.区间DP枚举(i, j)区间的断点,如果断点处的操作符是'*',那么该区间的答案可以直接加上d[i][k] *  d[k+1][j],因为乘法分配律可以保证所有的答案都会乘起来.如果是加法,需要加的 就是 左边的答案 乘 右边操作数的阶乘 加上 右边的答案乘左边操作数的阶乘,最后要确定左边操作和右边操作的顺序 因为每个答案里是统计了该区间所有的阶乘情况,因此

POJ 1160 (区间DP+四边形优化)

这个转移方程不好想,尤其是一段值的解是中间,不明觉厉.dp[i][j] 用i个邮局,覆盖前j个村庄的最小值. 还有就是区间dp的平行四边形优化,这个题的转移方程并不是"区间DP",所以枚举状态要逆着(很花时间),且用一个邮局覆盖都是从0断开了相当于没有断开. 类比于石子归并,矩阵链乘等标准区间DP,其所需状态之前就已经获得,不用倒推 #include <cstdio> #include <cstring> #include <iostream> us

nyoj 12 喷水装置(二)【贪心】+【区间完全覆盖覆盖】

题意:... 这道题就是区间问题三种中的区间完全覆盖问题,不懂的可以看我上一篇也是区间完全覆盖. 直接上代码: #include <stdio.h> #include <math.h> #include <algorithm> using std::sort; struct node{ double le, ri; }s[1005]; int cmp(node a, node b) { return a.le < b.le; } int main() { int

BZOJ 2178: 圆的面积并 [辛普森积分 区间并]

2178: 圆的面积并 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1740  Solved: 450[Submit][Status][Discuss] Description 给出N个圆,求其面积并 Input 先给一个数字N ,N< = 1000 接下来是N行是圆的圆心,半径,其绝对值均为小于1000的整数 Output 面积并,保留三位小数 太可怕了!!!!!! 直接上辛普森积分 函数值就是x=..线上的区间并 区间并直接排序扫描就可以了

【蓝桥杯】历届试题 连号区间数(运行超时)

  历届试题 连号区间数   时间限制:1.0s   内存限制:256.0MB 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间. 当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助. 输入格式 第一行是一个正整数N (1 <=

【codevs2211】WJM2BMR安慰MM记 区间dp

事实上这道题的原型是1258——关路灯,为什么选了这个呢? 废话,因为题目呗= = 言规正传,觉得这道题扯到看不懂的可以去翻codevs1258,说的挺易懂的 其实就是一道区间dp,比较裸的代码,考虑清楚就好 记录过去和回来的最小安慰时间= = 贴代码 var n,c,i,j,sum:longint; m,w:array[0..1100] of longint; a,l,r:array[0..1005,0..1005] of longint; function min(a,b:longint):