大力hack
查看原帖
大力hack
230243
syf2008楼主2023/1/31 09:07

这题数据是真nm水,建议数据重造

my accepted code:
#include <bits/stdc++.h>
using namespace std;
int maxn=-1e9,minn=1e9,a[1000005],f[1000005],ans[1000005],w,zf,n,m;
long long sum=1,mod=317847191;
char c,e[1000005],d[100000005];
int read()
{
	w=0;zf=1;c=getchar();
	while(c<'0'||c>'9'){if(c=='-')zf=-1;c=getchar();}
	while(c>='0'&&c<='9'){w=(w<<3)+(w<<1)+(c^48);c=getchar();}
	return w*zf;
}
int ksm(int a,int b){int res=1;for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)res=1ll*res*a%mod;return res;}
int main()
{
	freopen("data.in","r",stdin);
	freopen("data.out","w",stdout);
	n=read();m=read();
	for(int i=1;i<=n;i++)
	{
		a[i]=read();
		d[a[i]]++;
	}
	for(int i=1;i<=m;i++)
	{
		cin>>e[i];
		if(e[i]=='D')
		{
			f[i]=read();
			d[f[i]]--;
		}
	}
	for(int i=1;i<=n;i++)
	if(d[a[i]])
	{
		maxn=max(maxn,a[i]);
		minn=min(minn,a[i]);
		sum=(long long)sum*a[i]%mod;
		d[a[i]]--;
	}
	for(int i=m;i>=1;i--)
	{
		if(e[i]=='D')
		{
			maxn=max(maxn,f[i]);
			minn=min(minn,f[i]);
			sum=1ll*sum*f[i]%mod;
		}
		if(e[i]=='B')ans[i]=maxn;
		if(e[i]=='S')ans[i]=minn;
		if(e[i]=='M')ans[i]=ksm(maxn,minn);
		if(e[i]=='T')ans[i]=sum;
	}
	for(int i=1;i<=m;i++)
	if(e[i]!='D')printf("%d\n",ans[i]);
}
mkdata:
#include<bits/stdc++.h>
#define int long long
const int N=6e5+5,M=3e5;
using namespace std;
int n,m,ans;
char a;
long long mod=317847191;
int ksm(int a,int b){int res=1;for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)res=1ll*res*a%mod;return res;}
signed main()
{
	freopen("data.in","w",stdout);
	n=260;m=1;
	cout<<ksm(2,260)<<'\n';
	cout<<n<<' '<<m<<'\n';
	for(int i=1;i<=n;i++)cout<<2<<' ';cout<<'\n';
	cout<<"T\n";
}

死因: 我写的是char数组,范围只有256

这题连重复数字>256的数据都没有吗?

2023/1/31 09:07
加载中...