麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

區間 Range

2019-11-11 05:10:35
字體:
來源:轉載
供稿:網友

題目


由于%沒有逆運算,直接樹狀數組或線段樹會出問題 //考試時搞了半天樹狀數組,發現會出現0,只好暴力,居然有60分,正解真心不好想出來

正解思路:

把序列分成長度為k的若干塊,每一塊維護前綴和后綴乘積(代碼中的f和g分別維護前綴后綴乘積)每個長度為k的區間對應了一整塊或者前一塊的后綴和后一塊的前綴,直接乘起來就得到答案時間復雜度為O(N)
#include<cstdio>#include<iostream>using namespace std;typedef long long LL;const int maxn=20000005;int n,k,P,A,B,C,D;int s[maxn],f[maxn],g[maxn];int ans;int main(){ freopen("range.in","r",stdin); freopen("range.out","w",stdout); scanf("%d%d%d%d%d%d%d",&n,&k,&P,&A,&B,&C,&D); s[1]=A; for(int i=2;i<=n;i++) s[i]=((LL)s[i-1]*B+C)%D; for(int i=1;i<=n;i++) if((i-1)%k==0) f[i]=s[i]; else f[i]=(LL)f[i-1]*s[i]%P; g[n+1]=1; for(int i=n;i;i--) if(i%k==0) g[i]=s[i]; else g[i]=(LL)g[i+1]*s[i]%P; for(int i=1;i+k-1<=n;i++) if((i-1)%k==0) ans^=g[i]; else ans^=(LL)f[i+k-1]*g[i]%P;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久久久影视 | 国产一级毛片高清视频 | 国产精品视频专区 | 国产一区二区三区手机在线 | 欧美国产日韩在线 | 永久在线观看电影 | 亚洲精品一区二区三区在线看 | 国产精品一区二区x88av | 国产日韩中文字幕 | 91网址在线播放 | 91在线视频播放 | 欧美中文字幕一区二区三区亚洲 | 欧产日产国产精品v | 成人毛片免费看 | 国产papa| 香蕉久久久 | 91精品国 | 成人爱爱电影 | 亚洲一区二区三区视频免费 | 欧美乱论| 91成人一区 | 亚洲一区在线免费视频 | 日本中文字幕网址 | xxxxxx免费 | 韩毛片 | 日韩色视频| 国产一级毛片高清 | 国产99久久久久久免费看农村 | 国产在线播放一区二区 | 色就操 | 久久国产一 | 欧美一级网 | 色天使中文字幕 | 黄色网址你懂的 | 一区二区三区日韩精品 | 羞羞答答影院 | 在线看91 | 日本视频免费观看 | 久久久国产精品成人免费 | 一区二区三区视频在线观看 | 精品一区二区三区毛片 |