UVALive
aozil_yang
这个作者很懒,什么都没留下…
展开
-
UVALive 7363 A Rational Sequence (二叉树)
大体题意:二叉树每一个点的权值都是一个分数形式,根节点是1/1,(p/q)左儿子是p/(p+q),右儿子是(p+q)/q.每个点的编号按照层序遍历依次给出,然后告诉你个分数,求得这个分数结点的编号!思路:直接模拟即可!当p!=q 就一直循环,然后分四种情况讨论,差值和p的大小关系!模拟时记录一下路径,在从根节点回来算一下编号即可!#include#include#inclu原创 2016-08-16 02:09:22 · 473 阅读 · 0 评论 -
UVALive 6590 Digraphs (DFS找环找通路)
大体题意:ddddddddddd大体题意:给你n个字符串(长度为2),表示这些字符串不准出现在矩阵中,让你构造一个尽可能大的字符矩阵,如果大小超过了20×20,那么就输出20×20的即可,否则输出你构造的矩阵?吐槽:真是服气了,忘记了回溯,改了一晚上= =!(好弱)思路:字符串的长度始终是2,很明显是一个图的题目,且出现的字符串是禁止使用的,因此我们可以给g[][]数组初始化-原创 2016-09-23 00:43:50 · 514 阅读 · 0 评论 -
UVA 1611&& UVALive 6588 Crane (贪心思路)
大体题意:给你n 个数(1~n),要求排列出来1~n升序的状态,你的操作只能选择一个偶数长度的区间,交换前一半和后一半,求操作过程,只要答案不超过9的6次方即是正确答案!思路:方法肯定有很多了,开放性的题目:简单记录下自己比赛想到的吧:一个数一个数的归位,那么就枚举1~n,先预处理出来每一个数的位置id[i]。然后判断当前位置,和正确位置。先判断能否一步到达, 所谓一步原创 2016-09-23 23:42:34 · 522 阅读 · 0 评论 -
UVALive 7375 Hilbert Sort (四分树)
大体题意:告诉你一条希尔伯特曲线的大小,然后给你n 个人,及n 个人的坐标,你的起点是左下角,终点是右下角,按照希尔伯特的曲线去走,按照这个顺序给n个人排序,按顺序输出每个人的名字!思路:题目中说到了希尔伯特曲线的画法,其实看图中的规律也能看出来,就是一个四分的过程!首先希尔伯特曲线大体的趋向是左下方 左上方 右上方 右下方区域!只不过第一区域顺时针反转了90°,第四区域逆时针原创 2016-08-19 23:05:01 · 801 阅读 · 0 评论 -
UVALive 6659 Dromicpalin Substrings (递推 + 暴力枚举)
题意:给你一个长度不超过1000的字符串,对于任意一个子字符串,你可以任意排列,问有多少个子字符串能排成回文串?思路:先递推预处理出 i到j区间内 有多少个 奇数个的字母,然后暴力枚举 子字符串,判断这个区间奇数个数,如果大于1 不合适 否则ans++输出ans即可!#include #include #include using namespace std;char原创 2016-09-28 00:02:31 · 688 阅读 · 0 评论 -
UVALive 6655 Two Points Revisited (思路--构造垂直线段)
题意:给你一个线段的两个端点,有一个正方形,恰好包含这个线段,求另外一个线段的两个端点,使得它们垂直这个线段,并且不超过正方形?思路:方法借鉴的队友的,很巧妙!我们知道 两个直线垂直 条件是 两个直线斜率乘积为-1,因此,我们先假设两个点为x,y 和 u,v那么那么满足k1 = (y-v)/ (u-x)因此,我们先假设y = x1-x2,x = y2-y1, u = x原创 2016-09-28 00:48:05 · 257 阅读 · 0 评论 -
UVALive 6656 Watching the Kangaroo (区间排序 + 二分)
大体题意:给你最多10万个区间,和最多10万个查询, 每个查询会输入一个整数x,x在一个区间上有一个值,如果x不在区间内部,那么这个值为0,否则 为 到左端点和右端点的距离的最小值,要求求出每一个x 在所有区间值的最大值?思路:比赛时没有做出来,赛后补得,用二分做!比较巧妙!先把每一个线段分成两半,左区间和右区间(注意::分区间一定要看好边界,WA了好几次= =)然后给区间排序原创 2016-09-28 15:58:46 · 296 阅读 · 0 评论 -
Gym 100512D Dynamic LCA ((LCA 在线算法DFS+ST) + 分类讨论!!)
大体题意:多组数据,每组数据给你一个树(数的节点最多10W),然后有m(m 思路:这个题目给了自己很大的教训:模板都是次要的,关键还是怎么发挥模板,关键还是思维!,还需要勤加练习!!比赛过程中,只用了在线求LCA的模板,但思维太局限了,超时了!请教了学长,感觉比较巧妙!初始化树根只能初始化一次,剩余的换根操作,只能分类讨论进行比较:刚开始按题目要求来即可,把树根建立为1.原创 2016-09-30 00:01:35 · 461 阅读 · 0 评论 -
UVA 1161&& UVALive 3645 Objective: Berlin (最大流 -- 时序模型)
大体题意:给你一些航班,你要从s 城市到t 城市,中间可以倒航班,倒航班的时间不得小于30分钟! 告诉你最晚的到达时间,求最大客流量?思路:求最大客流量很明显是求最大流!然后 加了时间 在赛场上就蒙蔽了!其实是时序模型!我们把航班看成一个点,然后拆成i和i + m,这样就考虑了时间的因素! 表示i 的时间更早一些,i+m 的时间更晚一些!只能由i到i+m ,容量为飞机上原创 2016-10-29 10:59:32 · 421 阅读 · 0 评论 -
UVALive 6680 Join the Conversation (DP)
大体题意:给你n 行对话,刚开始告诉你人的姓名,其次是对话内容,要求求一个最长的长度,使得下一个对话的内容包括上一个对话的人的姓名?思路:赛后补得题目:Dp思想!令dp[i]表示枚举到第i 行 所能得到的最大值!===========================================记录一下整个思考的过程吧,因此错了很多遍!首先想到的是利用map 来记原创 2016-10-07 21:33:39 · 660 阅读 · 0 评论 -
UVALive 7040 Color (容斥定理 + 递推求逆元 + 组合数 + 快速幂)
大体题意:给你n 个位置,你总共有m 种颜色,需要填满恰好填k种颜色且 相邻的位置的颜色不相同,问方案数,两个方案不同 区分为至少有一个位置的颜色的不同!思路:我们先选出k 种颜色来, 方案数 是 C(m,k)。然后在n 个位置依次填, 第一个位置 有k 种情况,第二个位置 有k-1个情况 第三个位置有k-1个情况!这样就是k*(k-1) ^ (n-1) 这些情况只是原创 2016-11-10 19:09:22 · 548 阅读 · 0 评论 -
UVALive 4035 Undetectable Tour (二分 + 并查集)
大体题意:你要从左下角走到右上角,但是安装了k (k 思路:只要能够从左边或者上边出发 找一系列连续的监视器 链接到右边或者下边 我们就逃不了! 因此我们先给每个监视器按照范围排序,找一个合理的值 前面的肯定都符合 后面肯定都不行!难点就是判断这个半径行不行,方法是并查集,把左上边看成一个点,把右下边看成另一个点,其余监视器都是点,能相连就相连 最后如果发现左上边和右下边相连肯原创 2016-11-21 01:01:35 · 452 阅读 · 0 评论 -
UVALive 4097 Yungom (思路--set||优先队列的模拟)
大体题意:给你有m 种字符,并告诉你每个字符的权值,你要组成n 个单词,n 个单词中,任意两个单词的其中一个 不是另一个单词的前缀,一个单词的权值是各个字符的权值之和! 求组成n 个单词的最小权值?思路:其实这个题 稍微的类似于哈夫曼树,也不完全一样,有些许相似之处!我们先定一个根节点 , 根节点没有字符, 连接着m 个字符,每个叶子结点都是一个完整的单词,如果个数不足n 个单原创 2016-11-23 00:26:41 · 480 阅读 · 0 评论 -
UVA 12097 Pie LA 3635 (二分)
大体题意:给你n 个圆形派,有F+1个人来分这n 个派,每个人得到派的面积必须一样大,求最大面积(派必须是完整的,不能拼接!)思路:二分,我们直接二分答案x,看这个x合适不合适的标准是 能不能在n 个圆形派中,分出面积为x 的个数不少于f+1个,不行的话,继续搜!一个面积为S的派能分面积为x 的个数为 S/x详细见代码:错了很多遍,注意二分的边界问题!!#inclu原创 2016-12-05 22:22:25 · 359 阅读 · 0 评论 -
UVA 1267 && LA 3902 Network (思路--树上的DFS)
大体题意:给你n 个节点的树,其中叶子节点是客户端,内部的节点是服务器!你需要把一些服务器变成VOD,使得每个客户端到最近VOD的距离不超过K,开始的时候,已经有了一个VOD ,标号是s(也是根节点),求在最少安装多少VOD使得上述描述成立!思路:本以为是一个dp,看了分析后,感觉想的太复杂了!先把无根树转成有根树,其实这已经是一个有根树了,把S作为根节点,然后dfs 求出每一个节原创 2016-12-06 15:43:53 · 376 阅读 · 0 评论 -
UVALive 6585 Draughts (DFS回溯法 )
大体题意:给你一个10×10的棋盘,有白棋和黑棋,它们只能落在#上,白棋要想吃黑棋,必须相邻对角线有个黑棋,并且黑棋通用的对角线位置不能有棋,求最多吃多少?思路:直接回溯搜索即可!不用vis数组,改变棋盘,在回溯回来即可!详细见代码:#include #include #include #include #define ps push_back#define mr m原创 2016-09-23 01:43:19 · 396 阅读 · 0 评论 -
UVALive - 5009 Error Curves (三分法)
大体题意:给你n 个开口向上的抛物线,给你一个新的函数F(x),他的值是n 个抛物线的最大值,求Fx在[0,1000]的最小值?思路:三分法:画一个抛物线可以知道,他是一个下凸函数,也有可能是一条直线,直线也可以看成是一个下凸函数!画两个抛物线,无论这两个抛物线位置如何,还是一个下凸函数!画多了就知道,无论怎么画抛物线,n个抛物线组成的fx 还是一个下凸函数!因此存在唯原创 2016-09-06 15:46:26 · 640 阅读 · 1 评论 -
UVA 11388 GCD LCM(思路)
大体题意:告诉你某两个数的最大公约数GCD,和最小公倍数LCM,求满足条件的a,b 中a 的最小值!思路:想一想就知道了,根本不用暴力求解!LCM肯定是GCD的倍数,不是的话就-1,否则就一定存在!!!!!然后要a最小,GCD和LCM不就满足吗,ab的最大公约数是GCD,那GCD不就是满足条件的最小值吗!!输出即可!#include#include#include原创 2016-09-17 01:05:06 · 919 阅读 · 0 评论 -
UVALive 7365 Composition (DP)
大体题意:告诉你n,表示你要处理第n 个式子,第n 个式子中有n 因子 分别是1,2,3,,,,n。要求这些因子的和等于n,所以第n个式子 就有2^(n-1)个因子组合!告诉你一些因子不能用,求解剩余的因子式子有多少个!思路:比赛时没有做出来,赛后看学长写的好简单,!!令dp[i]就是第i 项方程的答案,第i 项方程有i个因子,直接枚举这i 个因子,如果第j 个能用的话原创 2016-08-16 02:19:53 · 403 阅读 · 0 评论 -
UVALive 7362 Farey (欧拉函数)
大体题意:告诉你n (n<=10000) 求解有多少个分数 满足分母 1 思路:这种问法很显然的是欧拉函数!定义:欧拉函数f(n) 表示小于或等于n 的书中与n 互质的数的数目。(1).f(1) = 1;(2).若n 是素数p 的k次幂,f(n) = p^k - p^k-1 = (p-1)*p^(k-1)(3).如果m 和n 互质,f(m*n) = f(m) *原创 2016-08-16 01:56:10 · 409 阅读 · 0 评论 -
UVALive 7361 Immortal Porpoises (矩阵快速幂)
大体题意:让你求n个斐波那契数列,对1e9取模!思路:很明显矩阵快速幂 求矩阵1 1 1 0的n 次方即可!但是好久没写了,写了很久很久!!= = !#include#include#include#include#include#include#include#i原创 2016-08-16 01:12:19 · 511 阅读 · 0 评论 -
UVALive 6859 Points (凸包)
大体题意:告诉你n个点,求出一个多边形,这个多边形的边只能是横着竖着 或者45°沿着对角线,并且多边形包括了所有的点,点要严格在多边形内,不能再边上!求最短周长的多边形!思路:从题意上看很像凸包,由于之前没有做过,比赛过程中,想了想 就否定凸包了 = =!思路很简单,把每个点上下左右的点存下来,对这些点求凸包即可!有个坑,错了好几遍,那就是在算距离时,不能直接算距离,因原创 2016-08-17 20:57:02 · 500 阅读 · 1 评论 -
UVALive 6624 Card Trick (概率DP)
大体题意:一副扑克牌游戏,你要掀n个扑克牌,每个扑克牌上面有数值大小,这个数值大小x代表你要往后走x步,走到最后一个步就不走了!另一个人也要玩这个游戏,他的起点是1到10随意挑选一个! 除了第一个翻得牌知道以外,其余都不知道,求第二个人最后的终点和第一个人的终点一样的概率!思路:只有13个牌,2~11, A是11,J Q K 10是10 ,因此翻牌是10的概率是 4/13, 其原创 2016-08-21 00:09:06 · 572 阅读 · 1 评论 -
UVALive 6625 Diagrams & Tableaux (状态压缩DP)
大体题意:给你许多盒子,每一行的盒子肯定不能超过上一行的盒子,你要向盒子上放数字,多于每一列来说每一行的数字要严格大于上一行的数字,对于每一行来说,每一列的数字要大于等于上一列的数字!问最终的方案数?思路:比赛没有做出来 一看最多7*7的,果断dfs + 剪枝了 还是超时! 区域赛的题思路不对果断过不去啊! 因为每一列数字都是严格递增的,没有重复,因此可以用二进制数集来代原创 2016-08-21 14:28:40 · 775 阅读 · 0 评论 -
UVALive 6692 Lucky Number (思路 + 枚举)
大体题意:给你n 个数字,某一个数的幸运数是这个数前面比他小 离他最远的位置之差!求出最大幸运值!(大体上这个意思!= = )思路:建立一个结构体,用来存数,有这个数的最小位置,和最大位置!然后按照数值排序!然后从头枚举,这样做就符合了比他小的情况!还要满足位置之差最远,那么直接让当前数的最大位置减去前面最小位置即可!然后不断维护这个最小位置!详细见代码:#in原创 2016-08-23 19:41:05 · 450 阅读 · 0 评论 -
UVALive 6694 Toy Boxes (枚举 + 三分)
大体题意:给你n 个玩具,把n 个玩具放到三个箱子里面,每个玩具有个标号 每天玩一个玩具,每次玩时,你都要把那一箱玩具搬出来,求出玩完所有的玩具至少搬多少重量的玩具!思路:题意转换一下就是求,如何把n 个数分配成三组, 使得 每一组的质量和乘以数量 的 总和最小!没有找到确切的规律!那就枚举把!既然把玩具分成三组,肯定是质量相近的越好, 所以要先排个序!分成三组原创 2016-08-23 21:35:29 · 499 阅读 · 0 评论 -
UVALive 6696 A Generalized N-Queens Problem (最大团算法)
大体题意:给你一个n*n 的棋盘,有一定量的黑棋(相当于障碍)!,让你放尽可能多的白棋(皇后),使得任意两个白棋不能相互攻击!思路:想暴力的,结果也没搞出来!发现有6ms过得,原来不是暴力!请教了学长!可以这样考虑:对于每一个可以放白棋的地方,把他不能攻击到的地方相连,这样最终会得到一个无向图,两个点能连通代表了两个棋子不能相互吃掉!最后求一个解使得任意两个棋子都不原创 2016-08-24 12:15:52 · 535 阅读 · 0 评论 -
UVALive 6811 Irrigation Lines (二分图最小点覆盖--匈牙利算法)
大体题意:给你一个n*m 的矩形,里面有的是1,有的是0,求最少的竖线或者横线 使得覆盖所有的1!思路:二分图的最小点覆盖! 比赛没有搞出来,乱写的,还写了许多贪心!!!那个样例来说吧!0 1 01 0 10 1 0他最少两条直线就够了!我们给他标号! c1 c2 c3r1 0 1 0r2 1 0 1r3 0原创 2016-08-24 20:07:55 · 595 阅读 · 0 评论 -
UVALive 6807 Túnel de Rata (最大生成树)
大体题意:一个老鼠从A点出发,经过一个环回到起点,他可能走到任意地点, 让你在一些边上放摄像头,使得无论老鼠怎么走,总有一个摄像头能看到老鼠!摄像头的成本是这条边的权值!思路:既然他可以走到任意点,所以每个点都要能监视到,而且权值最小,而且有环,先求一个最大生成树!因为有环,旁边的点一定可以监视到这个最大生成树,这样保证了,可以监视整个图,也保证了权值和不是最大,剩下的在非最大生成原创 2016-08-24 21:10:32 · 611 阅读 · 0 评论 -
UVALive - 4256 || LA 4256 Salesmen 商人(DP)
大体题意:给你一个包含n个结点无向图,在给你一串序列,最终的目的是让这一串序列 任意相邻的两个数在无向图中能直接相连,或者这两个数相同!求最少改变几个数?思路:DP:令dp[i][j]表示 当前走到序列的 第i 个位置, 序列的值为j 的最少修改数!那么在处理时 我们找出与j 相邻的数 (或者相等)的k ,dp[i][j] = min(dp[i][j],dp[i-1][原创 2016-09-04 15:57:14 · 335 阅读 · 0 评论 -
LA 3266 || UVALive 3266 Tian Ji -- The Horse Racing 田忌赛马(贪心)
大体题意:田忌与齐王赛马,他们有n 匹马,告诉你每匹马的速度,田忌赢一场得200,输一场扣200,平局不赚不扣,求最高赚多少?思路:贪心思路都给双方排个序,从最快的 马开始枚举,如果田忌的当前的马快于齐王的马,那么这局肯定赢,直接得200。如果慢与齐王,那么这局肯定赢不了,既然赢不了,那不如用田忌当前最慢的马去输齐王当前最快的马。如果与齐王速度相同,那么这局也赢不了,那原创 2016-09-04 10:25:45 · 489 阅读 · 0 评论 -
UVALive 7464 - Robots (思路+模拟)
大体题意:给你两类机器人,一类机器人的传输时间为 x分钟,总共有m 个,另一类机器人有n 个 传输时间为y分钟!每一个机器人都要完成传输,你可以两个机器人进行合并(机器人向机器人传输),也可以机器人直接向Base传输!每一个机器人传输或接受 只能来自一个机器人,Base也是一样!求最少时间?思路:很有趣的一道题目,比赛时队友写的,赛后补一补!!因为第二类机器人的传输时间肯定大于原创 2016-09-17 01:00:24 · 770 阅读 · 0 评论 -
LA 3026 && POJ 1961 Period(KMP求前缀的最短循环节)
题意:给定一个长度为n 的字符串s,求它的每个前缀的最短循环节?思路:我们想一下KMP的next 函数。next[i]表示 由S[0],S[1],,,,S[i] 构成的字符串的最大前缀长度 使得前缀等于后缀。那么这个问题就很好办了。假设当前枚举到i 位置了。(目前字符串的长度是i)假设最短循环节是X。那么next[i] 一定是i - X;所以我们只需要判断i 是原创 2017-03-28 22:16:44 · 500 阅读 · 0 评论