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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷 - P4755 Beautiful Pair(笛卡尔树+主席树)

發(fā)布時間:2024/4/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 - P4755 Beautiful Pair(笛卡尔树+主席树) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個長度為 n 的數(shù)列 a,現(xiàn)在一個數(shù)對 ( i , j ) 如果滿足 a[ i ] * a[ j?] <=max( a[ i ] ~ a[ j ]?),則稱其為美麗的,求出美麗對的數(shù)量

題目分析:直接統(tǒng)計是比較困難的,但正難則反,我們可以枚舉每個數(shù)作為最大值時,在其管轄的區(qū)間內(nèi)進(jìn)行統(tǒng)計,對于某個最大值 i 來說,肯定存在著 l[ i ] 和 r[ i ] ,使得 l[ i ] - 1 是 i 左側(cè)首個大于 a[ i ] 的位置,r[ i ] + 1 是 i 右側(cè)首個大于 a[ i ] 的位置,這樣在區(qū)間 [ l[ i ] , r[ i ] ] 中,跨過位置 i 時的最大值一定是 a[ i ] ,于是區(qū)間就被分成了兩段:[ l[ i ] , i ] , [ i , r[ i ] ],因為乘積運算滿足交換律,所以遍歷長度較小的一段,在另一段中查找符合條件的元素的個數(shù)即可,假設(shè)當(dāng)前枚舉的數(shù)字為 a[ j ] ,最大值為 a[ i ] ,所以需要在區(qū)間內(nèi)查找 [ 1 , a[ i ] / a[ j ] ] 的元素個數(shù),這顯然是線段樹的功能,不過如果放在區(qū)間上詢問的話,就需要可持久化一下來使用,也就是主席樹了,對于上述找 l[ i ] 和 r[ i ] 的過程,可以用笛卡爾樹來完成,然后 dfs 一遍統(tǒng)計答案就好了

代碼:
?

#include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> #include<bitset> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;int a[N];LL ans; /*主席樹*/ struct Node1 {int l,r;int sum; }tree[N*35];int cnt,root[N];void update(int num,int &k,int l,int r) {tree[cnt++]=tree[k];k=cnt-1;tree[k].sum++;if(l==r)return;int mid=l+r>>1;if(num<=mid)update(num,tree[k].l,l,mid);elseupdate(num,tree[k].r,mid+1,r); }int query(int i,int j,int L,int R,int l,int r)//i:左端點根節(jié)點編號,j:右端點根節(jié)點編號,l,r:目標(biāo)區(qū)間,L,R:當(dāng)前區(qū)間 {if(l>r)return 0;if(R<l||L>r)return 0;if(L>=l&&R<=r)return tree[j].sum-tree[i].sum;int mid=L+R>>1;return query(tree[i].l,tree[j].l,L,mid,l,r)+query(tree[i].r,tree[j].r,mid+1,R,l,r); } /*主席樹*/ /*笛卡爾樹*/ struct Node2 {int l,r,val; }t[N];stack<int>s;void insert(int x) {while(s.size()&&t[s.top()].val<t[x].val)s.pop();t[x].l=t[s.top()].r;//x->lsont[s.top()].r=x;//fa->x(rson)s.push(x); } /*笛卡爾樹*/ void dfs(int k,int l,int r) {if(k==0)//特判一下根 {if(t[k].l)dfs(t[k].l,l,r);if(t[k].r)dfs(t[k].r,l,r);return;}if(k-l<=r-k)//遍歷左區(qū)間 for(int i=l;i<=k;i++)ans+=query(root[k-1],root[r],1,inf,1,t[k].val/t[i].val);else//遍歷右區(qū)間 for(int i=k;i<=r;i++)ans+=query(root[l-1],root[k],1,inf,1,t[k].val/t[i].val);if(t[k].l)dfs(t[k].l,l,k-1);if(t[k].r)dfs(t[k].r,k+1,r); }void init() {t[0].val=inf;t[0].l=t[0].r=0;s.push(0);root[0]=0;tree[0].l=tree[0].r=tree[0].sum=0;cnt=1; }int main() { #ifndef ONLINE_JUDGE // freopen("data.in.txt","r",stdin); // freopen("data.out.txt","w",stdout); #endif // ios::sync_with_stdio(false);init();int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&t[i].val);insert(i);root[i]=root[i-1];update(t[i].val,root[i],1,inf);}dfs(0,1,n);printf("%lld\n",ans);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的洛谷 - P4755 Beautiful Pair(笛卡尔树+主席树)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 无码一区二区 | 欧美精品色哟哟 | 九九综合九九 | 舐め犯し波多野结衣在线观看 | 美国黄色一级大片 | 农村老妇性真猛 | 欧美性受xxxx狂喷水 | 一区二区三区免费视频观看 | 99久久视频 | 毛片在线看片 | 亚洲黄色影院 | 狠狠操很很干 | 日韩一区二区高清 | 精品国产乱码久久久久久婷婷 | av黄色影院 | 免费网站在线高清观看 | 一区二区视频在线观看 | 日本黄色高清视频 | 国产精品无码内射 | 国产日韩欧美高清 | 捆绑调教sm束缚网站 | 三级精品视频 | 天天摸天天添 | 草草视频在线 | 成人精品一区二区三区在线 | 欧美福利小视频 | jav中文字幕| 亚洲国产成人精品女人久久 | 日韩在线一二三 | 97欧美| 久久久精品福利 | 国产精品久久久久久福利 | 黄色国产大片 | 国产精品第108页 | 久久久综合精品 | 熟女视频一区 | 一二三区在线播放 | 日日摸日日添日日碰9学生露脸 | 欧美黄色三级 | 久久艹国产精品 | 日日精 | 欧美性猛交xxxx乱大交俱乐部 | 欧美精品18videosex性欧美 | 久久亚洲精品小早川怜子 | 日本污网站 | 高清一二三区 | 少妇精品一区二区 | www视频在线观看网站 | 久久精品国产亚洲AV无码男同 | 午夜看片网站 | 天堂网视频 | 久草一区| 日本高清三区 | 免费欧美黄色片 | 欧美少妇性生活 | 99伊人网| 成人性做爰aaa片免费 | 亚洲天堂男人av | 网站免费视频www | 欧洲精品免费一区二区三区 | 影音先锋一区 | 欧美噜噜噜 | 国产午夜精品一区二区三区 | 亚欧洲精品在线视频 | 性一交一乱一乱一视频 | 自拍偷拍国内 | 国产天堂av| 老熟妇仑乱一区二区视频 | 久久久久久人妻一区二区三区 | 久久综合亚洲精品 | 河北彩花中文字幕 | 麻豆视频免费网站 | 玩偶游戏在线观看免费 | 中国 免费 av | 一级特级黄色片 | 色成人亚洲 | 国产免费的av | 日本不卡一区二区三区在线观看 | 日韩免费二区 | 亚洲成年网站 | 牛牛澡牛牛爽一区二区 | 他趴在我两腿中间添得好爽在线看 | 爽爽影院在线 | 99在线视频免费观看 | 红桃视频成人 | 男人的天堂你懂的 | 夜色视频网站 | 国产剧情在线 | 男人午夜网站 | 国产日韩一区二区 | 成人av在线网址 | 免费国产成人 | 国产精品国产一区二区 | 亚洲一区 视频 | 91素人约啪| 日本黄色大片免费看 | 国产xxxx18| 在线看免费 | 大地资源高清播放在线观看 |