问题标题: 酷町堂:8053 粗心大意的老师

0
0

0
已采纳
熊潇然
熊潇然
初级启示者
初级启示者

这一题要用差分,但是用模拟也可以得满分

模拟思路:

(输入不讲,由于时间复杂度很高,输入用scanf)

while(m--)(m次循环,每次m-1,若m<=0则退出循环)

    输入x,y,z

    遍历x~y,每次a[i]+=z(加分)

 

定义mx=0,用来求最大值

遍历1~n,打擂台最大值(max函数也行)

 

输出mx

 

不会的问我

0
0
0
潘登
潘登
高级天翼
高级天翼

用差分,众所周知,差分有亿点难。

SO,我来讲仔细点。

1.定义:a[],d[]//a为原数组,d为差分数组

2.输入:在输入a[i]时随便把差分数组算出来d[i]=a[i]-a[i-1];

3.改变分数(重点)如果在这一区间内的数都加上一个数,符合差不变原理,所以只要改两个差分数组d[a]+=c; d[b+1]-=c;

4.输出

完结✿✿ヽ(°▽°)ノ✿

0
潘登
潘登
高级天翼
高级天翼

用差分,众所周知,差分有亿点难。

SO,我来讲仔细点。

1.定义:a[],d[]//a为原数组,d为差分数组

2.输入:在输入a[i]时随便把差分数组算出来d[i]=a[i]-a[i-1];

3.改变分数(重点)如果在这一区间内的数都加上一个数,符合差不变原理,所以只要改两个差分数组d[a]+=c; d[b+1]-=c;

4.输出

完结✿✿ヽ(°▽°)ノ✿

0
0
我要回答