UVA
文章平均质量分 79
吃灰狼的小红帽
放飞理想的有志青年。
展开
-
UVA 1600 Patrol Robot bfs
题意:给出一个网格,这个网格中有一些障碍,求从左上角右下角的最短距离,且不能连续穿过K个障碍。 分析:求最短路径嘛,首先想到的肯定会是bfs,那怎么判断连续K个障碍呢?因为是连续的嘛,所以如果下一个要搜的点不是障碍,那么它的k就是0了,然后因为要考虑障碍点了,所以不能简单地只记录已经扫过的点了,还要排除k值得影响,所以我这里加了一个K的数组来表示当前点的k值大小,如果要搜的点的k值比记录的小那么原创 2017-06-16 16:14:21 · 267 阅读 · 0 评论 -
uva 116 Unidirectional TSP(dp-递归版)
拿到这个题,首先这个求最小和非常的简单,麻烦的是要求出最短路径。 这个真的是卡了我一阵子。本来紫书上是有解答代码的,但我想用递归去实现,所以一直也就没看书上的代码。从网上搜了搜呢,也都是书上的做法,没有创意。 但好在最终终于是想到了递归的实现方式: 首先求和很简单的dp思想,路径只要在求和的基础上简单的加一个数组来表示对于这个最一个最小行来说,下一个最小行是多少就行了。直接上代码会很容易理解原创 2017-05-17 22:47:43 · 317 阅读 · 0 评论 -
uva307 dfs
把博客当作一个记录代码的地方吧。这个题想一想还真的挺不错的,能提高对回溯法的理解。题意不难理解,一堆切开的小木棒,然后把这些小木棒合起来,找到这些合起来的小木棒的最小长度,最关键的一点这些小木棒合起来的长度都是一样的。 我开始的思路试枚举多少根小木棒,然后通过总的除以根数就得到了小木棒的长度,然后一一去判断,结果写着写着怎么也不会写了,就从网上借鉴了大神们的代码。思路:直接枚举长度,然后通过递归原创 2017-04-09 11:35:04 · 267 阅读 · 0 评论 -
uva12113 暴力枚举+回溯递归
第一个博客,就献给这道题吧。这道题其实思路不难,但也是搞了我一些时间,题意不难懂,就是给出一个4*4的棋盘,然后用2*2的纸去填充,并且最多用6张。 首先突破口肯定在这个6上,纸的数量不多,再通过仔细观察后发现,纸摆放的位置只有9种情况,那现在思路已经很明确了: 1、输进去数据 2、一一枚举每张纸的每一个位置的情况 3、回溯查找 4、格式输出,收工。不多说,直接上代码。 #includ原创 2017-04-08 12:09:37 · 1236 阅读 · 0 评论 -
uva 1625 Color Length (dp)
题意:有两个字符串,从两个字符串中取字符组成一个新串,并规定跨度L(c)表示该字符在新串中最大位置和最小位置的差,最终求所有L(c)的和; 解:这个题的思路好想,就是用dp[i][j]来表示当前已经从第一个中取了i个从第二个中取了j个字符后的最小跨度,但麻烦的就是怎么实现这个状态,每次都重新算一遍每个的跨度时间肯定承受不了,所以有个简便的方法就是求当前已经有多少字符已经被取了但是最后一个该字符还原创 2017-06-04 11:24:54 · 257 阅读 · 0 评论 -
It's not a Bug, it's a Feature! UVA - 658
题意 某个软件有n个漏洞m的补丁,而每个补丁修复漏洞有前提条件,即有些漏洞必须存在或不存在,每个补丁的修复时间各不相同,现在有n个漏洞,让你求出把这n个漏洞全部修复所花的最少时间。 思路: 因为字符串的长度关系,直接用二进制表示状态的转移然后跑一边最短路就好了; #include #include #include #include #include usi原创 2017-11-15 13:28:48 · 254 阅读 · 0 评论 -
Terrorists UVALive - 7302
题目大意: 给一张n个点,m条边的无向图。共有q个询问,每次询问u到v的最短路。 n 思路: 注意到边的的数量,n和m非常接近,所以可以近似于一棵树,这样,我们先抛出一棵最小生成树出来,然后之后这样肯定会有多出来的边,然后我们把多出来的边的端点都存下来,这样就出来了一些除了树上的点之外的点,这样我们再把这些点跑一边dij,这样之后我们对于查询u,v时原创 2017-11-15 13:34:49 · 175 阅读 · 0 评论 -
uva 12264 (Risk) 二分 + 最大流
题意: 首先有n个点, 然后每个点都一个权值ai表示这个点上的士兵数量,如果ai为0则表示这个点是敌人的, 如果大于零则表示这个点是自己的并且有ai个士兵, 现在你只有一次机会可以移动所有的士兵, 注意 每个士兵只能移动一次, 并且只有两种选择, 要么不动, 要么移动到相邻的一个单位处的的自己的点上, 并且自己的点在移动完之后至少要存在一名士兵。 另外再输入一个n * n的字符矩阵, 如果s【i】原创 2018-02-06 11:37:04 · 442 阅读 · 0 评论 -
UVA11419 我是SAM (最小点覆盖)
题意:给一个r*c的矩阵,某些格子中可能有一些怪物,可以在一行或一列防止一枚大炮,大炮会扫光整行/列的怪,问最少需要多少炮?输出炮的位置思路:首先把每行看成x集合里的r个点,每列看成y集合里的c个点,然后就会发现对于每个目标的x,y值其实就可以抽象成了这个x点和这个y点通过目标连成了一条边,而同一行的x点是通用的,同一列的y点是通用的,这样不就变成了用最少的点使得所有的边至少有一端被覆盖了么, 最...原创 2018-03-16 00:24:04 · 308 阅读 · 0 评论