日韩性视频-久久久蜜桃-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(堆模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 99久久精品免费视频 | 亚洲精品欧美激情 | 日日日插插插 | 久操视频在线播放 | 成人拍拍视频 | 亚洲 欧美 日韩系列 | 日本黄色片视频 | 精品人妻伦一二三区久久 | 国语对白做受按摩的注意事项 | 国产精品乱码一区二区 | 内谢少妇xxxxx8老少交视频 | 歪歪6080 | 国产黄色片免费看 | 日日摸日日碰夜夜爽无码 | 国产区在线观看 | 欧美日韩大片在线观看 | 成年人免费网站 | 日日噜噜噜噜久久久精品毛片 | 国产高潮视频在线观看 | 国产手机在线视频 | 九九久久免费视频 | 深田咏美在线x99av | 凹凸福利视频 | 在线a视频 | 一区二区三区四区在线观看视频 | 亚洲精品99999 | 东北少妇高潮抽搐 | 亚洲一区免费看 | 国产一级二级三级精品 | 久久嫩草视频 | 在线天堂1 | 亚洲第一伊人 | 2020av在线| 亚洲一区高清 | 亚洲欧美网站 | 老妇裸体性激交老太视频 | 国产原创91| 国产情侣91 | 天天操综合网 | 国产精品乱码一区二三区小蝌蚪 | 国产一区二区三区 | 就要操av| 一级黄色片免费看 | 久久七 | 亚洲欧美另类在线视频 | 欧美日韩精品一二三区 | 91视频综合 | 亚洲a级精品 | 大度亲吻原声视频在线观看 | 97干视频 | 欧美视频二区 | 国产精品久久综合 | 欧美午夜一区二区三区 | 美女黄色大片 | 97精品人妻一区二区三区蜜桃 | 久久综合一区二区 | 色综合加勒比 | 日韩人妻精品一区二区三区 | 无码不卡av东京热毛片 | 黄瓜视频在线免费看 | 色就是欧美 | 亚洲黄网在线 | 91精品国产91久久久久青草 | 中国美女一级黄色片 | 91久久精品一区二区三区 | 国产1级片| 欧美性受xxxx黑人 | 日本一区二区三区精品视频 | 中文文字幕文字幕高清 | 激情 亚洲| 欧洲一级黄 | 国产乱子一区二区 | 中文字幕av一区二区三区人妻少妇 | 欧美性猛交69 | a级大片在线观看 | 天天夜夜骑 | 色倩网站 | 欧美特级aaa | 最近中文字幕免费视频 | 人人草在线观看 | 黄色小视频在线观看免费 | 日韩黄色av网站 | 成人激情小说网站 | 国产做爰全免费的视频软件 | 天堂8在线天堂资源bt | 欧美性色黄大片手机版 | 中文毛片无遮挡高潮免费 | 少妇欧美激情一区二区三区 | 五月天在线观看 | 婷婷中文字幕 | 免费播放片大片 | 成人高清在线观看 | 亚洲 欧美 变态 另类 综合 | 播放美国生活大片 | 中文字幕人妻一区二区在线视频 | 北条麻妃在线一区二区 | 成年人av在线 | 九九99久久 | 中文字幕一区二区在线观看视频 |