上一页 1 2 3 4 5 6 7 ··· 19 下一页

2013年11月17日

POJ1947 - Rebuilding Roads(树形DP)

摘要: 题目大意 给定一棵n个结点的树,问最少需要删除多少条边使得某棵子树的结点个数为p 题解 很经典的树形DP~~~直接上方程吧 dp[u][j]=min(dp[u][j],dp[u][j-k]+dp[v][k]-1) 方程的意思是 以u结点为根保留j个结点需要删除的最少的边的条数,那么可以选择在某个子结点v中选择k个保留,其他结点保留j-k个,为什么需要-1呢,因为相当于把子树v衔接到结点u上,因此边... 阅读全文

posted @ 2013-11-17 22:37 仗剑奔走天涯 阅读(207) 评论(0) 推荐(0) 编辑

POJ1155 - TELE(树形DP)

摘要: 题目大意 电视台要直播一场比赛,电视网络刚好形成了一棵树,其中有M个为客户端,其他的为中转站,其中中转站与中转站以及中转站与客户端之间连接都需要一定费用,每个客户i愿意支付pay[i]元钱,问电视台在不亏损的情况下,最多可以让多少个客户观看比赛 题解 每个客户要么选要么不选,和01背包差不多,只不过这是在树上进行,我们用dp[u][j]表示以u为根节点选择j个客户的能够获得的最大盈利,dp[u][... 阅读全文

posted @ 2013-11-17 18:22 仗剑奔走天涯 阅读(192) 评论(0) 推荐(0) 编辑

HDU4003 - Find Metal Mineral(树形DP)

摘要: 题目大意 给定一棵n个结点的树,每条边有一个花费,有k个机器人从点s出发,让它们遍历所有的边,最小花费是多少? 题解 完全没思路。。。。看了他的题解再写的~~ 代码: #include #include #include #include using namespace std;#define MAXN 10005struct node{ int v,next,w;};node edge[2... 阅读全文

posted @ 2013-11-17 15:58 仗剑奔走天涯 阅读(141) 评论(0) 推荐(0) 编辑

CF29D - Ant on the Tree(DFS)

摘要: 题目大意 给定一棵树,要求你按给定的叶子节点顺序对整棵树进行遍历,并且恰好经过2*n-1个点,输出任意一条符合要求的路径 题解 每次从叶子节点开始遍历到上一个叶子节点就OK了, 这个就是符合要求的路径 代码: #include #include #include #include #include using namespace std;#define MAXN 305vectorG[MAXN],... 阅读全文

posted @ 2013-11-17 14:27 仗剑奔走天涯 阅读(291) 评论(0) 推荐(0) 编辑

2013年11月14日

算法纲要

摘要: 基本C/C++、STL(vector、set、map、queue、string、algorithm)枚举、贪心、递归、分治、递推、模拟构造、位运算、常数优化数据结构队列、堆、栈、链表排序(插入、冒泡、快速、归并、堆、桶、基数)二分查找、散列表、并查集、哈夫曼树排序二叉树、左偏树、平衡树(Splay/... 阅读全文

posted @ 2013-11-14 22:31 仗剑奔走天涯 阅读(580) 评论(0) 推荐(1) 编辑

2013年11月11日

HDU2196 - Computer(树形DP)

摘要: 题目大意 给定一颗n个结点的树,编号为1~n,要求你求出每个结点能到达的最长路径 题解 用动态规划解决的~~~~把1 当成树根,这样就转换成有根树了。我们可以发现,对于每个结点的最长路,要么是从子树得到要么是从父亲得到我们用数组f,g,h分别记录从当前结点到子树能够获得的最大值和第二大值以及从当前结点到祖先能够获得的最大值。我们先进行一次dfs,把f和g值求出来,然后再进行一次dfs求出h的值来,... 阅读全文

posted @ 2013-11-11 01:00 仗剑奔走天涯 阅读(212) 评论(0) 推荐(0) 编辑

2013年11月10日

HDU4607 - Park Visit(树的直径)

摘要: 题目大意 给定一颗树,要求走过其中连续的k个点,使得步数最少 题解 每条边要么经过两次,要么一次,因为我们的目标就是使得走一次的边尽量的多,这样就转换成求树的直径了,求树的直径我用的是两次dfs,先随便从一个点开始dfs,找出以这个点为根距离它最远的结点,假设为s,然后再从s结点进行一个dfs,距离s结点最远的点与s点的距离就是树的直径(假设为d),最后判断一下k和树的直径的大小,如果k-1小于树... 阅读全文

posted @ 2013-11-10 23:43 仗剑奔走天涯 阅读(228) 评论(0) 推荐(0) 编辑

2013年11月4日

HDU1520 - Anniversary party(树形DP)

摘要: 题目大意给定一颗树,每个结点有一个分值,父亲结点和子结点不能同时选,问你最多能获得的分值是多少?题解第一次独立做出树形DP来(虽然很水),撒花庆祝一下,哈哈~~~话说树形DP和记忆化好相似的说~~~(似乎没区别?)。用dp[root][0]表示以root为根的子树不选root能够获得的最大值,dp[root][0]=max(dp[son(root)][1],dp[son(root)][0]),同理dp[root][1]表示以root为根的子树选择root能够获得的最大值,只需把root的所有子节点形成的子树并且不选子节点能够获得的最大值全部加起来就是dp[root][1],即dp[root][ 阅读全文

posted @ 2013-11-04 14:45 仗剑奔走天涯 阅读(187) 评论(0) 推荐(0) 编辑

2013年10月29日

POJ1276 - Cash Machine(多重背包)

摘要: 题目大意给定一个容量为M的背包以及n种物品,每种物品有一个体积和数量,要求你用这些物品尽量的装满背包题解就是多重背包~~~~用二进制优化了一下,就是把每种物品的数量cnt拆成由几个数组成,1,2,4,~~~cnt-2^K+1,k满足cnt-2^K+1>0的最大整数,体积和价值乘上相应的数就是相应物品的价值和体积,这样用这些物品能够表示1~~cnt所有的情况~~~这就转化成01背包了~~~代码:#include #include #include #include #include using namespace std;#define MAXN 100005int dp[MAXN];in 阅读全文

posted @ 2013-10-29 12:22 仗剑奔走天涯 阅读(363) 评论(0) 推荐(0) 编辑

2013年10月16日

POJ动态规划题目列表

摘要: 列表一:经典题目题号:容易:1018,1050,1083,1088,1125,1143,1157,1163,1178,1179,1189,1191,1208,1276,1322,1414,1456,1458,1609,1644,1664,1690,1699,1740,1742,1887,1926,1936,1952,1953,1958,1959,1962,1975,1989,2018,2029,2039,2063,2081,2082,2181,2184,2192,2231,2279,2329,2336,2346,2353,2355,2356,2385,2392,2424,不易:1019,103 阅读全文

posted @ 2013-10-16 18:29 仗剑奔走天涯 阅读(556) 评论(0) 推荐(0) 编辑

2013年10月3日

HDU3727 - Jewel(主席树)

摘要: 题目大意 对一个序列进行以下四种操作: 1、Insert x 在序列尾部插入x 2、Query_1 s t k 查询区间[s,t]的第k小 3、Query_2 x 查询x的在序列中排名 4、Query_3 k 查询序列中的第k小 题解 第一个和第二个显然是主席树能够实现的功能,第三四个操作用vector+lower_bound就可以实现,妈蛋,写完交上去一直WA,fuck,然后把存储操作类型的每个... 阅读全文

posted @ 2013-10-03 22:21 仗剑奔走天涯 阅读(323) 评论(0) 推荐(0) 编辑

HDU4417 - Super Mario(主席树)

摘要: 题目大意 给定一个数列,每次要求你查询区间[L,R]内不超过K的数的数量 题解 和静态的区间第K大差不多,这题是#include #include #include using namespace std;#define MAXN 100005#define lson l,m,ls[s]#define rson m+1,r,rs[s]int ls[20*MAXN],rs[20*MAXN];int ... 阅读全文

posted @ 2013-10-03 11:08 仗剑奔走天涯 阅读(305) 评论(1) 推荐(0) 编辑

2013年10月2日

BZOJ1901 - Dynamic Rankings(树状数组套主席树)

摘要: 题目大意给定一个有N个数字的序列,然后又m个指令,指令种类只有两种,形式如下:Q l r k 要求你查询区间[l,r]第k小的数是哪个C i t 要求你把第i个数修改为t题解动态的区间第k小,如果还是按照静态的主席树做的话,每次修改需要对n个线段树进行修改,这样显然会TLE,所以我们需要用树状数组,这样每次只需要对logn颗线段树修改即可,修改的时间复杂度为logn^2,询问的时间复杂度为logn^2,空间复杂度为nlogn^2还有一种空间复杂度为nlogn+mlogn^2的方法,就是先建立n颗静态的主席树,空间复杂度为nlogn,然后再更新的时候用树状数组套线段树,这样空间复杂度为mlogn 阅读全文

posted @ 2013-10-02 16:45 仗剑奔走天涯 阅读(325) 评论(0) 推荐(0) 编辑

2013年10月1日

POJ2104&&HDU2665(静态区间第K小)

摘要: 题目大意 给定一个有N个数字的序列,然后又m个查询,形式如下: l r k 要求你返回区间[l,r]第k小的数是哪个 题解 终于弄懂主席树是个啥东西了,O(∩_∩)O~~,这题正是主席树的裸题,主席树具体是啥东西,可以去看CLJ的论文~~~~ 代码是学习haha593572013大神的~~~ 代码: #include #include #include #include using namespa... 阅读全文

posted @ 2013-10-01 14:10 仗剑奔走天涯 阅读(231) 评论(0) 推荐(0) 编辑

2013年9月28日

HDU4763 - Theme Section(KMP)

摘要: 题目描述 给定一个字符串S,要求你找到一个最长的子串,它既是S的前缀,也是S的后缀,并且在S的内部也出现过(非端点) 题解 CF原题不解释。。。。http://codeforces.com/problemset/problem/126/B KMP的失配函数fail[i]的值就是s[0..i]的最长前缀且是后缀的长度~~~,因此我们从S的末尾位置开始沿着失配函数跑即可,对于当前fail[i],判断前... 阅读全文

posted @ 2013-09-28 18:40 仗剑奔走天涯 阅读(1260) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 19 下一页

导航