大家来玩找不同吧:)
查看原帖
大家来玩找不同吧:)
739307
All_Failed_OI_Cici楼主2024/7/27 21:32

看了一下差分后,打了一遍这道题,全部WA,又对了一下题解,但是本地运行结果还是错的 (悲处所在:不开放数据下载)
这是我的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=5e6+5;
int a[N],b[N];
int x,y,z,n,m,mi=INT_MAX; 
//void print(){
//	for(int i=1;i<=n;i++){
//		cout<<b[i-1]+a[i-1]<<" ";
//	}
//	cout<<endl<<"--------------------------------------------"<<endl;
//}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		b[i]=a[i]-a[i-1];
	}
	for(int i=1;i<=m;i++){
		cin>>x>>y>>z;
		b[x]+=z;
		b[y+1]-=z;
//		print();
	}
	for(int i=1;i<=n;i++){
		mi=min(mi,b[i]+a[i-1]);
	}
	cout<<mi;
	return 0;
}

我核对的题解:(我知道该题解受害了,但我没核对出什么名堂)

#include<bits/stdc++.h>
using namespace std;
int d[5000001];//d[i]表示a[i]-a[i-1] 
int a[5000001];
int main()
{
	int n,p,x,y,z,i,min=1e9;
	cin>>n>>p;
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	
    for(i=1;i<=n;i++)
	{
		d[i]=a[i]-a[i-1];
	}
	for(i=0;i<p;i++)
	{
		cin>>x>>y>>z;
		d[x]+=z;
		d[y+1]-=z;
	}
	
	for(i=1;i<=n;i++)
	{
		a[i]=a[i-1]+d[i];
		if(min>a[i])
		{
			min=a[i];
		}
	}
	cout<<min;
	return 0;
} 

thx,还望各位dalao放过我这个蓝名蒟蒻

2024/7/27 21:32
加载中...