[WC2008]游览计划】的更多相关文章

BZOJ_2595_[Wc2008]游览计划_斯坦纳树 题意: 分析: 斯坦纳树裸题,有几个需要注意的地方 给出矩阵,不用自己建图,但枚举子集转移时会算两遍,需要减去当前点的权值 方案记录比较麻烦,两边的转移都需要记录,最后dfs找方案会比较容易理解 代码: #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> using namespace std; #de…
[WC2008]游览计划 斯坦纳树板子题,其实就是状压dp 令\(dp_{i,s}\)表示任意点\(i\)联通关键点集合\(s\)的最小代价 然后有转移 \[ dp_{i,S}=\min_{T\in S}dp_{i,S}+dp_{i,S \ xor\ T}-cost_i \] 这是自己转移自己 \[ dp_{u,S}=\min_{(u,v)\in E}dp_{v,S}+cost_u \] 这是从别人转移 我们按\(S\)分层去做,注意到别人转移是无后效性的,但长的像松弛,直接跑spfa就可以了…
P4294 [WC2008]游览计划 斯坦纳树 斯坦纳树,是一种神奇的树.它支持在一个连通图上求包含若干个选定点的最小生成树. 前置算法:spfa+状压dp+dfs(大雾) 我们设$f[o][P]$为第$o$个点上状态为$P$的最小代价,其中状态使用二进制存储已经连接了多少个选定点. 初始化:显然对于每个选定点,$f[o][1<<k]=0$,$k$为该选定点在所有选定点中的编号.其他为$inf$ 蓝后就是将状态从小到大枚举进行递推 $for(P=0;P<(1<<k);++P)…
BZOJ2595 [Wc2008]游览计划 Solution 考虑这是一个最小费用连通性的问题,既然大家都说这是什么斯坦纳树那就是的吧... 所以我们肯定可以这样设一个dp状态: \(dp_{i,j,k}\)表示经过点(i,j)且现在连通性为\(k\)的最小费用. 有两种转移方程: \(dp_{i,j,k}=dp_{i,j,s}+dp_{i,j,k-s}-a[i][j];\) \(dp_{i,j,k}=dp_{x,y,k}+a[i][j]\) 这个还是比较显然? 发现后面那个东西很像最短路不是吗…
[BZOJ2595][Wc2008]游览计划 Description Input 第一行有两个整数,N和 M,描述方块的数目. 接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为一个景点:否则表示控制该方块至少需要的志愿者数目. 相邻的整数用 (若干个) 空格隔开,行首行末也可能有多余的空格. Output 由 N + 1行组成.第一行为一个整数,表示你所给出的方案中安排的志愿者总数目. 接下来 N行,每行M 个字符,描述方案中相应方块的情况: z  ‘_’(下划线)表示该…
[LG4294][WC2008]游览计划 题面 洛谷 bzoj 题解 斯坦纳树板子题. 斯坦纳树的总结先留个坑. 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #include <queue> using namespace std; i…
2595: [Wc2008]游览计划 Time Limit: 10 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 1572  Solved: 739 Description Input 第一行有两个整数,N和 M,描述方块的数目. 接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为一个景点:否则表示控制该方块至少需要的志愿者数目. 相邻的整数用 (若干个) 空格隔开,行首行末也可能有多余的空格. Output 由 N…
BZOJ2595 Wc2008 游览计划 Description Input 第一行有两个整数,N和 M,描述方块的数目. 接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为一个景点: 否则表示控制该方块至少需要的志愿者数目. 相邻的整数用 (若干个) 空格隔开, 行首行末也可能有多余的空格. Output 由 N + 1行组成.第一行为一个整数,表示你所给出的方案中安排的志愿者总数目. 接下来 N行,每行M 个字符,描述方案中相应方块的情况: z ‘_’(下划线)表示该方…
游览计划 bzoj-2595 wc-2008 题目大意:题目链接.题目连接. 注释:略. 想法:裸题求斯坦纳树. 斯坦纳树有两种转移方式,设$f[s][i]$表示联通状态为$s$,以$i$为根的最小代价. 第一个转移就是$f[s][i]=f[t][i]+f[s-t][i]$.这个显然但是是针对边权的,这个题我们需要减掉多算的点权更新答案. 第二个转移是相同的$s$,即$f[s][i]=f[s][j]+E[i][j]$. 发现很像三角形不等式,用$spfa$转移即可. 代码2595: #inclu…
LINK:游览计划 斯坦纳树例题. 斯坦纳树是这样一类问题:带权无向图上有K个关键点 求出包含这K个点的最小生成树. 也就是说 求最小生成树 但是 并不是整张图 仅限于K个点. 可以发现我们利用克鲁斯卡尔或者prim算法 求的都是整张图的最小生成树. 所以可以发现 这个斯坦纳树问题 其实是一个np困难问题 不存在多项式的时间复杂度. 可以考虑搜索或者状压了. 这道题共有100个点 其中有10个关键点 我们首选状压dp. 有状态 f[i][j][k]表示到了(i,j)这个点了 所经过的点集为k的最…