十分求调 玄关
查看原帖
十分求调 玄关
1235109
wangyvting01楼主2024/8/8 21:03
#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
long long l[200010],r[200010];
__int128 b[200010];
__int128 q;
__int128 n,m;
__int128 c[200010],d[200010];
int main(){
	long long x,y,z;
	cin>>x>>y>>z;
	n=x;
	m=y;
	q=z;
	for(int i=1;i<=m;i++){
		long long x,y,z;
		cin>>x>>y>>z;
		l[i]=x;
		r[i]=y;
		b[i]=z;
	}
	for(int i=1;i<=m;i++){
		c[i]=((r[i]-l[i]+1)*(b[i])+c[i-1]);
		d[i]=((r[i]-l[i]+1)*(b[i])*(b[i])+d[i-1]);
	}
	while(q--){
		long long x,y;
		cin>>x>>y;
		int L,R;
		L=upper_bound(l+1,l+1+m,x)-l-1;
		R=lower_bound(r+1,r+1+m,y)-r;
		__int128 len=(y-x+1);
		__int128 sum1=c[R]-c[L-1];
		sum1-=(x-l[L])*b[L]+(r[R]-y)*b[R];
		__int128 sum2=d[R]-d[L-1];
		sum2-=(x-l[L])*b[L]*b[L]+(r[R]-y)*b[R]*b[R];
		__int128 ans=len*sum2-sum1*sum1;
		ans%=mod;
		long long res=ans;
		cout<<res<<endl;
	}
	return 0;
}
2024/8/8 21:03
加载中...