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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷P3006 [USACO11JAN]瓶颈Bottleneck(堆模拟)

發布時間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P3006 [USACO11JAN]瓶颈Bottleneck(堆模拟) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

?

感覺這題的思路還是挺不錯的。然而為啥全網就一個題解而且只有代碼……然后我只好看著代碼理解了好久……

題意就是有一棵樹,每一個節點向他父親節點連邊,且有一個容量表示每一秒可以經過的牛的數量,每一個點有一堆牛,在滿足容量限制的情況下可以不斷往祖先跳直到跳到1節點。然后問你在保證總時間最短的情況下第$t$秒1節點有多少頭牛

首先,不難發現一個貪心,就是如果向父親的邊能夠流滿的時候,流滿一定比不流滿優

那么我們令每一條邊都強制流滿,然后對每個點記錄一個值$pass[i]$,值為它能向父親流的最大的流量減去它的兒子們向它流的最大流量,不難發現它代表如果每條邊都流滿之后每秒能有多少頭牛離開這個點向祖先去。

那么我們設每一個節點開始時牛的個數為$cow[i]$,那么,$cow[i]/pass[i]$就代表這一個節點的所有牛都走光所需要的時間

那么令$t=cow[i]/pass[i]$,當時間小于等于$t$的時候,我們需要考慮這一個點還剩下多少頭牛。當時間大于$t$的時候,我們已經不需要再考慮這個點還剩下多少頭牛了,因為可以在滿流之后讓它所有的牛都到它的父親那里去。那么,我們可以把它和它的父親看做同一個點,牛的數量為兩個點之和,$pass[fa[i]]$也是兩個點之和(它和父親之間的那條邊的流量因為父親減一次它加一次已經抵消了),然后再對這個點記錄一個新的$t$就好了。這個可以用一個并查集維護

那么,我們對詢問按時間排序。當詢問的時間大于當前$t$的時候,我們把所有$t$小于等于詢問的時間的點全都和它的父親給并起來。當詢問的時間小于等于當前$t$時,答案就是$cow[1]+pass[1]*詢問的時間$($cow[1]$代表所有已經被縮到這一個點的總的牛的數量,然后1點的pass肯定是負數,所以減去就相當于加上這個點的兒子的點全都滿流向它流,在詢問的這段時間里能流多少)

然后總不可能維護時間軸……所以開個優先隊列把所有點的$t$給扔進去就好了,反正就這些點的$t$有用

講的應該還蠻清楚的吧……

1 // luogu-judger-enable-o2 2 //minamoto 3 #include<iostream> 4 #include<cstdio> 5 #include<cstring> 6 #include<algorithm> 7 #include<queue> 8 #define ll long long 9 using namespace std; 10 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 11 char buf[1<<21],*p1=buf,*p2=buf; 12 inline ll read(){ 13 #define num ch-'0' 14 char ch;bool flag=0;ll res; 15 while(!isdigit(ch=getc())) 16 (ch=='-')&&(flag=true); 17 for(res=num;isdigit(ch=getc());res=res*10+num); 18 (flag)&&(res=-res); 19 #undef num 20 return res; 21 } 22 char sr[1<<21],z[20];int C=-1,Z; 23 inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;} 24 inline void print(ll x){ 25 if(C>1<<20)Ot();if(x<0)sr[++C]=45,x=-x; 26 while(z[++Z]=x%10+48,x/=10); 27 while(sr[++C]=z[Z],--Z);sr[++C]='\n'; 28 } 29 const int N=100005; 30 struct query{ll t,res;int id;}ask[N]; 31 inline bool cmp1(query x,query y){return x.t<y.t;} 32 inline bool cmp2(query x,query y){return x.id<y.id;} 33 struct node{ 34 ll t;int x;node(){} 35 node(ll t,int x):t(t),x(x){} 36 inline bool operator <(const node &b)const 37 {return t>b.t;} 38 }; 39 priority_queue<node> q; 40 int fa[N],f[N],lim[N];ll cow[N],pass[N]; 41 int find(int x){ 42 return fa[x]==x?x:fa[x]=find(fa[x]); 43 } 44 int n,m; 45 int main(){ 46 // freopen("testdata.in","r",stdin); 47 n=read(),m=read(); 48 for(int i=1;i<=n;++i) fa[i]=i; 49 for(int i=2;i<=n;++i) 50 f[i]=read(),cow[i]=read(),lim[i]=read(),pass[f[i]]-=lim[i],pass[i]+=lim[i]; 51 for(int i=1;i<=m;++i) 52 ask[i].t=read(),ask[i].id=i; 53 sort(ask+1,ask+1+m,cmp1); 54 for(int i=2;i<=n;++i) 55 if(pass[i]>0) 56 q.push(node(cow[i]/pass[i],i)); 57 int l=1,x,tp; 58 while(!q.empty()&&l<=m){ 59 while(l<=m&&ask[l].t<=q.top().t) 60 ask[l].res=cow[1]-pass[1]*ask[l].t,++l; 61 if(fa[q.top().x]!=q.top().x){q.pop();continue;} 62 x=q.top().x,tp=find(f[x]),cow[tp]+=cow[x]; 63 pass[tp]+=pass[x],fa[x]=tp; 64 if(pass[tp]>0) q.push(node(cow[tp]/pass[tp],tp)); 65 q.pop(); 66 } 67 sort(ask+1,ask+1+m,cmp2); 68 for(int i=1;i<=m;++i) print(ask[i].res); 69 Ot(); 70 return 0; 71 }

