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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)

發(fā)布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

FREQUENT - Frequent values

luogu-SP1684

poj 3368

題目大意:

有一個單調(diào)不降序列,讓你求出某些區(qū)間內(nèi)的出現(xiàn)次數(shù)最多的數(shù)出現(xiàn)的次數(shù)(有多組數(shù)據(jù),以0結(jié)尾)

輸入樣例

10 3 -1 -1 1 1 1 1 3 10 10 10 2 3 1 10 5 10 0

輸出樣例

1 4 3

數(shù)據(jù)范圍:

1≤n,q≤1000001 ≤ n, q ≤ 1000001n,q100000
?100000≤ai≤100000-100000 ≤ a _{i} ≤ 100000?100000ai?100000

解題思路:

用線段樹,同時要保存左邊數(shù)字出現(xiàn)的次數(shù),和右邊數(shù)字出現(xiàn)的次數(shù),如果中間相等,就可以嘗試拼接

代碼:

#include<cstdio> #include<cstring> #include<iostream> #define max(x,y) (x)>(y)?(x):(y) using namespace std; int n,m,x,y,s[100500]; struct rec {int l,r,num,ls,rs; }tree[800500]; void up(int dep,int mid)//傳遞 {tree[dep].num=max(tree[dep*2].num,tree[dep*2+1].num);tree[dep].ls=tree[dep*2].ls;//ls是左邊的數(shù)出現(xiàn)的次數(shù)tree[dep].rs=tree[dep*2+1].rs;//rs是右邊的數(shù)出現(xiàn)的次數(shù)if (s[mid]==s[mid+1])tree[dep].num=max(tree[dep].num,tree[dep*2].rs+tree[dep*2+1].ls);//如果可以就合并if (s[tree[dep].l]==s[mid+1])tree[dep].ls+=tree[dep*2+1].ls;//同上if (s[mid]==s[tree[dep].r])tree[dep].rs+=tree[dep*2].rs;return; } void make(int dep)//建樹 {if (tree[dep].l==tree[dep].r){tree[dep].num=1;tree[dep].ls=1;tree[dep].rs=1;return;}int mid=(tree[dep].l+tree[dep].r)>>1;tree[dep*2].l=tree[dep].l,tree[dep*2].r=mid;tree[dep*2+1].l=mid+1,tree[dep*2+1].r=tree[dep].r;make(dep*2);make(dep*2+1);up(dep,mid);return; } int find(int dep,int l,int r) {if (tree[dep].l==l&&tree[dep].r==r) return tree[dep].num;if (tree[dep].l>=tree[dep].r) return 0;int mid=(tree[dep].l+tree[dep].r)>>1,sum=1,sum1=1;if (r<=mid) return find(dep*2,l,r);//在左邊if (l>mid) return find(dep*2+1,l,r);//在右邊if (s[mid]==s[mid+1]) sum=min(mid-l+1,tree[dep*2].rs)+min(r-mid,tree[dep*2+1].ls);//合并sum1=max(find(dep*2,l,mid),find(dep*2+1,mid+1,r));//去一個更優(yōu)的return max(sum,sum1);//兩種方法選一種 } int main() {while(scanf("%d",&n),n)//多組數(shù)據(jù){memset(tree,0,sizeof(tree));scanf("%d",&m);for (int i=1;i<=n;++i)scanf("%d",&s[i]);tree[1].l=1;tree[1].r=n;make(1);for (int i=1;i<=m;++i){scanf("%d %d",&x,&y);printf("%d\n",find(1,x,y));}} }

總結(jié)

以上是生活随笔為你收集整理的【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 老公吃小头头视频免费观看 | 免费av入口 | 中文成人无字幕乱码精品区 | 亚洲美女久久 | 99re超碰 | 男女那个视频 | 欧美成人高清 | 最近免费中文字幕中文高清百度 | 天堂а√在线中文在线鲁大师 | 欧美极品jizzhd欧美 | 欧美成人高清视频 | 777四色 | 日韩高清欧美 | 国产精品久久久久aaaa | 91免费视频 | 国产精品一线二线三线 | 91视频国产一区 | 日韩免费av一区 | 国产精品夜夜躁视频 | 日韩视频福利 | 亚洲图片88 | 青青青在线观看视频 | 国产中文字幕一区二区 | 精品国产一区二区在线观看 | 国精品人妻无码一区二区三区喝尿 | 午夜黄色福利 | 亚洲图片欧美 | 美日韩av在线| 给我看免费高清在线观看 | 日本在线一级片 | 久久国产影视 | 少妇被按摩师摸高潮了 | 三级网站 | 亚洲一区二区三区视频 | 在厨房拨开内裤进入毛片 | 欧美日本亚洲韩国国产 | 精品伦一区二区三区 | 日韩色图片 | 无码人妻aⅴ一区二区三区日本 | 日韩女优在线视频 | 91午夜精品 | 国产一区二区三区毛片 | 美女被男人桶出白浆喷水 | 国产网站免费看 | 69精品久久| 一区二区三区四区视频在线观看 | 欧美午夜一区二区 | 久久久久久国 | 日韩亚洲欧美中文字幕 | 伊人网址 | 久久久国产成人一区二区三区 | 999视频| 国产一毛片 | 国产精选久久久 | 一区二区伦理片 | 精品免费久久久 | 女av在线 | www网站在线免费观看 | 一区二区日韩欧美 | 福利视频一区二区三区 | 国产处女| 伊人激情视频 | 国产91区 | 国产精品久久..4399 | 国产成人久久精品麻豆二区 | 特级做a爰片毛片免费69 | 久久夜色网 | 中文字幕免费在线 | 午夜精品国产精品大乳美女 | 毛片基地在线播放 | 免费精品无码AV片在线观看黄 | 久久久亚洲一区二区三区 | 最新中文字幕一区 | 饥渴丰满的少妇喷潮 | 久久精品伊人 | 日韩高清在线观看 | 操小妞| 色月婷婷 | 三级黄色在线播放 | 麻豆91在线播放 | 国产亚洲欧美精品久久久久久 | 亚洲free性xxxx护士白浆 | 亚洲天堂五月 | 日韩一区二区三区视频在线观看 | 超碰免费在线播放 | 亚洲一区二区电影网 | 91美女啪啪 | 久久久久久久一区二区 | 日韩精品一区二区在线看 | 亚洲色图偷 | 激情小视频 | 国产精品久久久久久久久久久久久久久久久 | 亚洲码欧美码一区二区三区 | 激情伊人| 香蕉爱爱视频 | 亚洲欧美自偷自拍 | 99热这里只有精品2 91免费版黄 | 国内偷拍第一页 | 午夜久久久久久久 |