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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[USACO15JAN]草鉴定Grass Cownoisseur

發布時間:2025/4/16 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [USACO15JAN]草鉴定Grass Cownoisseur 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

tarjan縮點+最短路

這道題我想了一半的正解,就是縮點+DAG上考慮,之后圖只有一種情況:1號點連著大量的點,大量的點連著1號點,部分能到達1號點的點連接著1號點能到達的部分點。轉向就是要從1號點能到達的點過渡到能到達1號點的點。考慮spfa,在縮完點后的圖上從1號點正向跑最大路,再建立一個反圖,跑最大路。這樣我們枚舉每一個點(縮后的點),找到他連接的點,如果合法,那么ans=max(ans,-1*val[firs]+diss[i]+disf[v]);

code:

#include<cstdio> #include<cstring> #include<iostream> #include<queue> #include<cstring> #include<vector> #include<stack> using namespace std; const int maxn=500006; int x1,x2,y1,y2; struct hzw {int to,next,u; }e[maxn],ed1[maxn],ed2[maxn]; int head[maxn],head1[maxn],head2[maxn],cur,n,m,k; inline void add(int a,int b,hzw e[],int head[]) {e[cur].u=a;e[cur].to=b;e[cur].next=head[a];head[a]=cur++; } stack<int>ss; bool pan[maxn]; int cnt,col,val[maxn],firs,low[maxn],dfn[maxn],bel[maxn],disf[maxn],diss[maxn]; inline void tarjan(int s) {low[s]=++cnt;dfn[s]=cnt;ss.push(s);for (int i=head[s];i!=-1;i=e[i].next){int v=e[i].to;if (!dfn[v]){tarjan(e[i].to);low[s]=min(low[s],low[v]);}else if (!pan[v]){low[s]=min(low[s],dfn[v]);}}if (low[s]==dfn[s]){ col++;while (ss.top()!=s){int fr=ss.top();ss.pop();pan[fr]=1;bel[fr]=col;val[col]++;if (fr==1) firs=col;}int fr=ss.top();ss.pop();pan[fr]=1;bel[fr]=col;val[col]++;if (fr==1) firs=col;} } bool vis[maxn]; void spfa(int s,hzw e[],int dis[],int *head){memset (vis,0,sizeof (vis));memset(dis,-1,sizeof(dis));queue<int>q;q.push(s);dis[s]=val[firs];vis[s]=true;while (!q.empty()){int u=q.front();q.pop();vis[u]=false;for (int i=head[u];i!=-1;i=e[i].next){int a=e[i].to;if (dis[a]<dis[u]+val[a]){dis[a]=dis[u]+val[a];if (!(vis[a])){q.push(a);vis[a]=true;}}}} } int main() {memset(head,-1,sizeof(head));memset(head1,-1,sizeof(head1));memset(head2,-1,sizeof(head2));cin>>n>>m;for (int i=1,a,b;i<=m;++i){scanf("%d%d",&a,&b);add(a,b,e,head); }for (int i=1;i<=n;++i) if (!dfn[i]) {tarjan(i);}for (int i=0;i<m;++i){int x=bel[e[i].u],y=bel[e[i].to];if (x!=y){add(x,y,ed1,head1);add(y,x,ed2,head2);}}spfa(firs,ed1,disf,head1);spfa(firs,ed2,diss,head2);int ans=val[firs];for (int i=1;i<=col;++i){if (!diss[i]) continue;for (int j=head1[i];j!=-1;j=ed1[j].next){int v=ed1[j].to;if (!disf[v]) continue;ans=max(ans,-1*val[firs]+diss[i]+disf[v]);}}cout<<ans;return 0; }

收獲:

注意最長,最短路有時能解決常見的dp問題(有起點的那種),并且能夠判斷狀態是否合法。

轉載于:https://www.cnblogs.com/bullshit/p/9688544.html

總結

以上是生活随笔為你收集整理的[USACO15JAN]草鉴定Grass Cownoisseur的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美自拍偷拍第一页 | 国精产品一二三区精华液 | 天狂传说之巴啦啦小魔仙 | 国产精品自拍偷拍 | 国产成人精品免费在线观看 | 男女吻胸做爰摸下身 | 国产在线看 | 国产片网站 | 色女人天堂 | 亚洲久久在线 | 久久爱资源网 | 在办公室被c到呻吟的动态图 | 色婷婷久久五月综合成人 | 久久久久久久久久久久国产 | 成 人 免费 黄 色 | 成人福利院 | 国产老头老太作爱视频 | 国精产品一区一区三区视频 | 熟妇人妻久久中文字幕 | 很黄的网站在线观看 | 亚洲成人av在线 | 国产精品情侣呻吟对白视频 | 青青操网站 | 欧美久久久久久久久久 | 精品综合| av一区二区免费 | 欧美bdsm调教视频 | 91女人18毛片水多国产 | 尹人香蕉 | 免费做a爰片77777 | 欧美日本高清 | 亚洲欧美在线观看视频 | 涩涩久久 | 国产又爽又黄的激情精品视频 | 亚洲熟女乱综合一区二区三区 | 亚洲视频国产精品 | 国产精品3区| 国产91边播边对白在线 | 午夜国产在线观看 | 久久精选视频 | 久久久久色| 亚洲少妇毛片 | 夜夜嗨av色一区二区不卡 | 黄色一级录像片 | 中文人妻一区二区三区 | 女人高潮娇喘声mp3 乱色视频 | 一级一片免费看 | 午夜精品久久久久久 | 夜夜se| 国产调教在线观看 | 欧美成年人网站 | 大粗鳮巴久久久久久久久 | 老司机福利av | 欧美性福利 | 丁五月 | 在线一区二区三区四区五区 | 无码人妻一区二区三区免费n鬼沢 | 四虎影院在线视频 | 亚洲a视频在线观看 | 欧美美女黄色 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 国产成人+综合亚洲+天堂 | 玖玖爱在线观看 | 羞羞的视频在线观看 | 逼逼av网站 | 欧美成人a视频 | 国产丰满农村老妇女乱 | 中文字母av | 亚洲精品视频在线观看免费视频 | 精品久久久久久久久久久久久久久 | 国产成人久久婷婷精品流白浆 | 日本爽爽爽爽爽爽在线观看免 | 高潮一区 | 国产视频一二三区 | www.久久网 | 久久久国产一区二区 | 亚洲第一色站 | 国产国产精品 | 91久久中文字幕 | 2018天天弄 | 驯服少爷漫画免费观看下拉式漫画 | 天堂一区二区三区 | 亚洲手机看片 | 亚洲综合精品国产一区二区三区 | h文在线观看 | 午夜18视频在线观看 | 亚洲黄色小说视频 | 色多多在线看 | 亚洲三级网| 人妻精品一区二区三区 | 91黄版 | 日韩在线免费视频 | 国产吧在线 | 欧美一级黄色录像 | 国产日本在线播放 | 97国产精品视频人人做人人爱 | 国产性色视频 | www毛片 | 免费欧美视频 |