MnZn 求助 85pts
查看原帖
MnZn 求助 85pts
420129
Nt_Tsumiki楼主2025/1/25 19:46

rt

#include <bits/stdc++.h>

#define N 600005
#define LL long long
#define MOD 1004535809

inline int R() {
    int x=0; bool f=0; char c=getchar();
    while (!isdigit(c)) f|=(c=='-'),c=getchar();
    while (isdigit(c)) x=x*10+c-'0',c=getchar();
    return f?-x:x;
}

template<typename T>
void W(T x,char Extra=0) {
    if (x<0) putchar('-'),x=-x; if (x>9) W(x/10);
    putchar(x%10+'0'); if (Extra) putchar(Extra);
}

using namespace std;
int n;

inline LL quickpow(LL a,int k) {
    LL res=1;
    while (k) {
        if (k&1) res=res*a%MOD;
        a=a*a%MOD,k>>=1;
    }
    return res;
} LL G=3,iG=quickpow(G,MOD-2);

int main() {
    n=R(),R(); init(); vector<LL> a(n),b(2*n);
    for (int i=0;i<n;i++) a[i]=R();
    for (int i=0;i<n;i++) b[2*n-i-1]=b[n-i-1]=R();
    vector<LL> f=a*b; LL ans=0,A=n,B=0;
    for (int i=0;i<2*n;i++) ans=max(ans,f[i]); ans=-2*ans;
    for (int i=0;i<n;i++) ans+=1ll*a[i]*a[i]+1ll*b[i]*b[i],B+=(a[i]-b[i]);
    B=B<0?-B:B; W(ans-(__int128)B*(B/A),'\n');
    return 0;
}

把多项式板子省了,目测不是 NTT 的原因。

2025/1/25 19:46
加载中...