CEOI 2014 wall (最短路)

描述:给定一个网格图,每个区间可能会有城市,求在边上建墙使无法从外边到达所有城市切所有城市必须联通 n,m<=400

首先对于30%的数据,n,m<=10我们可以考虑用数位dp来解决这个问题

考虑用射线法,如果一个点被包括的话,那么向上做一条射线,我们可以发现如果被包含的话该射线得与奇数条边相交,就可以愉快的用数位dp搞了

正解的话,我们可以先做出从1,1到其他城市的左上角的最短路,可以证明这些最短路必须被包含在这个区间上的

然后我们考虑如何让答案不越过这些最短路(也就是包含这些最短路)

有两种做法(本质上好像一样的应该是的):

1(题解做法):把每个点拆成4个小点,将于把最短路以及所有包含村庄的边经过的点封掉后跑一次最短路即可(如图所示)

别吐槽我的图,毕竟是这个博客的第一张图= =

2(lyy的神做法):把每个点拆成9点,然后把最短路以及所有包含村庄的边的两个端点的中心连线经过的点去掉后跑一次最短路即可(如图所示)

可以跟道路一样理解,如果你不想让人通过横过马路,就得建起一条隔离栏,人们就无法过去但还是能沿着隔离栏行走

还有上面那个结论的证明:

首先是若存在某种选择不包含最短路径,那么我们一定可以把某条边换成最短路径试答案更小(从题解扒了张图)

如图所示,灰色区间是某种选择,绿色边是最短路,那么我们可以考虑多包括那个黄色区间,答案不会更差

第一次写的这么详细= =

考试的时候是想到这方面了,不过想到的是最小生成树,今后还是要多加证明以及多打程序验证(很多东西都是自己想到了但就是没有用实际的去证明结果没打出来= =)还是得认真一点啊

时间: 2024-11-09 17:22:54

CEOI 2014 wall (最短路)的相关文章

[UOJ 25] [IOI 2014] Wall 【线段树】

题目链接:UOJ - 25 题目分析 每个操作就是将被操作的数限制在一个区间,比如 Set_Max(5) 就是将被操作的数限定在了 [5, INF] 的区间里. 这些操作是可加的,但是必须按照顺序,不满足交换律. 对每个节点维护两个标记 Min_Tag[x], Max_Tag[x] ,表示这个节点的数被限制在了 [Max_Tag, Min_Tag] 的区间内. 最终的答案应该是 gmax(Max_Tag[x], gmin(MinTag[x], Val[x])).其中 Val[x] 是 x 这个位

BAPC 2014 Preliminary ACM-ICPC Asia Training League 暑假第一阶段第一场 A. Choosing Ice Cream-gcd B. Failing Components-最短路Dijkstra F. Runway Planning

开始水一波博客 题目链接: A. Choosing Ice Cream 传送门 题意就是n个冰淇淋,骰子有k个面,问你是否能在公平的概率下转几次骰子能确定买哪个冰淇淋. 举个例子,假设我只有一个冰淇淋,我不用转骰子直接就会买这个,所以转骰子的次数是0,如果我有4个冰淇淋,2个骰子面,我可以先把冰淇淋abcd分成两部分,ab一组,cd一组,这是等概率的,我先转一次骰子确定是选ab组还是cd组,然后再转一次就可以确定买哪个了.如果我有6个冰淇淋,12个面,我可以每一种冰淇淋贴2个面,转一次就可以确定

hdu 5137 去掉一个点 使得最短路最大(2014广州区域赛K题)

题意:从2~n-1这几个点中任意去掉一个点,使得从1到n的最短路径最大,如果任意去掉一个点1~n无通路输出Inf. Sample Input4 51 2 31 3 71 4 502 3 43 4 23 21 2 302 3 100 0 Sample Output50Inf 1 # include <iostream> 2 # include <cstdio> 3 # include <cstring> 4 # include <algorithm> 5 #

2014年CCNU-ACM暑期集训总结

2014年CCNU-ACM暑期集训总结 那个本期待已久的暑期集训竟然就这样的,溜走了.让自己有点措手不及,更多的是对自己的疑问,自己能否在ACM这个领域有所成就.带着这个疑问,先对这个暑假做个总结吧. 第一周来的时候,状态还没有融入进去,学长们也不在,就直接布置了一套题目,考察的是贪心策略.学习的时候很有激情,毕竟是期待了那么久的场景,所以大家都很认真,希望自己能够有所进步. 第二周,搜索专题.主要学习宽度优先搜索(BFS)与深度优先搜索(DFS),刚开始学比较吃力,因为自己对这方面的领悟有点迟

菜鸟的2014剪影

2014 这就是拯救我电脑的命令!netsh winsock reset 和catalognetsh int ip reset reset.log hit.神一样的命令. 今天是2015年农历的第三天了,看着别人的回忆录,我也敲起了键盘. 2014年我就是一个水桶(水果桶).这一年上火的次数比2012和2013都要多,特别是没吃水果的时候,所以隔几天都得出去补仓,每次去超市,去外面逛,最后的结果也是买水果的节奏.但是我一回家,情况就好多了,这就是水土不服. 这一年"最惨的"是我跟嵌入式

BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧. 更多的是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正. 前面几题是会很基础,越下越有深度. 初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型:String,boolean,Number,Undefined, Null 引用数据类型:Object(Array,D

WAP 2014 Examination 1

有两个考试,选了第1个. 题目的意思是W*H的方格,从S点到G点,中间要经过所有的n个checkpoint,求最短路.其中有的点不能走. 如果没有checkpoint的话,一个BFS就可以了.最开始想到贪心,从S开始,每次选择最近的那个点,但很容易找出反例来. 后来想,题目无非就是在S和G中安排n个点,以一定的次序使得依次连起来之后路径长度最短,因此一次添加一个点,假设之前已经安排好k个点,新加的点一共有k+1个位置可选.从这些可选点中选择最优解.但又找到了反例. 于是想到了动态规划,dp[i]

【最短路】Walls

Description In a country, great walls have been built in such a way that every great wall connects exactly two towns. The great walls do not cross each other. Thus, the country is divided into such regions that to move from one region to another, it

【转载】【知识点总结】NOIP前夕 2014.11.4

2014.11.4 7:33 还有三天半就要NOIP,圈一下要背的知识点: 一.数论 1.素数判断 2.筛法求素数 3.求一个数的欧拉函数值 4.预处理欧拉函数 5.卡塔兰数递推式 6.快速幂(模素数的乘法逆元) 7.GCD 二.图论 1.最短路:①堆dijkstra ②spfa 2.kruscal 最小生成树 3.LCA(块状树) 4.匈牙利算法 5.验证二分图 6.scc缩点 7.拓扑排序 三.动态规划经典题 1.零一背包 2.完全背包 3.分组背包 4.最长上升(不下降)子序列 5.方格取