YouYou130 @ 2024-01-01 19:53:51
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,p,n1,x,y,k,z,ji;
cin>>n>>p;
n1=n;
long long a[n+1];
for(;n1>0;n1--)
{
cin>>a[n1];
}
for(;p>0;p--)
{
cin>>x>>y>>z;
if(x<y)
{
k=x;
x=y;
y=k;
}
for(;x>=y;x--)
{
a[x]+=z;
}
}
ji=a[1];
for(long long i=2;i<n;i++)
{
if(a[i]<ji)
{
ji=a[i];
}
}
cout<<ji;
return 0;
}
by Shen_Linwood @ 2024-01-01 20:31:29
@YouYou130 我比较懒没有仔细看,不知道 WA 是怎么回事,但这题直接做是会超时的
这题的正解需要一个叫作差分的方法,您可以看看题解
by Shen_Linwood @ 2024-01-01 20:33:41
数据范围是到
by Shen_Linwood @ 2024-01-01 20:37:38
@YouYou130 哦,发现了一个问题,for(long long i=2;i<n;i++)
这里应该是 i<=n
吧
by YouYou130 @ 2024-01-01 20:59:27
@Shen_Linwood
已改,但我没学过差分
by Shen_Linwood @ 2024-01-02 16:31:49
@YouYou130 还有一点,您写了倒序循环,但是加分操作的下标没有转成倒序
给一组 hack 数据,可以自测一下:
3 2
1 2 3
1 2 1
1 3 1
(正确答案是 3,您的代码输出 2
怎么倒序循环啊(恼