題目:code 1035 火車停留
題目:中文題目,直接讀吧
分析:讀題之後發現是讓費用最大,不容易考慮到費用流,其實費用最大和最小是一樣的,費用最大的話可以把費用變為負值求最小的。
建圖方法:
超級源點 ss 連線 s ,容量為 n ,費用為0
把每個列車拆成兩個點 i 和 ii ,之間建邊容量為1 ,費用為給車站交的錢的相反數
s 連線 i ,容量inf ,費用0
ii 連線 t ,容量inf ,費用0
所有時刻末點在初點前面的,列舉建邊,容量為1,費用0
然後求一次費用流,其相反數就是ans
ac**:
#include #include #include #include #include #include #include #include using namespace std;
#define del(a,b) memset(a,b,sizeof(a))
const int inf = 0x3f3f3f3f;
const int n = 220;
struct node
;vectore;
vectorv[n];
int vis[n];
double dis[n];
int p[n],a[n]; //p儲存father,a儲存cap
void clear(int x)
void add_node(int from,int to,int cap,double cost) //shab
); e.push_back((node));
int len = e.size()-1;
v[to].push_back(len);
v[from].push_back(len-1);
}bool bellmanford(int s,int t,int& flow,double& cost)}}
}if(dis[t] == 1000000000)
return false;
flow += a[t];
cost += dis[t]*a[t];
int u = t;
while(u!=s)
return true;
}double min_cost(int s,int t)
struct tree;
tree kf[200];
int main()
for(int i=1;i<=m;i++)
}add_node(ss,s,n,0.0);
double ans = min_cost(ss,t);
printf("%.2lf\n",-ans);
clear(tt);
}return 0;
}
寫Code從讀Code開始
如何讀懂別人的程式碼 1.接觸他人的程式碼,大致上可以分為三種程度 一 了解,二 修改 擴充,三 抽取 提煉,從中獲得我們需要的資訊,或者是擴充功能及維護,又或是得到原作者的程式功力,轉化並加以精煉以求增強自己的程式功力。2.熟悉溝通語言與慣例用語 解程式碼寫成的程式語言。想要讀 懂法文寫成的小說,...
快速排序(code)
package snippet public class fastsort system.out.println 排序前 for int i 0 iout.println a i int start 0 int end a.length 1 sort a,start,end system.out.p...
阿里雲code登入,阿里雲code使用教程
阿里雲code登入,阿里雲code使用教程 最近得知阿里雲code這個牆下神器,於是嘗試看看。乙個比較坑的點是使用者名稱密碼問題,阿里雲code的使用者名稱密碼與登入的帳戶密碼不一致,使用者名稱在 profile 中的username,密碼在password,忘記的可以修改,改完就能用了。完整流程如...