上一页 1 2 3 4 5 6 7 ··· 17 下一页
摘要: 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2157矩阵乘法。注意当k=0时 a 与 b 相等不相等的两种情况。数据好像有重边,重边只算一次就好。code:View Code 1 # include<stdio.h> 2 # include<string.h> 3 # include<stdlib.h> 4 # define MOD 1000 5 # define N 25 6 struct matrix{ 7 int map[N][N]; 8 }; 9 int n;10 matrix power(matr 阅读全文
posted @ 2012-05-08 10:54 奋斗青春 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2545很裸的一道LCA,就是让你判断谁先到达他们的最近公共祖先。如果用一个数组dis[]存储每一个节点到根节点的距离,那最后就是比较dis[a]-dis[LCA(a,b)] 与dis[b] - dis[LCA(a,b)]的大小额。。好吧,写到这里的时候我发现了,最后不就可以转化成谁到树根的距离近么,,直接判断dis[a]与dis[b]的大小就好了哎,是我2b了,,既然写到这里了就把这篇博客写完吧。先找出root,然后dfs一次找出每个节点到root的距离,其实这个地方就可以结束了。如果用LCA的话, 阅读全文
posted @ 2012-05-07 20:20 奋斗青春 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1044题目大意:在一个迷宫中,从起点走到终点,还有几个宝物,问在给定的时间内,到达终点后所能获取的最大价值。思路:先用bfs求出入口,宝物,出口,两两之间的最短距离。在用dfs搜索所有情况,求出从入口走到出口能获得的最大价值。熟悉两种搜索的优缺点:BFS:对于解决最短或最少问题特别有效,而且寻找深度小,但缺点是内存耗费量大(需要开大量的数组单元用来存储状态)。DFS:对于解决遍历和求所有问题有效,对于问题搜索深度小的时候处理速度迅速,然而在深度很大的情况下效率不高code:View Code 1.. 阅读全文
posted @ 2012-04-27 12:07 奋斗青春 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1155好长时间没写过树形DP了,突然间想写道题,就在网上随便搜了一题。题目大意:要转播一场球赛,根节点和所有中转节点都有一个信号塔可以传播信号,所有的叶子节点表示用户。每条边都有一个权值,表示传播过来需要的花费。当能传到用户的时候,用户会付一定的费用,问在不亏本的情况下,最多能让几个用户观看到这场球赛。思路:用一个DP[u][j]表示以u为根的子树,满足j个用户的时候最多能盈利多少。那最后找一个最大的j满足DP[1][j]>=0 就是所求。状态转移:如果v为u的一个孩子节点。那么DP[u][i]=Max(DP[u][i] , 阅读全文
posted @ 2012-04-27 10:56 奋斗青春 阅读(1026) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4210Dancing Links + dfs。额,好像又有一段时间没更新博客了,最近比较忙,上周校赛终于圆满结束了,我这一颗心也终于能放下来了。上周还有一些另外收获,先保密吧 ^_^这周本来不准备去武汉参加比赛的,想在五一的时候好好出去玩玩,但由于种种原因吧, 老师还是决定让我们这队去。哎,压力又是不小啊。这几天抓紧集训一下,希望能找回一些状态。上周就看过这道题目,当时没仔细读,以为给出的骨牌没什么用,就是一个很裸的数独问题,今天写好了代码,发现结果和给出的样例不太一样。又读了读题目,发现原来需要判 阅读全文
posted @ 2012-04-24 16:05 奋斗青春 阅读(451) 评论(0) 推荐(1) 编辑
摘要: 这题真的是纠结了好久,去年暑假做了好久没能搞出来,昨天再回过头来做,发现有些思路了。贡献了n次wa之后终于改对了。int l1,r1;//标记左右两端分别是什么颜色int ll,rr;//记录左右两端的长度是多少int Blen,Wlen;//记录该区间中连续黑,连续白石头的最长长度是多少int cp;//标记该区间是否被整个turn需要记录下来这些变量,最重要的是cp,它记录的是该区间是否被整个转变颜色。View Code 1 # include<stdio.h> 2 # include<string.h> 3 # include<stdlib.h> 4 阅读全文
posted @ 2012-04-11 19:19 奋斗青春 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 看过这题之后,首先想到的是二维线段树,但是后来做的时候发现不太好搞,因为x和y会相互影响的。搜了下解题报告,说是用二维树状数组,然后我就自己开始搞。写过之后虽然AC了,但是跑了1000ms+,感觉太慢了,就搜了下别人的代码,发现我们所理解的二维树状数组有些差别。我是把每一列当成一个一维的树状数组,等于是n多的一维树状数组,然后这样来看成二维的。而别人的直接就是用二维来进行查询更新的。直接看代码吧:“伪二维树状数组”:View Code 1 # include<stdio.h> 2 # include<string.h> 3 # define N 1005 4 int s 阅读全文
posted @ 2012-04-11 11:52 奋斗青春 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 这次真的是好久没更新博客了,好几个月了都没怎么做过题了...马上又要有一系列的比赛了,是时候找回状态了,既然选择了再战一年,就必须要全力以赴。闲话不多说了,进入正题吧~思路:离散化dp。题目描述有点生涩,不过看出来了就是:给你n个数(1-n),让你从中选出一些数,使这些数的最小公倍数大于等于m,问共有多少种选择。刚开始有想到DP,但一看到m那么大就直接凌乱了。虽然m很大,但是会用到的状态最多才3w+ ,想到这一点这题就可解了。因为这些有用的状态不是连续的,m还那么大,所以要用到离散化,所以用map最为方便。之前没用过stl,只知道很强大,今天学了一个map,算是感觉到了。View Code . 阅读全文
posted @ 2012-04-07 18:14 奋斗青春 阅读(339) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1588/*把斐波那契数列转化为矩阵:A={1 1} {1,0};{f[n+1],f[n]} {f[n],f[n-1]} = A^n ;最后输出右上角那项或者用{f[n+2],f[n+1]}{f[n+1], f[n] } = A^(n+1); 最后输出右下角那项我们用第一个公式所求即为A^b + A^(k+b) + A^(2*k+b) + ... + A^((n-1)*k+b)=A^b * ( A^0 + A^k + A^(2*k) + ... + A^((n-1)*k) )=A^b * ( (A^k)^0 + 阅读全文
posted @ 2011-11-01 11:51 奋斗青春 阅读(876) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3613Cow RelaysTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 3199Accepted: 1240DescriptionFor their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race using the T (2 ≤ T ≤ 100) cow trails throughout the pasture.Each trail co 阅读全文
posted @ 2011-10-31 19:58 奋斗青春 阅读(924) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 17 下一页