挂在 Test 6 上实在无法理解
  • 板块CF1746F Kazaee
  • 楼主BFSDFS123
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/9 23:57
  • 上次更新2023/11/3 04:50:02
查看原帖
挂在 Test 6 上实在无法理解
358739
BFSDFS123楼主2023/8/9 23:57

RT。卡了一晚上了,一直在 Test6 TLE,吐了。

代码:

#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize(2)

#include<bits/stdc++.h>
using namespace std;
#define ll long long

char *p1, *p2, buf[100000];
#define gc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1++)
inline int read() {
    register int x = 0; register char c = gc();
    while (c < 48 || c > 57) c = gc();
    while (c >= 48 && c <= 57) x = (x << 1) + (x << 3) + c - 48, c = gc();
    return x;
}
#define eps 1e-8
const int inf=0x3f3f3f3f;
mt19937 rnd(time(0));
const int Maxn=3e5+10;
int n,q;
struct BIT{
	#define lowbit(x) (x&(-x))
	long long C[Maxn];
	void modify(int pos,int x)
	{
		while(pos<=n)
		{
			C[pos]+=x;
			pos+=lowbit(pos);
		}
	}
	long long query(int pos)
	{
		long long res=0;
		while(pos)
		{
			res+=C[pos];
			pos-=lowbit(pos);
		}
		return res;
	}
}seg[20];

int Ar[Maxn];
long long chk(int l,int r,int k)
{
	return seg[k].query(r)-seg[k].query(l-1);
}
unordered_map<int,int> mp[20];
signed main()
{
	n=read();
	q=read();
	for(register int i=1;i<=n;i++)
	{
		Ar[i]=read();
		int gen=Ar[i];
		seg[0].modify(i,Ar[i]);
		mp[0][gen]=gen;
		for(register int j=1;j<=19;j++)
		{
			int p;
			if(mp[j][gen]) p=mp[j][gen];
			else p=rnd()%300000+1,mp[j][gen]=p;
			
			seg[j].modify(i,p);
		}
	}
	
	while(q--)
	{
		int opt;
		opt=read();
		if(opt==1)
		{
			int p,x;
			p=read();x=read();
			int gen=Ar[p];
			Ar[p]=x;
			int genx=x;
			for(register int k=0;k<=19;k++)
			{
				int now=mp[k][gen];
				seg[k].modify(p,-now);
				int G=mp[k][genx];
				if(G==0)
				{
					G=rnd()%300000+1;
					mp[k][genx]=G;
				}
				seg[k].modify(p,G);
			}
		}else{
			int l,r,k;
			l=read(),r=read(),k=read();
			bool flag=true;
			for(register int j=0;j<=19;j++)
			{
				if(chk(l,r,j)%k!=0)
				{
					flag=false;
				}
			}
			puts(flag?"YES":"NO");
		}
		
	}
	return 0;
}
2023/8/9 23:57
加载中...