?

轉載于:https://www.cnblogs.com/bztMinamoto/p/9622691.html

總結

以上是生活随笔為你收集整理的洛谷P3006 [USACO11JAN]瓶颈Bottleneck(堆模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 免费荫蒂添的好舒服视频 | 在线天堂www在线国语对白 | 伊人网欧美 | 新婚若妻侵犯中文字幕 | 女女同性被吸乳羞羞 | 欧美成人免费一级 | 亚洲精品一区二区三区区别 | 秋霞视频在线 | 亚洲香蕉一区 | 99嫩草| aaaaaa毛片| 寻找身体恐怖电影免费播放 | 性欧美巨大乳 | 亚洲欧美偷拍一区 | 免费av播放 | 一区二区美女视频 | 探花国产| 黑人巨大精品欧美黑白配亚洲 | 日韩午夜剧场 | 国产黄色电影 | 久久久久成人精品无码 | 精品久久久久久国产 | 天天干天天草天天射 | 亚洲人天堂 | 伊人久久精品一区二区三区 | 97人人爽人人爽人人爽人人爽 | 污污的视频网站在线观看 | 动漫玉足吸乳羞免费网站玉足 | 国产aⅴ一区二区三区 | 中文字幕婷婷 | 国产模特av私拍大尺度 | 91免费视频播放 | 欧美亚州 | 秋霞欧美一区二区三区视频免费 | 毛片综合 | 国产aaaaa毛片| 日本成人片在线 | 亚洲精品乱码久久久久久久 | 中文字幕巨乳 | 亚洲综合久久婷婷 | 香蕉中文网 | 免费黄色视屏 | 国产精品天天看 | 亚洲一区二区视频网站 | 国产一二三区免费视频 | 日韩欧美视频一区二区 | 日本女优一区 | 久综合网| chinesepron hd videos国产91 | 好紧好爽再浪一点视频 | 18成人在线观看 | 伊人天堂在线 | 夜夜操天天干 | 亚欧精品视频一区二区三区 | 欧美揉bbbbb揉bbbbb | 国产无遮挡18禁无码网站不卡 | 国产女上位 | 欧美9999 | 久久福利网站 | 侵犯亲女在线播放视频 | 大香蕉毛片| www黄色com | 国产精品久久久久久久免费大片 | 久久久国产精 | 精品福利在线 | 丁香激情视频 | 国产在线网 | 朝鲜黄色片 | 国产视色| 欧美极品少妇xxxxⅹ裸体艺术 | 黄色一级淫片 | 男人的天堂aa| 欧美大片免费高清观看 | 久久手机视频 | 九热视频在线观看 | 免费成人av在线播放 | 国产日皮视频 | 免费av一区二区三区 | 在线午夜电影 | 亚洲一区第一页 | 成年人福利网站 | www国产一区 | 国产美女无遮挡免费视频 | 色综合天天综合网天天看片 | 七月婷婷综合 | 久久精品人人 | 亚洲狼人伊人 | 亚洲av无码乱码国产精品fc2 | 少妇搡bbbb搡bbb搡打电话 | 国产精品一区二区在线播放 | 精品人妻av一区二区 | 亚洲成年人 | 日本中文字幕观看 | 中文字幕免费 | 国产伦乱视频 | 国产精品久久久午夜夜伦鲁鲁 | 最新中文字幕 | 日韩精品免费观看 | 欧美色狠 |