您的位置:首页 > 其它

SRM 584 DIV1

2014-02-13 10:35 507 查看
A

  简单的差分约束模型 , 因为d是定值 , 所以也可以按最短路理解 , trick是不能把圈算进去.

  

string s = "";
for (int i=0 ; i<(int)courseInfo.size() ; i++ ) s += courseInfo[i];
stringstream ss(s);
string t;
while (ss>>t) {
sscanf(t.c_str(),"%c%d->%c%d:%d",&a,&da,&b,&db,&cst);
int pa , pb;
pa = encode((int)(a-'A'),da);
pb = encode((int)(b-'A'),db);
addedge(pb,pa,cst);
}


View Code
  斯坦纳树有2部分更新:

  (1) 对确定的根v , 用mask的子集更新: dp[v][mask] = min ( dp[v][submask] + dp[v][mask - submask])

  本质上是寻找树最优的组合结构,不会有松弛.

  (2) 对确定的根v , 用点u松弛: dp[v][mask] = min ( dp[v][mask] , dp[u][mask] + 最短路(u,v) )

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: