题目名称 1358. [SDOI 2012] 体育课
输入输出 sdoi12_line.in/out
难度等级 ★★☆
时间限制 10000 ms (10 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarQhelDIV 于2013-04-17加入
开放分组 全部用户
提交状态
分类标签
分块
分享题解
通过:10, 提交:54, 通过率:18.52%
GravatarFaller 100 6.200 s 1.47 MiB C++
Gravatarfaraway 100 6.680 s 4.62 MiB C++
Gravatarrewine 100 7.335 s 6.99 MiB C++
GravatarQWERTIer 100 11.688 s 1.78 MiB C++
GravatarFoolMike 100 16.491 s 4.37 MiB C++
Gravatarchangxv 100 19.065 s 33.87 MiB C++
Gravatar天一阁 100 22.680 s 5.11 MiB C++
Gravatar天一阁 100 23.216 s 7.11 MiB C++
Gravatar天一阁 100 23.541 s 5.67 MiB C++
Gravatar苦读依旧 100 30.225 s 5.05 MiB C++
关于 体育课 的近10条评论(全部评论)
鉴定完毕,样例有误
GravatarShirry
2018-01-30 10:24 2楼
Gravatarrewine
2017-03-24 21:28 1楼

1358. [SDOI 2012] 体育课

★★☆   输入文件:sdoi12_line.in   输出文件:sdoi12_line.out   简单对比
时间限制:10 s   内存限制:128 MiB

体育课(line)问题描述:

又是一节体育课的时间了,有n个同学排成了一排。他们都很讨厌排在第一个位置的同学,于是后面的同学中比第一个高的都会产生一个高兴值,这个高兴值等于他的身高减去第一个同学的身高。当然比第一个同学矮的同学产生兴奋值为0。

现在体育老师来了,他拥有神奇的魔法,现在他能做如下的三件事:

1:询问某段区间高兴值最大的那个是多少。

2:把某两个同学交换一下位置。

3:选取一段区间的人,把第一个人身高加上t,第二个加上2t,第三个加上3t以此类推。

但是体育老师不会数数,于是他找到你了,对于每一个询问,他要你帮他求出那个值。

输入说明:

第一行两个整数n,m表示有n个人,有m个操作。

第二行n个整数,顺序输入每个人的身高。(身高<=10^8)

接下来m行,每行第一个数位一个type表示是做哪一件事情。

如果type=1,那么接下来有两个整数l,r,表示询问这段区间的最大的高兴值

如果Type=2,接下来两个整数a,b,表示交换这两个位置的人

如果type=3,接下来三个整数l,r,t,表示把l个人的升高增加t,l+1个人增加2t…第r个人增加(r-l+1)t, (0<=t<= 10000)

输出说明:

对于每个询问按照顺序输出每个操作1的答案。

样例输入:

6 8

109 827 100 530 10 826

3 1 6 1

2 2 6

1 2 4

1 2 3

2 2 6

1 2 6

1 2 5

样例输出:

431

0

817

431

719

数据范围:

有20%的数据:n,m<=5000

另有10%的数据:没有第三种操作.

另有20%的数据: 没有第二种操作

对于100的数据:n,m<=100000


UPD:2017.7.7 by Mike

我猜样例是错的,第一个测试点发出来当样例算了

sdoi12_line.in


10 7

10 9 8 7 6 5 4 3 2 1

1 4 7

3 2 4 3

1 2 3

1 3 6

2 1 10

1 8 10

1 2 3

sdoi12_line.out


0

4

6

9

13