建议加强数据
查看原帖
建议加强数据
466276
huangjinxiu楼主2024/10/13 19:04

rt,本蒟蒻写的暴力跑了全谷最优解150ms,即使不开O2也只有338ms,比所有正解都快。

代码如下

#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define fi first
#define se second 
using namespace std;
namespace IO{
	const int maxn=1e6;char *p1,*p2,buf[maxn];
	#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,maxn,stdin),p1==p2)?EOF:*p1++)
	int read(){
		int k=0;char c;
		while(!isdigit(c=gc()));
		while(isdigit(c))k=k*10+(c^48),c=gc();
		return k;	
	}
	void write(ll k,char c){
		char st[21],top=0;
		do{
			st[++top]=(k%10)^48;
			k/=10;
		}while(k);
		while(top)putchar(st[top--]);
		putchar(c);
	}
}
const int N=1e5+10,MX=1e7;
int n,m,x,y,l,r,k,cnt,a,b,c;
struct S{
	int l,r,k;
}s[N]; 
ll ans=1;
ll solve(int x,int k){
	int cnt=0;ll res=0;
	for(int i=1;k&&i<=n;++i)
		if(s[i].l<=x&&x<=s[i].r)
			res+=s[i].k,--k;
	return res;
}
int main(){
	n=IO::read(),m=IO::read();
	for(int i=1;i<=n;++i) s[i]={IO::read(),IO::read(),IO::read()};
	sort(s+1,s+1+n,[&](S x,S y){return x.k<y.k;});
	while(m--){
		x=IO::read(),a=IO::read();
		b=IO::read();c=IO::read();
		k=1+(a*ans+b)%c;
		IO::write(ans=solve(x,k),'\n');
	}
	return 0;
}
2024/10/13 19:04
加载中...