首页 > 技术文章 > UVA && UVALive 开荒

zjc-Connor 2016-11-04 20:44 原文

UVALive: 5

UVA: 7

total = 12

 

UVALive:


3523 - Knights of the Round Table: 问题可以转化为求不在任何一个奇圈上的点的个数。在圈上的点必然处于一个点双连通分量中,一个点双联通分量不是二分图则必然存在奇圈。

3708 - Graveyard: 同样是一个有趣的思维题,将第一个点重合,展开成一条链,用旧坐标找相邻最近的两个坐标中的较近的值,可以证明这样计算不存在两个点同时找上同一个点的情况。

4255 - Guess: 从矩阵中可以得到前缀和之间的差分约束关系注意前缀和关系中相等的一项,此时我们应该将两个点缩点。转化为图后就变成了前缀和的拓扑排序,根据拓扑序对前缀和进行赋值。再利用相邻前缀之差得到每一个数就好了。题目没有指出一定有解这一条件。

4287 - Proving Equivalences: 同POJ 1236第二问。tarjan缩点后分别求入度为0和出度为0的点,取两者较大的一个为答案,图本身就是强连通分量时答案为0。

5135 - Mining Your Own Business: WF2011题,找出所有的割点,仅包含一个割点的双连通分量需要设井,从任意非割点的节点开始dfs,遇到割点跳出。需要特判一下整个图无割点的情况。

 

UVA:


10047 - The Monocycle: 多维BFS,注意南北朝向处理基本没问题。

10054 - The Necklace: 将每一个珠子看作一条边,每个颜色看作一个点,先判断连通性,然后判断是否存在欧拉圈。输出欧拉圈。

11292 - Dragon of Loowater: 真水题,排序贪心。

11300 - Spreading the Wealth: 设$x_i$ 为第 $i$个人给第$i-1$个人的钱的个数,$M$是平均数。很容易得到一系列方程$A_i - x_i + x_{i+1} = M$ 可以得到 $ x_2 = x_1 - C_1$ 其中 $ C_1 = A_1 - M$ 之后可以得到类似 $ x_i = x_1 - C_{i-1}$ 其中 $C_{i-1} = C_{i-2} + A_{i-1} - M$。设$C_0 = 0$ 题意转化为求 $\sum_{i=0}^{n-1} {|x_1 - C_i|}$的最小值。将$C_i$取为数轴上离散的点,这样$x$为这些点中点时和最小。这是一个结论性的做法,很容易证明。

11324 - The Largest Clique: Tarjan缩点后得到DAG,每个强连通分量缩成的点定义其权值为所包含的点的个数。接下来就是DAG上求权值最长的链。DP求解即可。

11624 - Fire!: 水题,多个点同时开始bfs,先更新火。

11729 - Commando War: 虽然很想说是水题,但这个题的贪心技巧值得学习,该题证明贪心法正确的方法是,交换相邻的两项不可能获得更优解

推荐阅读