日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bzoj 2962 序列操作

發布時間:2025/6/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj 2962 序列操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2962: 序列操作

Time Limit:?50 Sec??Memory Limit:?256 MB
[Submit][Status][Discuss]

Description

  有一個長度為n的序列,有三個操作1.I a b c表示將[a,b]這一段區間的元素集體增加c,2.R a b表示將[a,b]區間內所有元素變成相反數,3.Q a b c表示詢問[a,b]這一段區間中選擇c個數相乘的所有方案的和mod 19940417的值。

Input

  第一行兩個數n,q表示序列長度和操作個數。
  第二行n個非負整數,表示序列。
  接下來q行每行輸入一個操作I a b c或者 R a b或者Q a b c意義如題目描述。

Output

  對于每個詢問,輸出選出c個數相乘的所有方案的和mod19940417的值。

Sample Input

5 5
1 2 3 4 5
I 2 3 1
Q 2 4 2
R 1 5
I 1 3 -1
Q 1 5 1

Sample Output

40
19940397
樣例說明
  做完第一個操作序列變為1 3 4 4 5。
  第一次詢問結果為3*4+3*4+4*4=40。
  做完R操作變成-1 -3 -4 -4 -5。
  做完I操作變為-2 -4 -5 -4 -5。
  第二次詢問結果為-2-4-5-4-5=-20。

HINT

?

  100%的數據n<=50000,q<=50000,初始序列的元素的絕對值<=109,I a b c中保證[a,b]是一個合法區間,|c|<=109,R a b保證[a,b]是個合法的區間。Q a b c中保證[a,b]是個合法的區間1<=c<=min(b-a+1,20)。

?

Source

中國國家隊清華集訓 2012-2013 第三天

?

我寫的題解看這里的T2

http://www.cnblogs.com/TheRoadToTheGold/p/7723564.html?

?

網上的參考題解

http://blog.csdn.net/werkeytom_ftd/article/details/51767696

?

#include<cstdio> #include<iostream> #include<algorithm>using namespace std;#define N 50001const int mod=19940417;typedef long long LL;int n;int C[N][21];int f[N<<2]; int siz[N<<2],mid[N<<2]; bool rev[N<<2];struct node { int sum[21]; }ans[N<<2];void read(int &x) {x=0; int ff=1; char c=getchar();while(!isdigit(c)) { if(c=='-') ff=-1; c=getchar(); }while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }x*=ff; }int tot=0;void MOD(int &a,int b) {a+=b;a-= a>=mod ? mod : 0; }void pre(int n) {C[0][0]=1;for(int i=1;i<=n;i++){C[i][0]=1;for(int j=1;j<=min(i,20);j++) C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;} }void update(int k) {for(int i=1;i<=20;i++){ans[k].sum[i]=0;for(int j=1;j<i;j++) MOD(ans[k].sum[i],1ll*ans[k<<1].sum[j]*ans[k<<1|1].sum[i-j]%mod);MOD(ans[k].sum[i],ans[k<<1].sum[i]); MOD(ans[k].sum[i],ans[k<<1|1].sum[i]); } }void build(int k,int l,int r) {siz[k]=r-l+1;if(l==r) { read(ans[k].sum[1]); MOD(ans[k].sum[1],0); return; }mid[k]=l+r>>1;build(k<<1,l,mid[k]); build(k<<1|1,mid[k]+1,r);update(k); }void insert(int k,int w) {MOD(f[k],w);for(int i=20;i;i--){int x=w;for(int j=i-1;j;j--,x=1ll*x*w%mod)MOD(ans[k].sum[i],1ll*x*ans[k].sum[j]%mod*C[siz[k]-j][i-j]%mod);MOD(ans[k].sum[i],1ll*x*C[siz[k]][i]%mod);} }void turn(int k) {rev[k]^=1;if(f[k]) f[k]=mod-f[k];for(int i=19;i>0;i-=2) if(ans[k].sum[i]) ans[k].sum[i]=mod-ans[k].sum[i]; }void down(int k) {if(rev[k]) turn(k<<1),turn(k<<1|1),rev[k]=0;if(f[k]) insert(k<<1,f[k]),insert(k<<1|1,f[k]),f[k]=0; }void add(int k,int l,int r,int opl,int opr,int w) {if(l>=opl && r<=opr) { insert(k,w); return; }down(k);if(opl<=mid[k]) add(k<<1,l,mid[k],opl,opr,w);if(opr>mid[k]) add(k<<1|1,mid[k]+1,r,opl,opr,w);update(k); }void reverse(int k,int l,int r,int opl,int opr) {if(l>=opl && r<=opr) { turn(k); return; }down(k);if(opl<=mid[k]) reverse(k<<1,l,mid[k],opl,opr);if(opr>mid[k]) reverse(k<<1|1,mid[k]+1,r,opl,opr);update(k); }node query(int k,int l,int r,int opl,int opr,int w) {if(l>=opl && r<=opr) return ans[k];down(k);if(opr<=mid[k]) return query(k<<1,l,mid[k],opl,opr,w);else if(opl>mid[k]) return query(k<<1|1,mid[k]+1,r,opl,opr,w);else {node L=query(k<<1,l,mid[k],opl,opr,w),R=query(k<<1|1,mid[k]+1,r,opl,opr,w);node tmp;for(int i=1;i<=w;i++){tmp.sum[i]=(L.sum[i]+R.sum[i])%mod;for(int j=1;j<i;j++) MOD(tmp.sum[i],1ll*L.sum[j]*R.sum[i-j]%mod);}return tmp;} }int main() {int n,m; char c[3];read(n); read(m);pre(n);build(1,1,n);int l,r,w;while(m--){scanf("%s",c); read(l); read(r);if(c[0]=='I'){read(w); w%=mod;w+= w<0 ? mod : 0;add(1,1,n,l,r,w);}else if(c[0]=='R') reverse(1,1,n,l,r);else{read(w);node p=query(1,1,n,l,r,w);printf("%d\n",query(1,1,n,l,r,w).sum[w]);}} }

