07 2017 档案
摘要:Tarjan(离线)算法 思路: 1.任选一个点为根节点,从根节点开始。 2.遍历该点u所有子节点v,并标记这些子节点v已被访问过。 3.若是v还有子节点,返回2,否则下一步。 4.合并v到u上。 5.寻找与当前点u有询问关系的点v。 6.若是v已经被访问过了,则可以确认u和v的最近公共祖先为v被合
阅读全文
摘要:A、Sasha and Sticks 题意:有两个人,每次轮流从n个棒子中抽出k个,直到剩余不足k个棒子。Sasha先抽。如果Sasha抽取的多,则输出YES,否则输出NO。 思路:n/k为奇数时,Sasha获胜。 1 #include<iostream> 2 #include<cstdio> 3
阅读全文
摘要:1、POJ 3258 River Hopscotch 题意:给出小溪的长度L,给出河中石头数N和最多可移动的石头数M,使得每两颗相邻石头、起点与第一颗石头、终点与最后一颗石头之间的最小距离最大。 思路:二分最小距离,然后把间距小于该距离的石头移除,如果移除的石头数大于M,说明该距离太大,否则可以尝试
阅读全文
摘要:1、UVa 11584 Partitioning by Palindromes(字符串区间dp) 题意:给出一个字符串,划分为若干字串,保证每个字串都是回文串,同时划分数目最小。 思路:dp[i]表示以第i位结尾时最小的划分数目(初始均为0) 状态转移方程1:(初始均为0)当[j:i]是回文串(0≤
阅读全文
摘要:1、UVa 11100 - The Trip, 2007 题意:给出若干大小不同的包裹,小的能够装在大的包裹里面。求最小的大包裹数,并且保证在所有的大包裹中,所含有的小包裹数目最小。 思路:显然,相同大小的包只能放在不同的大包里,那么最小的大包数目就是相同大小的包的最大数目,记为k。之后,根据从小到
阅读全文
摘要:1、UVa 10382 - Watering Grass (贪心—区间覆盖) 题意:一块矩形草坪,给出若干个分布在中轴线上的喷水装置,喷水范围为圆形。问能否覆盖整个草坪,若能,求出最少的喷水装置数目。 思路:圆形半径小于等于草坪宽度一半的不用考虑;在剩下的喷水圆形区域中,求出对应覆盖草坪的矩形区块,
阅读全文
摘要:1、POJ 2718 Smallest Difference(穷竭搜索,枚举) 题意:给出0~9之间的几个数,从给出的数中组合成两个新的整数(首位不为0),求两个数之间的差的绝对值的最小值。 思路:由于最多只有10个数,全排列枚举,前n/2个形成一个数,后面的数字形成另一个数。 1 #include
阅读全文
摘要:1、POJ 2386 Lake Counting 题意:给出一块区域,询问有多少个湖泊? 思路:DFS,对于‘W’,深搜一次,并标记已访问。之后每次对未访问的‘W’做一次深搜。 1 #include<iostream> 2 #include<memory.h> 3 using namespace s
阅读全文

浙公网安备 33010602011771号