求助大佬,不知道为什么错了
查看原帖
求助大佬,不知道为什么错了
629377
iamajcer楼主2024/4/13 16:15
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=3e5+5; 
int n, m, mod, a[N], b[N], c[N], d[N], f[N], x, y, cnt=0;
char op[10];
int Mod(int a)
{
	return (a%mod+mod)%mod;
}
void add(int x, int t)
{
	if (x>n) return ;
	
	cnt-=(d[x]==0);
	d[x]=Mod(d[x]+t);
	cnt+=(d[x]==0);
}
signed main()
{
	f[1]=1, f[2]=1;
    for (int i=3; i<=n+2; i++) f[i]=Mod(f[i-1]+f[i-2]);
    
    scanf("%lld%lld%lld", &n, &m, &mod);
    for (int i=1; i<=n; i++) scanf("%lld", &a[i]);
    for (int i=1; i<=n; i++) scanf("%lld", &b[i]);
    
    for (int i=1; i<=n; i++) c[i]=Mod(a[i]-b[i]);
    
	for (int i=2; i<=n; i++)
	{
		d[i]=Mod(c[i]-c[i-1]-c[i-2]);
		cnt+=(d[i]==0);
	} 
	d[1]=c[1];
    cnt+=(d[1]==0);
    
    while (m--)
    {
    	scanf("%s%lld%lld", op, &x, &y);
    	if (x>y) swap(x, y);
        
    	if (op[0]=='A')
    	{
    		add(x, 1);
    	//	add(x+1, 1);
    		add(y+1, -f[y-x+2]);
    		add(y+2, -f[y-x+1]);
    	}
    	else
    	{
    		add(x, -1);
    	//	add(x+1, -1);
    		add(y+1, f[y-x+2]);
    		add(y+2, f[y-x+1]);
    	}
    	
    	if (cnt==n) puts("YES");
    	else puts("NO");
    }
	return 0;
}
2024/4/13 16:15
加载中...