比赛场次 160
比赛名称 20120723
比赛状态 已结束比赛成绩
开始时间 2012-07-23 09:00:00
结束时间 2012-07-23 13:30:00
开放分组 全部用户
注释介绍 闫星光
题目名称 莫比乌斯圈
输入输出 mobius.in/out
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分

莫比乌斯圈

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

【问题描述】

莫比乌斯圈(Möbius strip)如下图

可以理解为一个纸带从某处剪断,扭一圈,然后再用胶水粘合的物体.

关于这个莫比乌斯圈有很多有趣的性质,当然也很复杂,这里不会赘述,但是需要说一点,如果你从圈上的某处出发并前进,那么如果你在走了N/2个单位距离发现起始点在你的背面,那么就称这个带的长度为N(也就意味着你需要绕N的距离才能返回原点

我们的问题是:

想象侠盗猎车手里面的任务骑着摩托车在一个长度为N的莫比乌斯带上踩加分点(我们认为每隔一单位长度就有一个加分点,这个加分点是个整数.我们想知道从位置a开始骑摩托吃分到位置b所有可能的得分之和,我们假设只要他经过得分点就一定能得到分,并且他可能骑车在c(a<=b<=c)停下来,而放弃b+1c之间的得分.可是这得分点的分值有时候会变,我们如果想知道从ab的总分值是多少,就会询问,所以

【输入】

第一行两个整数N,Q,Q是操作数

第二行N个整数表示随便从一个点开始,到之后N个单位长度之间N个加分点的分值,

第三行一个整数Command,表示操作数

接下来Command行每一行由一个指令类型(一个字符串,中间没有空格),后面跟相应的参数.

要么是C a b x表示从ab将键值修加x

要么是Q a b 表示询问从ab之间我们想询问的值,具体见题目描述.

【输出】

对于每个询问给出相应的回答一共Command

【输入输出样例1

mobius.in

mobius.out

4 5

C 1 4 2

C 1 2 -1

Q 1 2

Q 2 4

Q 1 4

3

9

13

【数据范围】 

40%的数据N<=10000 Q<=10000

100%的数据N<=100000 Q<=100000