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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【线段树】蝴蝶与花(P6859)

發(fā)布時(shí)間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【线段树】蝴蝶与花(P6859) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

正題

P6859


題目大意

給你一個(gè)由1,2組成的序列,要求完成寫下列操作:

  • 修改一個(gè)數(shù)
  • 查找一段區(qū)間,使其區(qū)間和為s(輸出左端點(diǎn)最小的一組)

  • 解題思路

    用線段樹來維護(hù)該序列,對(duì)于每次查詢,先找到從1開始不小于s的一段

    如果這一段是s直接輸出,否則是s+1

    設(shè)當(dāng)前左右端點(diǎn)分別為l,r,考慮向右移動(dòng)左端點(diǎn):

  • al=1a_l=1al?=1,則左端點(diǎn)向右移一位,可以直接滿足條件
  • al=2,ar+1=1a_l=2,a_{r+1}=1al?=2,ar+1?=1,則左右端點(diǎn)各向后移一位,可以直接滿足條件
  • al=ar+1=2a_l=a_{r+1}=2al?=ar+1?=2,則左右端點(diǎn)各向后移一位,重復(fù)進(jìn)行該操作
  • 上述過程就是在左右端點(diǎn)右邊找到第一個(gè)1,這可以在線段樹上二分實(shí)現(xiàn)


    code

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long #define N 2000100 using namespace std; ll n,m,x,y,g1,g2,sum,now,a[N]; char s[10]; struct Tree {#define ls x*2#define rs x*2+1ll s[N<<2];void push_up(ll x){s[x]=s[ls]+s[rs];return;}void build(ll x,ll l,ll r){if(l==r){s[x]=a[l];return;}ll mid=l+r>>1;build(ls,l,mid);build(rs,mid+1,r);push_up(x);return;}void change(ll x,ll l,ll r,ll y){if(l==r){s[x]=a[l];return;}ll mid=l+r>>1;if(y<=mid)change(ls,l,mid,y);else change(rs,mid+1,r,y);push_up(x);return;}ll ask(ll x,ll l,ll r,ll k){if(l==r){now+=s[x];return l;}ll mid=l+r>>1;if(k>s[ls]){now+=s[ls];return ask(rs,mid+1,r,k-s[ls]);}else return ask(ls,l,mid,k);}ll ask1(ll x,ll l,ll r,ll y,ll k){if(l==r)return l;ll mid=l+r>>1;if(y>mid)return ask1(rs,mid+1,r,y,k-s[ls]);else if(s[ls]-k==(mid-y+1)*2)return ask1(rs,mid+1,r,mid+1,0);else return ask1(ls,l,mid,y,k);} }T; int main() {scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;++i){scanf("%lld",&a[i]);sum+=a[i];}T.build(1,1,n);while(m--){scanf("%s",s);if(s[0]=='C'){scanf("%lld%lld",&x,&y);sum+=y-a[x];a[x]=y;T.change(1,1,n,x);}else{scanf("%d",&y);if(!y||y>sum){puts("none");continue;}else if(y==1){x=T.ask1(1,1,n,1,0);if(a[x]==1)printf("%d %d\n",x,x);else puts("none");continue;}now=0;x=T.ask(1,1,n,y);if(now==y){printf("%lld %lld\n",1,x);continue;}g1=g2=n+1;if(now!=x*2)g1=T.ask1(1,1,n,1,0);if(x<n&&sum-now!=(n-x)*2)g2=T.ask1(1,1,n,x+1,now);if(x+g1-1>n&&g2>n)puts("none");else if((g1+1<=g2-x+1||g2>n)&&x+g1-1<=n)printf("%lld %lld\n",g1+1,x+g1-1);else printf("%lld %lld\n",g2-x+1,g2);}}return 0; }

    總結(jié)

    以上是生活随笔為你收集整理的【线段树】蝴蝶与花(P6859)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产日韩精品视频 | 91刺激视频 | 日韩精品第1页 | 五月婷婷在线播放 | 天天做天天看 | 91精品国产aⅴ一区二区 | 性av网站 | 围产精品久久久久久久 | 日本福利片在线观看 | 果冻av在线 | 日本一区二区免费看 | 亚洲高清视频免费观看 | 无码精品黑人一区二区三区 | 人妻少妇精品一区二区三区 | 国产777| 黄色片中国 | 亚洲大胆视频 | 宿舍女女闺蜜调教羞辱 | 欧美精品一区二区三区蜜臀 | 成人一区二区在线观看 | 国产成人综合精品 | 性国产精品 | 夜间福利视频 | 在线观看成年人网站 | 久久96视频 | 亚洲乱码国产乱码精品精大量 | 欧美日韩亚洲一区二区三区 | 天天摸天天做天天爽水多 | 亚洲欧美日韩中文在线 | 日韩精品中文在线 | 久久久999国产精品 天堂av中文在线 | 日本乱论视频 | 成人国产精品一区二区 | 久久精品久久精品久久 | 91免费福利视频 | 国产极品一区二区 | 岛国精品在线 | 波多野结衣中文在线 | 琪琪色18 | 91精品国产自产精品男人的天堂 | 欧美一区二区三区电影 | 国产精品亚洲一区二区无码 | 国产成人精品久久久 | wwwxxx黄色 | 亚洲av综合色区无码一区爱av | 成人自拍视频网站 | 深夜视频在线播放 | 国产伦精品一区二区三区高清版禁 | 日韩av无码久久 | 天天干夜夜想 | 国精产品一区二区三区 | 日韩三级免费看 | 国产精品腿扒开做爽爽爽挤奶网站 | 午夜影院在线看 | 五月婷婷基地 | 成人欧美视频 | 色情毛片 | 日韩欧美在线观看一区二区 | 色婷婷成人 | 伊人久久综合 | 黄色片久久 | 综合爱爱网 | 高清国产一区二区三区四区五区 | 6080黄色 | 久操热 | 九九热视频在线免费观看 | 制服丝袜av在线播放 | 一级视频片 | 秋霞一区二区三区 | 饥渴少妇伦色诱公 | 人人草在线观看 | 爱爱网站视频 | 一级美女视频 | 欧美另类高清 | 色综合天天网 | 老头老太吃奶xb视频 | 色男人在线| 韩国三色电费2024免费吗怎么看 | 1024在线视频| 日日草草 | 丁香六月婷婷综合 | 欧美人在线 | 欧美20p| 超碰在线进入 | 一级特黄肉体裸片 | 亚洲最大综合网 | 国产经典久久久 | 67194成人在线| 91色多多| 亚洲成人自拍视频 | 岛国二区三区 | 天堂综合网久久 | 花房姑娘免费观看全集 | 91精品国产91久久久久 | 免费看欧美黄色片 | 丝袜 亚洲 另类 欧美 重口 | 一区二区黄色片 | 二三区视频 | 国产精品suv一区二区69 |