P2937 [USACO09JAN]Laserphones S】的更多相关文章

题意描述 [USACO09JAN]Laserphones S 学过物理的同学都知道这种镜子是可以把光线旋转 90 度的. 那么显然就是要求添加镜子的最小个数. 貌似题目漏了一句就是题目保证有解的情况. 算法分析 其实可以联想到之前的分层图最短路.(不要问我为什么) 建立4层相同的图.层内只能向着某个方向走,因此在可以走的地方建权值为0的边. 层间实现转弯,两两建权值为1的边,表示可以转弯,但有花费. 最后从每一层的起点到每一层的终点跑最短路,统计花费就行了. 代码实现 #include<cstd…
看到这题,一下就想到了爆搜.(不过这题输入也是够坑的) 单纯的搜索肯定是会超时的,所以这里需要考虑一些剪枝. 我们令bin[i][j][k]为在第i行j列时,方向为k的最小镜子数,若当时的镜子数已大于或等于此记录,那么就不必要更新了 否则往该点的四个方向进行更新: 方向相同 没必要放镜子了 方向相反 不存在这种可能,忽略(否则你的镜子要怎么放呢?) 其他 放一面镜子,更新方向 BFS代码: #include<bits/stdc++.h> using namespace std; const i…
题目链接 luogu P2934 [USACO09JAN]安全出行Safe Travel 题解 对于不在最短路树上的边(x, y) 1 | | t / \ / \ x-----y 考虑这样一种形态的图, '-' 标记为非最短路树的边 对于边集(x, t)内的任意一点 i, 到达它的所有方式一定是 1 -> t -> y -> x -> i 这样就可以对树边(x, t)标记 Min = dis[y] + dis[x] + W_{x,y} 每个点在标记中取最小 Answer_i 就是…
P2936 [USACO09JAN]全流Total Flow 题目描述 Farmer John always wants his cows to have enough water and thus has made a map of the N (1 <= N <= 700) water pipes on the farm that connect the well to the barn. He was surprised to find a wild mess of different…
P2934 [USACO09JAN]安全出行Safe Travel https://www.luogu.org/problemnew/show/P2934 分析: 建出最短路树,然后考虑一条非树边u,v,w,它可以让u->lca的路径上的点x的答案更新为dis[v]+dis[u]+w-dis[x].为从1走到v(dis[v]),从v走到u(+w),从u走到x,(dis[u]-dis[x]). 然后对于每条非树边,按照dis[v]+dis[u]+w排序,然后会发现每个点只会更新一次,然后用并查集维…
P2935 [USACO09JAN]最好的地方Best Spot 题目描述 Bessie, always wishing to optimize her life, has realized that she really enjoys visiting F (1 <= F <= P) favorite pastures F_i of the P (1 <= P <= 500; 1 <= F_i <= P) total pastures (conveniently nu…
P2935 [USACO09JAN]最好的地方Best Spot Floyd的水题(黄题) 海星. 这可能是我第一道发的Floyd的博客 inline void Floyd(){ ;k<=n;k++) ;i<=n;i++) ;j<=n;j++) dis[i][j]=Min(dis[i][j],dis[i][k]+dis[k][j]); } 这个是Floyd的算法 很简单就三行 仅此而已 但是 这个是一种方法 简单的说 Floyd是一种DP 求最短路(最长路)反正比spfa啥的好打 最关键…
P2932 [USACO09JAN]地震造成的破坏Earthquake Damage 题目描述 Wisconsin has had an earthquake that has struck Farmer John's farm! The earthquake has damaged some of the pastures so that they are unpassable. Remarkably, none of the cowpaths was damaged. As usual, t…
Description Input 第1行输入w和H,之后W行H列输入地图,图上符号意义如题目描述. Output 最少的对角镜数量. Sample Input 7 8 ....... ...... C ......* *****.* ....*.. ....*.. .C ..*.. ....... Sample Output 3   求拐点数最小 直接搜索是不行的,因为可能出现一个点当前被更新的状态并不是它最优的状态 所以像spfa那样允许多次入队,这样虽然慢一点但是没有后效性,而且这么小的数…
题链: https://www.luogu.org/problemnew/show/P2934 题解: 最短路(树),可并堆(左偏堆),并查集. 个人感觉很好的一个题. 由于题目已经明确说明:从1点到每个点的最短路有且只有一条. 那么跑完最短路后,就可以得到一个最短路树,即每个点只有一个来源点. 然后来考虑,如果某一个u点无法从其最短路树上的father到达时,是个怎样的情况: 由于u无法从其父亲到达,所以如果还存在1到u的路径的话, 应该在其子树内(包括u),存在一个v点,与子树外的某个节点x…