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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

bzoj1877

發布時間:2025/3/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj1877 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

裸的費用流。。拆點就好了

1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<ctime> 6 #include<cstdlib> 7 #include<algorithm> 8 #include<vector> 9 #include<queue> 10 #define rep(i,l,r) for(int i=l;i<(r);i++) 11 #define Rep(i,l,k) rep(i,l,e[k].size()) 12 #define clr(a,x) memset(a,x,sizeof(a)) 13 typedef long long ll; 14 using namespace std; 15 struct edge{ 16 int v,w,c; 17 }; 18 struct Ans{ 19 int flow,cost; 20 }; 21 const int maxn=1009,maxm=100009,inf=0x3fffffff; 22 int s,t,n,m,cnt=0,d[maxn],a[maxn],b[maxn]; 23 bool p[maxn]; 24 edge E[maxm]; 25 vector<int>e[maxn]; 26 void addedge(int u,int v,int w,int c){ 27 edge ed; 28 ed.v=v;ed.w=w;ed.c=c; 29 e[u].push_back(cnt);E[cnt++]=ed; 30 ed.v=u;ed.w=0;ed.c=-c; 31 e[v].push_back(cnt);E[cnt++]=ed; 32 } 33 bool spfa(){ 34 queue<int>Q; 35 clr(p,0);p[s]=1; 36 Q.push(s); 37 rep(i,1,n<<1|1) d[i]=inf; 38 d[s]=0; 39 a[s]=inf; 40 while(!Q.empty()){ 41 int x=Q.front();Q.pop();p[x]=0; 42 Rep(i,0,x){ 43 edge ed=E[e[x][i]]; 44 if(ed.w&&d[ed.v]>d[x]+ed.c){ 45 d[ed.v]=d[x]+ed.c; 46 a[ed.v]=min(a[x],ed.w); 47 b[ed.v]=e[x][i]; 48 if(!p[ed.v]){ 49 Q.push(ed.v); 50 p[ed.v]=1; 51 } 52 } 53 } 54 } 55 return d[t]!=inf; 56 } 57 Ans costflow(){ 58 Ans ans; 59 ans.flow=ans.cost=0; 60 while(spfa()){ 61 ans.flow+=a[t]; 62 ans.cost+=a[t]*d[t]; 63 for(int i=t;i!=s;i=E[b[i]^1].v){ 64 E[b[i]].w-=a[t]; 65 E[b[i]^1].w+=a[t]; 66 } 67 } 68 return ans; 69 } 70 int main(){ 71 scanf("%d%d",&n,&m); 72 s=1;t=n; 73 rep(i,2,n<<1|1) if(i!=t) addedge(i,i+n,1,0); 74 rep(i,0,m){ 75 int u,v,c; 76 scanf("%d%d%d",&u,&v,&c); 77 addedge(u==1?u:u+n,v,1,c); 78 } 79 Ans ans=costflow(); 80 printf("%d %d\n",ans.flow,ans.cost); 81 return 0; 82 } View Code

1877: [SDOI2009]晨跑

Time Limit:?4 Sec??Memory Limit:?64 MB
Submit:?1446??Solved:?756
[Submit][Status][Discuss]

Description

Elaxia最近迷戀上了空手道,他為自己設定了一套健身計劃,比如俯臥撐、仰臥起坐等 等,不過到目前為止,他堅持下來的只有晨跑。 現在給出一張學校附近的地圖,這張地圖中包含N個十字路口和M條街道,Elaxia只能從 一個十字路口跑向另外一個十字路口,街道之間只在十字路口處相交。Elaxia每天從寢室出發 跑到學校,保證寢室編號為1,學校編號為N。 Elaxia的晨跑計劃是按周期(包含若干天)進行的,由于他不喜歡走重復的路線,所以 在一個周期內,每天的晨跑路線都不會相交(在十字路口處),寢室和學校不算十字路 口。Elaxia耐力不太好,他希望在一個周期內跑的路程盡量短,但是又希望訓練周期包含的天 數盡量長。 除了練空手道,Elaxia其他時間都花在了學習和找MM上面,所有他想請你幫忙為他設計 一套滿足他要求的晨跑計劃。

Input

第一行:兩個數N,M。表示十字路口數和街道數。 接下來M行,每行3個數a,b,c,表示路口a和路口b之間有條長度為c的街道(單向)。

Output

兩個數,第一個數為最長周期的天數,第二個數為滿足最長天數的條件下最短的路程長 度。

Sample Input

7 10
1 2 1
1 3 1
2 4 1
3 4 1
4 5 1
4 6 1
2 5 5
3 6 6
5 7 1
6 7 1

Sample Output

2 11

HINT

對于30%的數據,N ≤ 20,M ≤ 120。
對于100%的數據,N ≤ 200,M ≤ 20000。

Source

Day1

[Submit][Status][Discuss]

轉載于:https://www.cnblogs.com/chensiang/p/4771375.html

總結

以上是生活随笔為你收集整理的bzoj1877的全部內容,希望文章能夠幫你解決所遇到的問題。

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