- 博客(22)
- 资源 (2)
- 收藏
- 关注
原创 POJ-2342 Anniversary party(Tree dp)
最基础的Tree dpdp[i][0]表示编号为i的结点不去,dp[i][1]表示编号为i的结点去。转移方程为dp[i][0] += max(dp[son[i]][0],dp[son[i]][1]); dp[i][1] += dp[son[i]][0];#include #include #include #include const
2013-09-01 14:54:36 476
原创 POJ-3345 Bribing FIPA(Tree dp + 背包)
题目意思,给定一棵树,节点都有一个值val,表示攻占掉以该节点为根的子树(攻占了这棵子树所有的结点)所需要的最少值,问至少需要攻占m个字节需要的最少值。类似于POJ-1155(http://blog.csdn.net/wrong_answer/article/details/10824753),树上做0-1背包,转移方程也一致。不过是背包完毕之后,需要判断一下dp[root][sum]与根节点
2013-09-01 14:49:14 541
原创 POJ-1155 TELE(树形dp+背包)
题目地址:http://poj.org/problem?id=1155基础的树形dp,在以i为根结点的子树上选择儿子的过程就是做一次0-1背包,背包体积变化,物品体积变化。dp[i][j]表示以i为根结点的子树选择j个用户的最大代价,转移方程为dp[i][j] = max(dp[i][j],dp[i][j-k]+dp[son[i]][k]);#include #inc
2013-09-01 14:37:22 752
原创 HDU-1011 树形dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011首先来说题目的意思,给一个树形的迷宫图,树的每一个节点都有两个值,bug数和brain数,只有消灭完了bug,就能得到这个节点的brain。你手里有m个士兵,每个士兵能消灭20个bug,现在你从迷宫的入口1开始攻击,攻击某个节点的士兵需要先攻占其父节点,问m个士兵能获取的最多的br
2013-09-01 14:18:37 529
转载 (转) KMP算法和状态机的联系
学了很久的KMP算法,直到今天看到这一篇关于KMP与状态机分析的文章,才对所学的KMP有了更深一层的理解。这篇文章不管对于初学者还是已经已经学过KMP的人,都是很好的借鉴。特此转来共享!Blog原址:http://blog.csdn.net/virtualxmars/article/details/8130868应群里很多师弟的要求,现站出来解释解释大学时期学过的KMP算法本质是什么。以及
2013-08-17 22:16:22 1404
原创 HDU 4349——Lucas定理的巧妙应用
Lucas定理如下,是Édouard Lucas于1878年证明的定理,其数学表达式如下:For non-negative integers m and n and a prime p, the following congruence relation holds:whereandare the base p expansions of m and
2012-12-15 18:42:56 412
原创 POJ 2109
这题这样做,貌似也太黑了,让广大高精度+二分的孩子们怎么办........//POJ 2019//2012-8-17//by wxping#include #include using namespace std;//double的储存范围在10^(-307)~ 10^(308),但是只能精确前16位,慎用之//求x的n次平方根除了用log之外,还可以用pow(x,1.0/n);
2012-12-15 18:41:52 215
转载 一个清华大学毕业生做猎头的感受(转)
这篇是以前读过的文章,这次又翻了出来,写在我自己的博客里,并且对我觉得重要的东西标了出来。里边的内容,限于自身的经历有限,有很多地方并不能完全认同。或许是每个人对成功的定义都不一样吧。但至少能引起我们的思考,我想,等以后我在看这篇文章的时候会有更多的感悟吧。 从来没有想过自己会加入这一行,从开始自己喜欢的专业通讯,到后来喜欢的管理,幻想过是专业高手,幻想过管理专家,却从来没有想过进入
2012-12-15 18:39:07 1022
原创 我的并查集——Codeforces Contets#134 div2 Problem C
在参加了Codeforces的一次比赛之后......发现和来自地球不同角落的人参加一场比赛,十分有趣,尤其是看到standing上的排名上各种各样的国旗,竟是一件十分好玩的事情........当然,以我现在的水平.....只能是打酱油了...... 在CF上两个小时刷了两道水题之后,被第三题卡住了.....赛后经杨大神指点,才发现有并查集这么一个好的东东......而且值得欣慰的是
2012-12-15 18:38:29 257
转载 ACM-ICPC比赛随想——刘汝佳 (转)
———————————————————————————————–作者简介:刘汝佳,1982年12月生,毕业于重庆外国语学校,清华大学计算机科学与技术系2005级研究生。高二时创立“信息学初学者之家”网站(OIBH),高三入选IOI2001国家集训队。大学一年级时获ACM/ICPC世界总决赛银牌(世界第四),IOI2002/03/04国家集训队指导老师。曾与黄亮合作出版了《算法艺术与信息学竞赛》
2012-12-15 18:36:54 329
原创 快速幂以及快速矩阵幂
求幂是常见的运算,当然用朴素的循环做法很容易解决。但是在ACM中,当所要求的幂指数太大时,并且如果是在在循环当中,那么O(N)的时间复杂度往往不能达到ACM比赛要求的时间要求。因此快速幂是一种很好的求幂方法,简单易行,并且时间复杂度为O(logN),可以满足相当的时间要求。PS:if(n&1) &符号表示取与运算,因为1的二进制表示最后一位为1,所以若是使n&1为真,那么n
2012-12-15 18:35:56 331
原创 那些年,我们一起做过的贪心
题目意思非常简单,有一堆方木需要处理,处理准备时间如下:第一块方木需要时间为1;如果当前处理方木的长宽都大于等于前一块方木,那么准备时间为0。 此题wrong answer了一次,主要是先前的思路是错误的。先前的想法是,按照l进行排序,然后再统计w的逆序个数;同时按照w排序,再统计l逆序的个数。最后,取其中的最小值。后来,发现这种思路是严重有问题的! 其实这个题十分简单,就是将所有
2012-12-15 18:33:55 245
原创 POj 2823
比较好用的就是单调队列了,时间复杂度为O(N),这样做出来的时间是5500ms左右,算是POj上该题的平均时间。代码如下:// POJ 2823//2012-8-6//wxping#define Max 1000000#include #include typedef struct{ int date,pos;}Queue;Queue qumax[Ma
2012-12-15 18:29:44 248
原创 POJ 1328
刚刚接触贪心算法,并不十分理解贪心算法的真正意思.......查阅之,不懂......POJ上找题试试POJ 1328 是说在海岸线上怎么样才能见最少的雷达覆盖海中的岛屿,该题转化为数学问题就是在x轴上找最少的点,使之可以覆盖平面上给出的一定数量的点。 思路就是通过找出每个海岛放置雷达的左右区间xl,xr,再按照区间左值xl排序,然后遍历,当发现下
2012-12-15 18:28:01 312
原创 POJ 1477 ( 贪心 )
POJ 1477 典型的贪心算法,很水,直接贴代码 PS:注意每组数据之后都有一个空行#include #include using namespace std; bool cmp(const int a,const int b) { return a>b; } int main() { int bricks[55]; int n,l=0,i,sum,a
2012-12-15 18:25:57 286
原创 POJ3006——一个晚上的纠结之路
本人水鸟一枚,刚刚开始进入POJ天地,所以先找几个水题练手。但是,由于自己长期以来的懒惰,对算法研究不是很深,对一些常用的算法掌握不够,导致了今天晚上的悲剧!POJ3006题对于许多大牛来说,是一道水的不能再水的题,方法简单至极!但是,就是这道题,纠结了我一个晚上! 初读题目,题目意思十分清晰。因为以前测试的是1000000以内的素数打表时间为0.2s左右,所以直接就轻而易举地
2012-12-15 18:23:30 314
原创 Airport Announcements(NEERC 2011 Eastern Subregional)
可恶的Airport Announcements(http://acm.timus.ru/problem.aspx?space=1&num=1889 ),终于AC了,加上下午训练赛的三个小时,总共5个小时啊。期间,WA四次,竟然还CE了一次,是忘了加头文件了......还是自己的编程习惯不好.......直接导致我以为是string提交不可以,改回来了原始的char[],不过还在这样修改过后AC了
2012-12-15 18:10:39 724
原创 LIS(最长上升子序列)
学习动态规划,绕不过去的一个经典的算法就是LIS, 也就是最长上升子序列。当然,对于这个问题有很多变化形式,如最长下降子序列、最长非上升子序列、最长非下降子序列等。但是,其内在的原理是一样,所运用的算法也是相同的,只是在一些细节方面有些许变化而已。 现在以BUAA内部上机网站上的EASY LIS为例(好久没有上过POJ了),来总结自己在学习LIS中的心得体会。 题目原址
2012-12-15 00:19:26 329
转载 动态规划解投硬币的概率问题
逃课时间限制:1000 ms | 内存限制:65536 KB描述在一个星期三的早上,某同学想用扔硬币的方式来决定是否要去上算法课。他扔 n 次硬币,如果当中有连续 m 次以上(含 m 次)的结果都是正面,那么他就去上课,否则就接着睡觉。(假设每次扔硬币扔出的正反两面的概率都是 0.5。)输入输入的每行有一组数据,分别为 n 和
2012-10-15 11:19:51 1108
原创 最长公共子序列空间优化算法
题目链接 http://www.bianchengla.com/oj/par/practise/problem?id=1066受一位牛神启发,利用两个一维数组替换二维数组,数组滚动后移,从而实现节省空间的目的。#define MAXN 1000+5#include #include char str1[MAXN],str2[MAXN];int cnt1[MAXN],cnt2[
2012-09-18 20:26:02 570
原创 POJ 1477(贪心)
题目链接:http://poj.org/problem?id=1477 典型的贪心算法,很水,直接贴代码 PS:需要注意的就是每组数据之后都有一个空行#include #include using namespace std;bool cmp(const int a,const int b) { return a>b; }int main(){ int bri
2012-09-16 10:19:29 255
原创 POJ 1065(贪心)
题目链接 http://poj.org/problem?id=1065 题目意思非常简单,有一堆方木需要处理,处理准备时间如下:第一块方木需要时间为1;如果当前处理方木的长宽都大于等于前一块方木,那么准备时间为0。此题wrong answer了一次,主要是先前的思路是错误的。先前的想法是,按照l进行排序,然后再统计w的逆序个数;同时按照w排序,再统计l逆序的个数。最
2012-09-02 19:48:57 340
NOKIA 证书破解软件
2013-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人