?

轉載于:https://www.cnblogs.com/TheRoadToTheGold/p/7679195.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的bzoj 2962 序列操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲人av在线 | 黄色成年网站 | 三级不卡 | 初尝人妻少妇中文字幕 | 国产免费一级视频 | 国产午夜一级一片免费播放 | 日本打屁股网站 | 精品少妇人妻av免费久久洗澡 | 国产一区二区三区在线免费观看 | 国产成人无码a区在线观看视频 | 日本成人在线视频网站 | 亚洲区小说 | a v免费视频 | 老师张开让我了一夜av | av免费观看网站 | 亚洲午夜国产 | 中文字幕超清在线免费观看 | 日韩欧美视频免费在线观看 | 成人高潮片免费视频 | 亚洲一区二区高清视频 | 人妻无码一区二区三区免费 | 91色视频在线观看 | 国产处女 | 草久在线 | 漂亮人妻洗澡被公强 日日躁 | 91视频免费看 | 开心激情久久 | 色涩综合 | 亚洲在线观看视频 | www.com日本| 日韩aaaaa | 国产精品国产一区二区 | 亚洲手机看片 | 91日日夜夜 | 劲爆欧美第一页 | 国产欧美日韩中文字幕 | 久久精品a| 国产三级精品三级在线 | 女同在线视频 | 亚洲国产精品国自产拍久久 | 婷婷激情网站 | 国产尤物av| 日本成人三级电影 | 成人激情自拍 | 欧美日韩亚洲国产 | 欧美123| 国模av在线| 精品一区二区三区免费毛片 | 日韩美女免费视频 | 欧美怡红院 | 久久久久亚洲av无码麻豆 | 爱情岛论坛自拍亚洲品质极速最新章 | 女同hd系列中文字幕 | 亚洲少妇第一页 | 中国黄色大片 | 久久久精品影院 | 国产网友自拍 | 亚洲精品一区二区三区四区五区 | 国产在线你懂得 | 亚洲色欧美 | 啪视频在线 | 在线免费观看av不卡 | www黄色片 | 四虎黄网| 国产激情一区二区三区四区 | 亚洲国产精品狼友在线观看 | 国产一区二区视频免费 | 久久99精品久久久久久琪琪 | 日韩一级片中文字幕 | 久久久国产精品一区二区三区 | 超碰国产一区二区三区 | 国产午夜影院 | 欧美性一区二区三区 | 国产农村妇女毛片精品久久麻豆 | 久久久久夜夜夜精品国产 | 久久婷婷国产 | 日本69av | 国产精品色婷婷99久久精品 | 色偷偷av| 午夜久久久久久久久 | 亚洲天堂中文 | 成人熟女一区二区 | 欧美男优| 青娱乐自拍视频 | 午夜污污| 国产亚洲AV无码成人网站在线 | 亚洲色图网友自拍 | 色姑娘av| 日韩色图视频 | 精品国产乱码久久久久久蜜臀网站 | 亚洲av无码一区二区乱子伦as | 亚洲视频一二区 | 麻豆av免费在线观看 | 淫视频在线观看 | 91精品久久久久久久 | 黄色片网站免费观看 | 国产做受麻豆动漫 | 91国产免费视频 | 久久免费影院 |