- 博客(30)
- 资源 (12)
- 收藏
- 关注
原创 [POJ 2236]Wireless Network[并查集]
题目链接:[POJ 2236]Wireless Network[并查集]题意分析:电脑网络全部被破坏了,如今能做的是两个操作:一、修复某个电脑;二、查询两个电脑间能否交流。两台电脑能交流的情况是:两台都被修复了,并且两台相距小于d米或者两台之间能借由其它电脑相互联系解题思路:当某台电脑被修复时,遍历所有它能连接到的结点,如果所连接结点是被修复的,就将它归入到同一集合。这样每次查询的
2015-08-28 20:23:00 440
原创 [POJ 1308]Is It A Tree?[并查集][判断有向树]
题目链接:[POJ 1308]Is It A Tree?[并查集]题意分析:判断给出的有向图是不是一颗树。解题思路:嘛,首先得看看题目是怎么给树定义的。一、树是n(n>=0)个结点的有限集二、树没有环三、是树,不是森林四、有且仅有一个结点的入度为0五、除树根外,结点入度为1对于条件二,当某条边的左右两端点都属于一个集合时,就存在环了。对于条件三,当某个结
2015-08-28 07:17:09 971
原创 [UVA 11853]Paintball[DFS]
题目链接:[UVA 11853]Paintball[DFS]题意分析:在一个1000*1000的方块场地中,你需要从最左边开始一路避开敌人的攻击到达最右边。敌人有自己的坐标以及攻击范围,也就是一个圆形范围内你都不能碰到,问你能到达最右边吗?能的话输出左边进入的最大坐标(0,Ymax), 右边出去的最大坐标(1000,Ymax)。解题思路:什么情况下不能到达目标呢?只有这种情况,也就
2015-08-26 10:22:45 1183
原创 [ZOJ 3646]Matrix Transformer[二分图匹配]
题目链接:[ZOJ 3646]Matrix Transformer[二分图匹配]题意分析:任意交换两行或者交换两列,可以进行无限次。问:能否使主对角线全都是UP?解题思路:最终需要到达的状态是对角线全都是UP。那么问题可以转换为:最终需要每一行都对应着唯一一个UP,且这个UP只属于这一行所拥有。那么就是这一行对这一列,且这一列上的这一个行位置是UP。整个就是一个匹配的思想,每一行都
2015-08-25 01:13:03 618
原创 [UVA 1632]Alibaba[区间DP]
题目链接:[UVA 1632]Alibaba[区间DP]题意分析:有n个宝藏,每个都在一个位置p[i],在规定的时间t[i]就会消失。阿里巴巴要在宝藏消失前收集齐所有宝藏,问:有方法吗?有的话最少多少秒?解题思路:嘛,取宝藏肯定是一个连续的区间都取掉,故意不拿绝对不是最优策略。所以整个策略就包括两种:向左走还是向右走。设状态为dp[l][r][2]。0代表阿里巴巴在左端点,1代表阿
2015-08-24 02:14:55 1439 4
原创 [UVA 10820]Send a Table[欧拉函数][nloglog(n)]
题目链接:[UVA 10820]Send a Table[欧拉函数][nloglog(n)]题意分析:友人A想要打表过题,每个表内数据都是以数对的形式(x,y)出现,但是呢,表太大了,OJ不让上交。机智的他发现了一个规律:数对(x*k, y*k)可以由数对(x,y)推出来,所以他只用打(x,y)上交就行了。比如(1,2)被打入表,那么(2,4) (3,6)....这些数据就不用打入表了。现
2015-08-24 01:09:27 919 1
原创 [HDU 5410]CRB and His Birthday[01、完全背包]
题目链接:[HDU 5410]CRB and His Birthday[01、完全背包]题意分析:有m的钱,n种商品,每种价格w[i],购买了i种商品x个的话,商店会赠送糖果:a[i] * x + b[i]个(x>0)。那么,最多能得到多少糖果呢?解题思路:首先考虑b[i]的存在,b[i]只会出现在购买了一次商品时用上,用01背包处理,然后01背包处理完后,可以接着跑一遍多重背包,
2015-08-24 00:43:47 918
转载 快速幂模板
出处:http://www.cppblog.com/acronix/archive/2010/08/23/124470.aspx?opt=admin下面是 m^n % k 的快速幂:// m^n % kint quickpow(int m,int n,int k){ int b = 1; while (n > 0) {
2015-08-23 14:06:18 482
原创 [HDU 4324]Triangle LOVE[找环]
题目链接:[HDU 4324]Triangle LOVE[找环]题意分析:判断给出的图是否有一个长度为3的环。解题思路:dfs判断环,然后依据d数组判断深度是否符合。个人感受:嘛!网上有说A->B->C, A->C也算是三角恋,我觉得和题意不相符呀,并且依据这个推出了成n环即必有成三角环的结论。感觉还是直接判断长度为3的环靠谱,毕竟题目是说:“Triangle Love”
2015-08-23 02:29:26 588
原创 [UVA 10817]Headmaster's Headache[状压DP]
题目链接:[UVA 10817]Headmaster's Headache[状压DP]题意分析:校长需要s门课,每门至少有两名老师来教,所以他现在想要招老师啦。当然,校长手头本来就有m个老师,每个老师都教着一个或多个课程,这些老师是不能解雇的,必须用。然后现在又n个老师来应聘,每个都有价格和他们能教的课程,校长希望花最少的钱达到他的目标,问:最少多少钱呢?解题思路:嘛!s = m时
2015-08-22 23:25:40 1470
原创 [ACdream]小Y上学记——要迟到了![最短路][spfa]
D - 小Y上学记——要迟到了!Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)Submit StatusProblem Description“你是我心中最美的云彩....",这不是大妈的广场舞,而是小Y的闹钟,然而小Y由于昨晚玩得太疯,导致今天居
2015-08-22 20:57:54 612
原创 [UVA 10054]The Necklace[欧拉回路][打印路径]
题目链接:[UVA 10054]The Necklace[欧拉回路][打印路径]题意分析:判断图中是否都是欧拉回路,是的话输出所有路径。解题思路:根据所有点的度数来判断是否是欧拉回路,当所有点的度数都是偶数时,该图即都为欧拉回路。因为这题可能存在多个回路,所以不用判连通。个人感受:嘛,不会做呀。多做多练。具体代码如下:#include#include#inclu
2015-08-22 20:46:48 608
原创 [ACdream]小Y上学记——修学分[拓扑排序]
A - 小Y上学记——修学分Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)Submit StatusProblem Description小Y终于如愿以偿地通过高考来到了魂牵梦萦的大学校园——ACdream大学。来到校园的第一件事就是选课。由于
2015-08-22 00:28:19 646
原创 [UVA 202]Repeating Decimals
题目链接:[UVA 202]Repeating Decimals题意分析:给出分子、分母。求循环节的长度,并输出循环节,超过50用...代替。解题思路:首先是得到小数部分,例如分数 1/3 。整数部分 1/3,小数部分就是(1%3)*10/3每一位的整数部分等于上一位对分母取余乘10再除以分母。不过这里我们写成 (1 - 1/3 * 3) * 10 % 3,防止除数是0的情况。最后
2015-08-21 10:44:23 753
原创 猜数字游戏v2.0[C语言][自制]
和室友做的第二个版本。具体就是判断四位数字是否相同,然后给出哪个位相同,哪个位不同XD。具体思路:用随机函数产生四位数字,然后一位位比较。这个是个so easy 版本,没有猜测次数限制XD效果图:代码如下:/*GuessNumberGame2*/#include#include#include#include#pragma warning(disable:49
2015-08-18 19:12:45 998
原创 键盘小钢琴[C语言][自制]
大一上最喜欢的一个作品 。刚开始只是一个能自动发出小星星音乐的小程序XD效果图:代码如下:/*This is a small piano.这是一个小钢琴哦~*/#include#include //非缓冲输入#include#include#pragma warning(disable:4996) //to use getche() in VS needs i
2015-08-18 18:50:39 5831 3
原创 猜数字小游戏[C语言][自制]
大一上的自制,嘛,不保证易读性,能用就用上吧具体思路:产生随机数,然后是比较两者的大小,输出答案是大了还是小了,还是正确了。代码如下:/*This is a guess number game.Created by Hugh&Zero&Seven.It is so hard to find a good way to identify 'guessNumber'betwee
2015-08-18 18:36:26 805
原创 [POJ 3041]Asteroids[二分图匹配]
题目链接:[POJ 3041]Asteroids[二分图匹配]题意分析:Bessie要把阻挡她的小行星都炸掉,一次可以炸一排,不过由于这种炮弹很值钱,所以她需要你计算最少需要用多少炮弹可以打掉所有行星。解题思路:把行星所在的x轴坐标看作图中的一个点,y轴坐标看作一个点,同一行星的x、y点间连一条直线,原问题就转换成了选出最少的点,让所有边都与其相连,也就是最小点覆盖(因为当这个点被
2015-08-17 23:20:13 522
原创 [UVA 10801]Lift Hopping[Dijkstra][建图]
题目链接:[UVA 10801]Lift Hopping[Dijkstra][建图]题意分析:从0层开始,一共有n台电梯供你到达目的地k层。每台电梯往上走一层都要消耗t[i]的时间,并且电梯只能在特定的楼层停下,换成电梯要花费60s的时间,而且呢,你不能用楼梯上楼,只能搭电梯。。。。(hentai!)问:最快到达楼层k的时间是多少?不能到达就输出-1。解题思路:这题技巧就是体现在建
2015-08-17 00:58:02 917
原创 [UVA 11526]H(n)[数学]
题目链接:[UVA 11526]H(n)[数学]题意分析:求出公式的值。也就是sum{n/i} 。不过循环是int i = 1; i 解题思路:显然,有一大波的数n/i的值是相等的(被取整了)。所以可以从这些入手,只要能求出值相等的区间长度,就可以降低整个复杂度。比如n=10的情况:1 2 3 4 5 6 7 8 9 10 对应的值为: 10 5 3 2 2 1 1
2015-08-15 20:45:01 569
原创 欧拉函数[已解决]
起因:[UVA 10820]Send a Table疑问:关于欧拉函数的(nloglogn)算法。在代码中的部分,不明白为什么这样就可以求出欧拉函数的值 phi[1] = 1; for (int i = 2; i <= 50001; ++i) if (!phi[i]) { for (int j = i; j <= 50001; j += i)//这
2015-08-15 01:32:21 1021 1
原创 JAVA大整数[小结]
首先是要导入的类包:import java.util.*;import java.math.*;然后是具体框架:public class Main { public static void main(String args[]) { }}具体以 UVA 10254 The Priest Mathematician 为例:import java.util.*
2015-08-13 22:40:49 644
原创 约瑟夫环问题[已解决]
对约瑟夫环的递归方程的疑问。能理解到重新编号这一点,但是相对的递推f(n) = (f(n - 1) + k) % n这点没有理解,感觉内在联系不是很明显。=================================================================================2015. 8. 13 更新:起因是这道题目:[UVA 1394]
2015-08-13 19:54:21 1040
原创 [UVA 12589]Learning Vector[DP]
题目链接:[UVA 12589]Learning Vector[DP]题意分析:给出n个矢量,从中选择k个,以坐标原点为起点,收尾相连,问:这样的k个周围相连矢量与x轴围成图形的最大面积的两倍是多少?解题思路:考虑状态:dp[id][pick][h]代表到第id个矢量为止,选择pick个矢量离最大面积还差多少,h为当前图形最右端高度。具体转移看代码。这里着重说一下为什么要对这些矢量按斜
2015-08-12 22:16:58 1001
原创 [UVA 10003]Cutting Sticks[DP]
题目链接:[UVA 10003]Cutting Sticks[DP]题意分析:给出一根木棍,然后需要对其进行切割,每一次切割费用是被切割木棍的长度。比如长度为10米,在4米处切割,因为被切割的木棍长度为10米,所以费用为10。问:升序给出所有要切割的点,最少的切割费用是多少?解题思路:状态:dp[i][j]表示切割区间[i,j]所需要的最少费用;转移:dp[i][j] = min(dp[i
2015-08-12 18:59:54 579
原创 [UVA 1629]Cake slicing[记忆化搜索]
题目链接:[UVA 1629]Cake slicing题意分析:一个矩形蛋糕上有好多个樱桃,现在要做的就是切割最少的距离,切出矩形形状的小蛋糕,让每个蛋糕上都有一个樱桃~问最少切割距离是?解题思路:既然是切割蛋糕,可以感受到是一个无限切割的过程(递归?)反正有这种感觉存在。然后数据是20*20。那么就试试记忆化搜索。我们设dp[u][d][l][r]为u(up)为上届d(down)为下届,
2015-08-12 02:05:24 2070
原创 [LightOJ 1018]Brush (IV)[状压DP]
题目链接:http://lightoj.com/volume_showproblem.php?problem=1018题意分析:平面上有不超过N个点,现在可以任意方向划直线将它们划去,问:最少要划几次可以把所有的点划去?解题思路:我们可以使用集合S表示:有哪些点还没有被划掉,然后转移 dp[s] = min(dp[s &(~line[i][j])]) + 1;这里涉及到line[i][j]
2015-08-11 03:55:21 1687
原创 [ACdream]哗啦啦村的日常游戏(一)抓个球[概率DP][记忆化搜索]
F - 哗啦啦村的日常游戏(一)抓个球Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)Submit StatusProblem Description唐老师和狗哥在玩哗啦啦村的日常游戏——抓个球。在袋子里有w个白球,b个黑球。唐老师和狗哥轮流
2015-08-05 23:34:47 1214
原创 [UVA1619]Feel Good[DP]
题目链接:[UVA1619]Feel Good[DP]题意分析:求一个连续区间的最大值。定义:区间最大值 = 区间和 * 区间最小数。解题思路:根据区间最大值的定义,我们可以枚举每个区间然后进行计算。然而显然是要超时的。这时可以考虑将每个数作为最小值,求出以其为最小值的区间的左值和右值。以左值的更新为例:当当前值大于等于区间最小值时我们就向左更新,可以发觉,当前值如果比区间最小值大,那
2015-08-05 01:16:07 876
原创 [UVA12545]Bits Equalizer[贪心]
题目链接:[UVA12545]Bits Equalizer[贪心]题意分析:可以进行三种操作。一、将0变成1;二、将问号变成0或者1;三、交换两个字符;用最少的步骤将S串变成T串。不行就输出-1。解题思路:首先根据题意,既然0能变1,问号能变任何。那么不能变成T串的情况只能是S串中的1大于T串中1的个数。(因为减不掉)然后考虑能够成为T串的情况。首先,不相同的0和不相同的1首先进行置换
2015-08-01 21:55:05 1007
数据结构与算法分析(C++版)(第三版)第五章个别习题答案
2015-10-16
数据结构与算法分析(C++版)(第三版)第四章个别习题
2015-09-25
数字识别系统预处理类
2015-09-22
数据结构与算法分析(C++版)(第三版)第三章个别习题答案
2015-09-22
The C Programming Language 2nd Edition(英文原版,包含答案)
2014-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人