「题解」:天才绅士少女助手克里斯蒂娜
Posted xingmi-weiyouni
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「题解」:天才绅士少女助手克里斯蒂娜相关的知识,希望对你有一定的参考价值。
问题 B:天才绅士少女助手克里斯蒂娜
时间限制: 2 Sec 内存限制: 512 MB
题面
题面谢绝公开。
题解
化一批柿子就能线段树维护了……以下抄迪哥柿子
$\sum\limits_i=l^r \sum\limits_j=l^r x_i^2 y_j^2 - x_i y_i x_j y_j$
经过一系列复杂神奇的物理生物化学傅立叶变化这个柿子变成了这样(其实就是乘法分配律……)
$(\sum\limits_i=l^rx_i^2)\times(\sum\limits_i=l^ry_i^2) - (\sum\limits_i=l^rx_iy_i)^2$
线段树维护$x_i^2、y_i^2、x_iy_i$的区间和即可。
#include<bits/stdc++.h> #define int long long #define mod 20170927 #define read(A) A=init() #define rint register int using namespace std; inline int init() int a=0,b=1;char ch=getchar(); while(ch<‘0‘||ch>‘9‘)if(ch==‘-‘)b=-1;ch=getchar(); while(ch>=‘0‘&&ch<=‘9‘)a=(a<<3)+(a<<1)+ch-‘0‘;ch=getchar(); return a*b; int n,m,x[1000006],y[1000006]; struct nodeint x,y,k;t[1000006<<2]; inline void update(int k) t[k].x=(t[k<<1].x+t[k<<1|1].x)%mod; t[k].y=(t[k<<1].y+t[k<<1|1].y)%mod; t[k].k=(t[k<<1].k+t[k<<1|1].k)%mod; inline void build(int k,int l,int r) if(l==r) int in_x,in_y; read(in_x),read(in_y);in_x%=mod,in_y%=mod; t[k].x=in_x*in_x%mod;t[k].y=in_y*in_y%mod; t[k].k=in_x*in_y%mod; return ; int mid=(l+r)>>1; build(k<<1,l,mid); build(k<<1|1,mid+1,r); update(k); return ; inline void change(int k,int l,int r,int p,int dx,int dy) if(l==r) t[k].x=dx*dx;t[k].y=dy*dy; t[k].k=dx*dy;return ; int mid=(l+r)>>1; if(p<=mid)change(k<<1,l,mid,p,dx,dy); else change(k<<1|1,mid+1,r,p,dx,dy); update(k); return ; inline void query(int k,int l,int r,int L,int R,int &dx,int &dy,int &dxy) if(L<=l&&r<=R) dx=(dx+t[k].x)%mod,dy=(dy+t[k].y)%mod; dxy=(dxy+t[k].k)%mod;return ; int mid=(l+r)>>1,linx=0,liny=0,linxy=0; if(L<=mid)query(k<<1,l,mid,L,R,linx,liny,linxy); if(R>mid)query(k<<1|1,mid+1,r,L,R,linx,liny,linxy); dx=(dx+linx)%mod,dy=(dy+liny)%mod; dxy=(dxy+linxy)%mod;return ; signed main() read(n),read(m); build(1,1,n); for(rint i=1,Q,P,X,Y;i<=m;++i) read(Q); if(Q==1) read(P),read(X),read(Y); change(1,1,n,P,X,Y); else read(X),read(Y); int ux=0,uy=0,uxy=0; query(1,1,n,X,Y,ux,uy,uxy); printf("%lld\n",((ux*uy%mod-uxy*uxy%mod)%mod+mod)%mod); return 0;
以上是关于「题解」:天才绅士少女助手克里斯蒂娜的主要内容,如果未能解决你的问题,请参考以下文章
[CSP-S模拟测试]:天才绅士少女助手克里斯蒂娜(数学+树状数组)
csps-s模拟测试60嘟嘟噜,天才绅士少女助手克里斯蒂娜,凤凰院凶真题解