萌新求助

P2367 语文成绩

tyzc114514 @ 2022-08-26 14:27:53

一个TLE,和一个RE。

#include<bits/stdc++.h>
using namespace std;
int a[100005];
int k,s,l;
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    int f=9999;
    for(int i=1;i<=m;i++){
        cin>>k>>s>>l;
        for(int i=k;i<=s;i++)
            a[i]+=l;
    }
    for(int i=1;i<=n;i++){
        if(a[i]>100)a[i]=100;
    }
    for(int i=1;i<=n;i++){
            if(a[i]<f)f=a[i];
    }
    cout<<f;    
    return 0;
}

by liuhongcheng2013 @ 2022-08-26 14:41:48

能不用万能头文件吗? 因为万能头文件里的一些函数名你可能不知道,在定义变量名就可能定义成函数名 比如万能头文件里有个函数叫“time”,经常求时间的时候就会用到“变量类型 time;”


by tyzc114514 @ 2022-08-26 14:45:09

@liuhongcheng2013 但是用iostream也不行啊


by Ranya @ 2022-08-26 14:48:33

你的

    for(int i=1;i<=m;i++){
        cin>>k>>s>>l;
//      for(int i=k;i<=s;i++)
        for(int j=k;j<=s;j++)
            a[j]+=l;
    }

里面两个变量都是 i


by Ranya @ 2022-08-26 14:49:19

而且数组也开小了


by tyzc114514 @ 2022-08-26 14:50:44

@Ran_Y 变成j也不行啊


by leoqing @ 2022-08-26 15:03:54

要用树状数组


by Lizy09 @ 2022-10-04 19:27:53

1.注意范围,n <= 5 * 10 ^ 6,一个一个加肯定会超时,得用差分思想去做
2.最大值f = 0x7fffffff,16进制int的最大值


by Lizy09 @ 2022-10-04 19:29:22

数组也开小了,应该是5000005


by Lizy09 @ 2022-10-04 19:35:41

你想想如果只是普通的区间遍历会是黄题吗


|