UVAOJ
文章平均质量分 57
DrCarl
重庆大学acm-icpc集训队队员
展开
-
UVA 1599 Ideal Path 【两次BFS+贪心】 (好题)
题目链接题意迷宫中有n个房间,m条路,每条路上都涂上了颜色(用整数表示),求按走的路径的颜色排列的字典序最小的最短路分析贪心方法求最短路当然简单,每条路的长度都是1,BFS、SPFA、Dijkstra随便上都行。关键是求字典序最小的路径。根据字典序的特征贪心,从1到n,优先取所有可取最短路中颜色值最小的那条路。 但关键在于如何判断某条路是不是最短路上的路径,想到最短路问题通常打印路径的方法:原创 2016-07-24 22:20:11 · 612 阅读 · 0 评论 -
UVA 11624 Fire! 【特殊BFS】
题目链接题意人被困在迷宫里,有一些火苗在迷宫中会随时间蔓延,问人能否安全走到迷宫边界分析题本身很简单,只是这种题有两种处理方法:火的状态很简单,只需要知道某个时间某个点有没有火,所以单独BFS一张火的图就可以了一种比较巧妙的方法是,把火与人都当做BFS中的元素在一个队列中处理,注意BFS中同一层要先处理火,也就是最开始要先把火给入队AC代码(当时写的比较仓促,代码很丑……)//UVA 1162原创 2016-07-24 22:36:41 · 378 阅读 · 0 评论 -
UVA 11212 Editing a Book 【IDA*】
题目链接题意给一个n个数的全排列,可以进行将任意连续的一段截下来插入到任意位置的操作,问至少需要多少步这样的操作能够是序列变成递增的序列。分析题中n的最大值为9,状态数为9的阶乘,不过1e6左右,看似可以直接BFS。但是每一种状态后的决策数量太多了(任意位置的任意长度再插入到任意位置) 考虑到n个数的全排列,要使之恢复递增的顺序,最多移动n-1次即可。这样层数有上限,尝试用DFS。然而直接DFS回原创 2016-07-25 21:49:54 · 666 阅读 · 0 评论 -
UVA 10603 Fill【BFS】
题意有三个给定容量的没有刻度的杯子,其中一个杯子装满水,问量出给定水的体积需要倒多少水(倒水时水量的和)分析直接BFS,但非常容易写错AC代码//UVA 10603 Fill//AC 2016-07-19 16:11:16//BFS#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#inclu原创 2016-07-26 19:32:48 · 361 阅读 · 0 评论 -
UVA 1614 Hell on the Markets 【贪心+结论题】
题目链接题意给一串序列,保证序列中每个数满足ai≤ia_i \leq i ,问能否给这些数每个数前面填上正负号,使得其和为0.分析先上结论 数列an{a_n}满足 ∀ai∈an,ai≤i\forall a_i \in {a_n}, a_i \leq i ,则对于任何正整数S≤sum[i] S \leq sum[i] (sum[i]为前i项和),总能从an{a_n}中的前i项中选出某些数,使其原创 2016-07-29 23:13:03 · 387 阅读 · 0 评论 -
UVA 10570 Meeting with Aliens 【枚举+结论题】
题目链接题意给一串环形序列(首尾相连),可以进行交换任意两个数的操作。问最少进行多少步这样的操作能够使得整个序列的顺序正常(即从序列中的1开始,顺时针或逆时针相邻递增)分析首先这个题有一个简单的结论,如果要通过两两交换使得一种排列变为另一种排列,最少的方式是从最左边开始扫描一遍,若当前这个数跟目标排列不一样,就把它从后面交换过来。 那么这个题就很简单了,枚举这串序列顺序正确的所有情况(比如:123原创 2016-07-29 23:23:01 · 312 阅读 · 0 评论 -
UVA 1601 POJ 3523 The Morning after Halloween 【双向BFS】【A*】 (好题)
题目链接题意问移动图上三个Ghost同时到达目标点的最短步数。三个Ghost可以同时移动,但不能重叠,不能交换位置。双向BFS做法因为状态比较多,直接BFS会T,因此用双向BFS来优化。然而直接上双向BFS还是会T,在BFS过程中枚举可以走的循环太多了,因此对图进行预处理,取出所有可以走的点进行BFS。16*16不是太多,所以没有必要hash,直接开个六维数组还方便些。其他就是一些双向BFS常规注意原创 2016-07-29 23:26:16 · 452 阅读 · 0 评论 -
UVA 253 Cube painting 【数学】
题目链接题意给一个正方体各个面图上色,让后再给一个涂过色的正方体,问后者是不是前者旋转而来的。分析对于同一个正方形,如果确定了两个面,就确定了一个它的各个面。那么让通过旋转枚举各个面分别成为正面的情况,再旋转四个侧面确定顶面,就可枚举出所有情况(共6×4=246\times4=24种情况) 为方便枚举,用数组记录置换来模拟旋转(如代码)AC代码//UVA 253 Cube painting//2原创 2016-07-20 20:22:38 · 406 阅读 · 0 评论 -
UVA 1616 Caravan Robbers 【二分+贪心+枚举分母】
题目链接题意给n个互不相包含的区间,求出一个长度的最大值,使得可以在每个区间中选出这样一个长度的子区间,这些子区间互不相交。结果用分数表示分析先考虑如果给定了区间长度能不能选出这样的区间。因为题中说了区间互不包含,所以可以直接把所有区间先按左端点排序再按右端点排序,每个区间都尽量取靠近左端点的子区间。(如果没有说区间不相互包含的话,就要维护优先队列) 然后用二分可以求出这个最大长度。这个题卡精度,原创 2016-08-01 09:32:53 · 428 阅读 · 0 评论