题目大意:就是让你求出满足所给式子的值是多少。
算法思路:其实我们可以将这个式子化简一下,化简成为sum(a[i]*a[i] ,i=0....n-1)+sum(b[i]*b[i] ,i=0...n-1)-2*max(sum(a[i]*b[j]),i=0...n-1,j=0...n-1)。
#include <iostream> #include<cstring> #include<cstdio> using namespace std; #define MAXN 300000 typedef long long LL; const long long P=50000000001507329LL; const int G=3; LL mul(LL x,LL y){ return (x*y-(LL)(x/(long double)P*y+1e-3)*P+P)%P; } LL qpow(LL x,LL k,LL p){ LL ret=1; while(k){ if(k&1) ret=mul(ret,x); k>>=1; x=mul(x,x); } return ret; } LL wn[25]; void getwn(){ for(int i=1; i<=18; ++i){ int t=1<<i; wn[i]=qpow(G,(P-1)/t,P); } } int len; void NTT(LL y[],int op){ for(int i=1,j=len>>1,k; i<len-1; ++i){ if(i<j) swap(y[i],y[j]); k=len>>1; while(j>=k){ j-=k; k>>=1; } if(j<k) j+=k; } int id=0; for(int h=2; h<=len; h<<=1) { ++id; for(int i=0; i<len; i+=h){ LL w=1; for(int j=i; j<i+(h>>1); ++j){ LL u=y[j],t=mul(y[j+h/2],w); y[j]=u+t; if(y[j]>=P) y[j]-=P; y[j+h/2]=u-t+P; if(y[j+h/2]>=P) y[j+h/2]-=P; w=mul(w,wn[id]); } } } if(op==-1){ for(int i=1; i<len/2; ++i) swap(y[i],y[len-i]); LL inv=qpow(len,P-2,P); for(int i=0; i<len; ++i) y[i]=mul(y[i],inv); } } void Convolution(LL A[],LL B[],int n){ for(len=1; len<(n<<1); len<<=1); for(int i=n; i<len; ++i){ A[i]=B[i]=0; } NTT(A,1); NTT(B,1); for(int i=0; i<len; ++i){ A[i]=mul(A[i],B[i]); } NTT(A,-1); } int t,nn,m; LL a[MAXN],b[MAXN]; LL ans,MAX; int main() { getwn(); scanf("%d",&t); while(t--) { MAX=0; ans=0; scanf("%d",&nn); for(int i=0;i<nn;i++) { scanf("%lld",&a[i]); ans+=a[i]*a[i]; } for(int i=0;i<nn;i++) { scanf("%lld",&b[nn-i-1]); ans+=b[nn-i-1]*b[nn-i-1]; } for(int i=0;i<nn;i++) { a[i+nn]=a[i]; b[i+nn]=0; } Convolution(a,b,2*nn); for(int i=nn;i<2*nn;i++) { MAX=max(MAX,a[i]); } printf("%lld\n",ans-2*MAX); } return 0; }
相关推荐
根据提供的文件内容,本文将介绍基于FPGA的有限域NTT算法设计与实现的相关知识点。 首先,NTT(Number Theoretic Transform)算法是一种在有限域上执行快速傅里叶变换(FFT)的技术。在公钥加密系统中,大数乘法是...
朴素的NTT算法复杂度为O(N^2),即涉及F_p中的环操作次数。而快速傅里叶变换(FFT)的复杂度降低为O(N log N)。NTT在以下应用中扮演重要角色: - F_p[X]中的快速多项式乘法 - 利用中国剩余定理在Z[X]、(Z/nZ)[X]、F...
快速数论变换(Fast Number Theoretic Transform, NTT)是一种在数论背景下进行的高效算法,主要用于在有限域上进行大规模的线性运算,如乘法、卷积等。与快速傅里叶变换(FFT)类似,NTT在计算速度上具有显著优势,...
这是任意模数NTT的代码,非常地实用。我的代码比较好理解,希望能够和大家分享。
### NTT 视频编码板概述 NTT视频编码板是一款专为标清视频编码设计的硬件设备,它主要用于实现视频信号的压缩处理,以便于传输或存储。此款编码板采用的是MPEG-2编码标准,这意味着它能够支持符合MPEG-2标准的视频...
4. 数值计算:包括Simpson积分、快速傅立叶变换(FFT)、离散傅立叶变换(NTT)以及拉格朗日插值等。 5. 字符串处理:KMP算法、扩展KMP、Manacher算法、AC自动机和后缀数组(SA)是处理字符串问题的强大工具。后缀...
### NTT五大关键技术详解 #### 一、AI技术“corevo®” **1.1 Agent-AI** Agent-AI是一种能够理解和响应人类意图与情绪的人工智能技术,它旨在通过高度对话来支持人们的日常生活。这一技术的核心在于: - **听取...
数论变换(Number Theoretic Transform,简称NTT)是一种在数论背景下,与快速傅里叶变换(FFT)类似的算法。它在处理模数下的多项式乘法时展现出高效性,尤其在密码学、编码理论和计算数论等领域有广泛应用。在Java...
在这些体制中,快速数论变换(Number Theoretic Transform, NTT)算法起着至关重要的作用,尤其是在多项式乘法运算方面。 #### 二、格密码体制 ##### 2.1 格代数结构 格密码体制的基础是格(lattice)的概念。格...
- **适用算法**: 高精度加减法、FFT/NTT等。 - **解释**: 这类算法无论数据量多大,执行时间基本保持不变。例如,在处理高精度计算时,虽然数字可能非常大,但算法本身的操作是固定的,因此时间复杂度为O(1)。 2....
0 ( ) 1 s Be Ws NTT τ τ − = + 数字控制器的传递函数: 00 / (1) 1 (1) ( ) 1 1 T T TN B T Y z e ze W z R z τ τ − − − = + 闭环系统的传递函数: 00 / (1) 1 (1) ( ) 1 1 T T TN B T Y z e ze W z R ...
Misty1算法是日本电子通信研究所(Nippon Telegraph and Telephone Corporation, NTT)于1997年提出的一种8轮非线性反馈移位寄存器(NLFSR)结构的分组密码。它的设计理念是结合线性和非线性特性,通过大量的异或...
NTT HC-1000网络摄像头是一款专为远程监控和视频通信设计的设备,它提供了录像和截图功能,使得用户能够记录并保存重要的视频片段和图像。在使用这款摄像头时,可能会遇到各种问题,包括声音无法开启、无法自动录像...
数论变换(Number-Theoretic Transform,NTT)是一种在数论背景下类似于快速傅里叶变换(Fast Fourier Transform,FFT)的算法。在数学和计算机科学中,NTT主要用于高效地处理模数上的多项式乘法。这个特定的代码是...
《2020年全球威胁情报报告》是NTT公司发布的有关当前网络安全威胁及趋势的专业报告。该报告重点分析了网络安全的现状,尤其是在新冠疫情期间全球商业环境的变化,并提出了相应的安全建议。以下是根据文档内容提取的...
Montgomery算法是目前最适合于通用处理器软件实现的大整数模乘算法。1996年,Koc总结了该算法的五种实现方法:SOS、CIOS、FIOS、FIPS和CIHS,并指出CIOS方法综合性能较优。首先深入分析了FIOS实现方法,并通过消除...
NTT HC-1000网络摄像头的固件01.02.0001-00.05.0068
台湾恩悌悌,作为NTT Communications在台湾的直属分公司,其业务主要依赖于日本NTT的IP网络骨干,提供电信服务和解决方案。因此,公司在服务器的销售和服务方面具有丰富的经验。在服务日商的过程中,台湾恩悌悌发现...
通过对NTT、INTT以及CWM算法流程的深入分析和优化设计,有效地提高了算法的计算效率和硬件资源利用率。这一研究成果不仅为CRYSTALS-Kyber算法的实际应用提供了有力支持,也为后量子密码领域的发展贡献了一份力量。