Brave_woodBG @ 2024-08-07 21:32:57
#include<iostream>
#include<math.h>
#include<climits>
#define int long long
using namespace std;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int b[n];
b[0]=a[0];
for(int i=1;i<n;i++){
b[i]=a[i]-a[i-1];
}
for(int i=0;i<m;i++){
int l,r,z;
cin>>l>>r>>z;
b[l-1]+=z;
if(r<n){
b[r]-=z;
}
}
a[0]=b[0];
int minn=INT_MAX;
for(int i=1;i<n;i++){
a[i]=a[i-1]+b[i];
minn=min(minn,a[i]);
}
cout<<minn;
return 0;
}
by fanhaoxuan0110 @ 2024-08-12 14:27:28
@Brave_woodBG
我也
#include<bits/stdc++.h>
using namespace std;
int l,r,c,a[10001000],n,m;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>l>>r>>c;
for(int j=l;j<=r;j++){
a[j]+=c;
}
}
sort(a+1,a+n+1);
cout<<a[1];
return 0;
}
by Brave_woodBG @ 2024-08-13 22:24:54
@fanhaoxuan0110
弄好了,但不知道之前的哪里错了
#include<iostream>
#include<math.h>
#include<climits>
#include<algorithm>
#define int long long
using namespace std;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int b[n];
b[0]=a[0];
for(int i=1;i<n;i++){
b[i]=a[i]-a[i-1];
}
for(int i=0;i<m;i++){
int l,r,z;
cin>>l>>r>>z;
b[l-1]+=z;
if(r<n){
b[r]-=z;
}
}
a[0]=b[0];
int minn=INT_MAX;
for(int i=1;i<n;i++){
a[i]=a[i-1]+b[i];
}
sort(a,a+n);
cout<<a[0];
return 0;
}
by Brave_woodBG @ 2024-08-13 22:32:41
@fanhaoxuan0110
你这个时间复杂度太大了,会超时,你学下差分
链接:差分法
by fanhaoxuan0110 @ 2024-08-14 08:02:01
@Brave_woodBG 前天刚学