国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

區(qū)間 Range

2019-11-11 05:59:41
字體:
供稿:網(wǎng)友

題目


由于%沒有逆運(yùn)算,直接樹狀數(shù)組或線段樹會(huì)出問題 //考試時(shí)搞了半天樹狀數(shù)組,發(fā)現(xiàn)會(huì)出現(xiàn)0,只好暴力,居然有60分,正解真心不好想出來

正解思路:

把序列分成長度為k的若干塊,每一塊維護(hù)前綴和后綴乘積(代碼中的f和g分別維護(hù)前綴后綴乘積)每個(gè)長度為k的區(qū)間對(duì)應(yīng)了一整塊或者前一塊的后綴和后一塊的前綴,直接乘起來就得到答案時(shí)間復(fù)雜度為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;
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 贞丰县| 陇川县| 温州市| 平塘县| 资兴市| 仁化县| 武陟县| 集贤县| 务川| 资兴市| 武乡县| 隆回县| 昭通市| 阿克苏市| 巢湖市| 永嘉县| 钟山县| 垦利县| 射阳县| 手机| 大理市| 刚察县| 临高县| 临清市| 土默特右旗| 安顺市| 墨竹工卡县| 米林县| 永年县| 罗源县| 鲜城| 固镇县| 浑源县| 嘉祥县| 德江县| 卓资县| 秦安县| 辽阳县| 建德市| 乡城县| 永靖县|