08 2015 档案

HDU 4035Maze(树状+概率dp,绝对经典)
摘要:题意:给你n个节点的树,从1节点开始走,到每个节点都有三种情况,被杀死回到1节点,找到隐藏的出口出去,沿着当前节点相邻的边走到下一个节点,给出每个节点三种情况发生的概率分别为ki,ei,1-ki-ei,求找到出口时已经过的边数的期望。分析:用树状dp考虑问题。当节点是叶子节点时它只是向父节点走,非叶... 阅读全文

posted @ 2015-08-20 22:47 积跬步、至千里 阅读(135) 评论(0) 推荐(0)

ZOJ 3329-One Person Game(概率dp,迭代处理环)
摘要:题意:三个色子有k1,2,k3个面每面标号(1-k1,1-k2,1-k3),一次抛三个色子,得正面向上的三个编号,若这三个标号和给定的三个编号a1,b1,c1对应则总和置零,否则总和加上三个色子标号和,直到总和不小于n时结束,求抛色子的期望次数。分析:该题状态好分析dp[i]表示和为i时的期望次数,... 阅读全文

posted @ 2015-08-18 17:40 积跬步、至千里 阅读(205) 评论(0) 推荐(0)

UVA 11600-Masud Rana(状压,概率dp)
摘要:题意:有n个节点的图,开始有一些边存在,现在每天任意选择两点连一条边(可能已经连过),求使整个图联通的期望天数。分析:由于开始图可以看做几个连通分量,想到了以前做的一个题,一个点代表一个集合(这里是连通分量)进行压缩dp[i][s]表示最后连接的第i个联通分量,联通状态是s时的期望天数,dp[0][... 阅读全文

posted @ 2015-08-18 15:41 积跬步、至千里 阅读(222) 评论(0) 推荐(0)

UVA 10529-Dumb Bones(概率dp)
摘要:题意:给出放一个多米诺骨牌,向左向右倒的概率,求要放好n个骨牌,需要放置的骨牌的期望次数。分析:用到区间dp的思想,如果一个位置的左面右面骨牌都已放好,考虑,放中间的情况,dp[i]表示放好前i个骨牌,要放的期望次数,枚举1-i,每个点做中间点求对应的期望,取最小值。dp[i]=min(L*dp[l... 阅读全文

posted @ 2015-08-18 11:24 积跬步、至千里 阅读(257) 评论(0) 推荐(0)

LightOJ 1038-Race to 1 Again(概率dp)
摘要:题意:给你一个数n每一步这个数可以变为他的因子,直到这个数变为1,求n变到1的期望步数。分析:dp[i],表示i变为1的期望步数,dp[1]=0,dp[n]是答案。dp[i]=sum(dp[j])/tmp+1;(j是i的因子,tmp是i因子的个数化简即可#include #include #incl... 阅读全文

posted @ 2015-08-18 11:14 积跬步、至千里 阅读(155) 评论(0) 推荐(0)

HDU 4336-Card Collector(状压,概率dp)
摘要:题意:有n种卡片,每包面里面,可能有一张卡片或没有,已知每种卡片在面里出现的概率,求获得n种卡片,需要吃面的包数的期望分析:n很小,用状压,以前做状压时做过这道题,但概率怎么推的不清楚,现在看来就是基本的概率dpdp[s]表示获得卡片种数情况是s时期望包数,dp[(1#include #includ... 阅读全文

posted @ 2015-08-18 11:07 积跬步、至千里 阅读(169) 评论(0) 推荐(0)

CodeForces 54C-First Digit Law(数位,概率dp)
摘要:题意:给你n个区间,在每个区间里各取一个数(随机取),求这n个数中超过K%的数是首位为1数的概率分析:dp[i][j]取前i个数,有j个是首位为1的数的概率易知,dp[i][j]=dp[i-1][j]*(1-p[i])+dp[i-1][j-1]*p[i];现在关键是求p[i],第i个区间首位为1的数... 阅读全文

posted @ 2015-08-17 22:45 积跬步、至千里 阅读(203) 评论(0) 推荐(0)

CodeForces 148D-Bag of mice(概率dp)
摘要:题意:袋子里有w个白球b个黑球,现在两个人轮流每次取一个球(不放回),先取到白球的获胜,当后手取走一个球时,袋子里的球会随机的漏掉一个,问先手获胜的概率。分析:dp[i][j]表示袋子中i个白球j个黑球,先手取获胜的概率。有四种情况先手取到白球,获胜概率1.0*i/(i+j);后手取到白球,先手输前... 阅读全文

posted @ 2015-08-17 22:29 积跬步、至千里 阅读(179) 评论(0) 推荐(0)

HDU 4405-Aeroplane chess(概率dp)
摘要:题意:n+1格飞行棋,编号0-n,从0格开始,每次扔一个色子,得到的点数就向前走几步,但有有些格子到达后可以直接飞到后面的格子,当到达>=n的地方结束,求结束扔色子的期望次数。分析:dp[i]表示i格到结束需要的期望次数,dp[n]-dp[n+5]是0,dp[0]即为所求,先处理直接飞的情况#inc... 阅读全文

posted @ 2015-08-17 22:06 积跬步、至千里 阅读(181) 评论(0) 推荐(0)

HDU 5001-Walk(概率dp)
摘要:题意:给你一个图,求在长度为d的所有路径,不经过每个结点的概率分析:枚举每个结点,正推求概率#include #include #include #include #include #include #include #include #include #include #include #incl... 阅读全文

posted @ 2015-08-17 21:52 积跬步、至千里 阅读(200) 评论(0) 推荐(0)

POJ 2096-Collecting Bugs(概率dp入门)
摘要:题意:有n种bug和s种系统bug,每天发现一种bug(可能已经发现过了)所有种bug被发现的概率相同,求所有bug被发现的期望天数。分析:dp[i][j]发现i种bug,j种系统bug期望天数,dp[n][s]=0;dp[0][0]即为所求dp[i][j] = (n-i)*(s-j)/n/s*dp... 阅读全文

posted @ 2015-08-17 21:40 积跬步、至千里 阅读(144) 评论(0) 推荐(0)

HDU 3853-loop(概率dp入门)
摘要:题意:r*c个方格,从(1,1)开始在每个方格可释放魔法(消耗能量2)以知,释放魔法后可能在原地、可能到达相邻的下面格子或右面格子,给出三者的概率求要到达(R,C)格子,要消耗能量的期望值。分析:状态好确定,dp[i][j]表示(i,j)到达(r,c)还需要的能量值,则dp[r][c]=0,dp[1... 阅读全文

posted @ 2015-08-17 21:20 积跬步、至千里 阅读(204) 评论(0) 推荐(0)

HDU 4638-Group(线段树+离线处理)
摘要:题意:给n个编号,m个查询每个查询l,r,求下标区间[l,r]中能分成标号连续的组数(一组内的标号是连续的)分析:我们认为初始,每个标号为一个组(线段树维护区间组数),从左向右扫序列,当前标号,要考虑和他相邻的标号的位置,若前面位置出现了和它相邻的标号,则前面位置组数减一(因为可以合并成一组),查询... 阅读全文

posted @ 2015-08-16 21:06 积跬步、至千里 阅读(200) 评论(0) 推荐(0)

HDU 4630-No Pain No Game(线段树+离线处理)
摘要:题意:给你n个数的序列a,q个询问,每个询问给l,r,求在下标i在[l,r]的区间任意两个数的最大公约数中的最大值分析:有了hdu3333经验,我们从左向右扫序列,如果当前数的约数在前面出现过,那这个约数可能就是最大的答案。所以我们枚举当前数的所有约数,用线段树维护区间最大值,查询序列离线处理保证查... 阅读全文

posted @ 2015-08-16 20:48 积跬步、至千里 阅读(348) 评论(0) 推荐(0)

HDU 3333-Turing Tree(BIT好题)
摘要:题意:给你n个数的序列a,q个询问,每个询问给l,r,求在下标i在[l,r]的区间内不含重复数的和分析:这类题目觉得很好,很练思维,觉得不太好做。用BIT维护和,我们可以从前向后扫一遍序列,当前数在前面已经出现过了,前一个该数的位置上就要减去这个数才保证正确(不重复),但查询区间是随机的,肯定相互影... 阅读全文

posted @ 2015-08-16 20:32 积跬步、至千里 阅读(132) 评论(0) 推荐(0)

POJ 3321- Apple Tree(标号+BIT)
摘要:题意:给你一棵树,初始各节点有一个苹果,给出两种操作,Cx 表示若x节点有苹果拿掉,无苹果就长一个。Qx查询以x为根的子树中有多少个苹果。分析:开始这个题无从下手,祖先由孩子的标号不能确定,就想能不能重新编号,对与一棵树我们以先根序进行编号这就保证了一个子树在一个连续的区间内,然后就是BIT了。#i... 阅读全文

posted @ 2015-08-16 20:13 积跬步、至千里 阅读(138) 评论(0) 推荐(0)

HDU 2227-Find the nondecreasing subsequences(dp+BIT优化)
摘要:题意:给你一个序列a[],求它的不降子序列的个数分析:dp[i]表示以i结尾不降子序列的个数,dp[i]=sum(dp[j])+1(j#include #include #include #include #include #include #include #include #include #i... 阅读全文

posted @ 2015-08-16 19:57 积跬步、至千里 阅读(146) 评论(0) 推荐(0)

HDU 1025-Constructing Roads In JGShining's Kingdom(最长不降子序列,线段树优化)
摘要:分析:最长不降子序列,n很大o(n^2)肯定超,想到了小明序列那个题用线段树维护前面的最大值即可该题也可用二分搜索来做。注意问题输出时的坑,路复数后加s#include #include #include #include #include #include #include #include #i... 阅读全文

posted @ 2015-08-16 17:42 积跬步、至千里 阅读(150) 评论(0) 推荐(0)

HDU 3584-Cube(三维BIT)
摘要:题意:给你三维空间两种操作,给出两顶点坐标,把它们确定范围(长方体)内的数全部取反、查询给定点的值。初始全部为零分析:有了前面的知识,用BIT实现区间更新单点查询,再用多维实现即可#include #include #include #include #include #include #inclu... 阅读全文

posted @ 2015-08-16 17:34 积跬步、至千里 阅读(166) 评论(0) 推荐(0)

POJ 1195- Mobile phones(二维BIT)
摘要:题意:矩阵上的单点更新,范围求和#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include... 阅读全文

posted @ 2015-08-16 17:26 积跬步、至千里 阅读(246) 评论(0) 推荐(0)

HDU 1892-See you(二维BIT)
摘要:题意:最多1000*1000的方格,各方格开始有一本书有四种操作:对指定方格把书拿走或向里面放书,从一个方格那一定量的书放到另一个方格,查询给定对角线顶点的坐标的矩形范围内包含的书的总数分析:二维BIT,注意方格的书数小于拿书数量的情况#include #include #include #incl... 阅读全文

posted @ 2015-08-16 17:24 积跬步、至千里 阅读(321) 评论(0) 推荐(0)

HDU 4267-A Simple Problem with Integers(多个BIT)
摘要:题意:2种操作1 a b k c 在区间[a,b]中的(i-a)%k==0的位置i上的数+c2 a 查询位置a的值输出每次查询的值分析:开始想到多维的线段树,但比较麻烦,看了题解才知道,用BIT实现区间更新,单点查询,若在区间[a,b]上的数加c就在a位置加c ,b+1位置加-c 这样在查询时sum... 阅读全文

posted @ 2015-08-16 17:14 积跬步、至千里 阅读(151) 评论(0) 推荐(0)

HDU 4325-Flowers(线段树+离散化)
摘要:题意:给出每个花开花的时间段,每询问一个时间点输出该时间点开花的数量分析:线段树的区间更新,单点查询,但发现时间很大,没法存区间,就想到了离散化。离散化就是把要处理的数据统一起来重新标号。#include #include #include #include #include #include #i... 阅读全文

posted @ 2015-08-16 16:55 积跬步、至千里 阅读(108) 评论(0) 推荐(0)

HDU 2222 (AC自动机模板题)
摘要:题意:给一个文本串和多个模式串,求文本串中一共出现多少次模式串分析:ac自动机模板,关键是失配函数#include #include #include #include #include #include #include #include #include #include #include #i... 阅读全文

posted @ 2015-08-16 16:43 积跬步、至千里 阅读(161) 评论(0) 推荐(0)

Period(KMP,循环节问题)
摘要:题意:求给你个串,前i位子串由某个字符串重复k次得到,求所有的i和k分析:i-next[i]恰好是一个循环节#include #include #include #include #include #include #include #include #include #include #inclu... 阅读全文

posted @ 2015-08-16 16:37 积跬步、至千里 阅读(219) 评论(0) 推荐(0)

Number Sequence(KMP,判断子串 模板)
摘要:题意:给两数组,求一个是否是另一个的子数组,若是返回匹配的首位置分析:KMP 入门//扫描字符串A,并更新可以匹配到B的什么位置。#include #include #include #include #include #include #include #include #include #inc... 阅读全文

posted @ 2015-08-16 16:32 积跬步、至千里 阅读(215) 评论(0) 推荐(0)

UVA 12532-Interval Product(BIT)
摘要:题意:给n个数字的序列,C v p 把v位上的数字置成p , S l r代表求区间[l,r]各数字相乘得数的符号,对于每个S输出所得符号(’+‘,’-‘,’0‘)分析:开两个数组表示区间负数的个数、0的个数、当数字被改时,更新数组、查询时区间含0符号是0,再根据负数的个数的奇偶判断。#include... 阅读全文

posted @ 2015-08-10 20:14 积跬步、至千里 阅读(156) 评论(0) 推荐(0)

UVA 12436-Rip Van Winkle's Code(线段树的区间更新)
摘要:题意:long long data[250001];void A( int st, int nd ) { for( int i = st; i \le nd; i++ ) data[i] = data[i] + (i - st + 1); }void B( int st, int nd ) { fo... 阅读全文

posted @ 2015-08-10 20:03 积跬步、至千里 阅读(162) 评论(0) 推荐(0)

HDU 4614-Vases and Flowers(线段树区间更新)
摘要:题意:n个花瓶(0-n-1) 现有两个操作,操作1 给a,f 从a位置开始向后连续插f个花(一个花瓶插一个)若当前花瓶有花则向后找,直到n-1位置如果还有多余的花则丢掉求查完花的第一和最后一个位置。操作2 L,R 清空[l,r]花瓶内的花,并输出花的数量。分析:本题关键是用二分求插花的首末的位置,其... 阅读全文

posted @ 2015-08-09 22:57 积跬步、至千里 阅读(136) 评论(0) 推荐(0)

FZU 2105-Digits Count(线段树延时标记)
摘要:题意:每次操作区间每个数进行一种(&或|、或^ )给定的一个数,到sum时统计给定区间的和。分析:这个题让我觉得我的思维很不活跃,对懒惰标记理解,还远远不够,通过这道题我对懒惰标记加深了不少。经过各种操作和区间会变成相同数都相邻的情况,若在操作会变成另一个相同数。选区间内相同数字为懒惰标记进行更新。... 阅读全文

posted @ 2015-08-09 22:44 积跬步、至千里 阅读(235) 评论(0) 推荐(0)

ZOJ 3299-Fall the Brick(线段树+离散化)
摘要:题意:n个区间 ,给出区间的左右坐标 ,区间内填满宽度为1的箱子,有m个板子给出板子的高度和左右坐标(同高度不重叠)所有箱子从上向下落,求每块板子能接到的箱子数。分析:首先给的区间很大,一开始直接存ME了,所以要先把给定的区间离散化 箱子的宽度是1则使维护区间左闭右开,才能得正确的数量。#inclu... 阅读全文

posted @ 2015-08-09 22:32 积跬步、至千里 阅读(246) 评论(0) 推荐(0)

HDU 4521-小明序列(线段树好题)
摘要:题意:n个数字的序列,求各数位置间隔大于d的最长上升子序列分析:最基本的dp但是数据量大O(n^2)肯定超时 前dp[i]为的最长上升子序列是由前dp[1]---dp[i-d-1]符合条件的最大值得到,我们可以用线段树维护dp[1]---dp[i-d-1]的最大值#include #include ... 阅读全文

posted @ 2015-08-09 22:16 积跬步、至千里 阅读(141) 评论(0) 推荐(0)

POJ 2481-Cows(BIT)
摘要:题意:n个牛,每个牛对应一个区间,对于每个牛求n个区间有几个包含该牛的区间。分析:先 区间右边界从大到小排序,相同时左边界小到大,统计第i头牛即左边界在前i-1头左边界的正序数。#include #include #include #include #include #include #includ... 阅读全文

posted @ 2015-08-09 21:53 积跬步、至千里 阅读(127) 评论(0) 推荐(0)

POJ 2828-Buy Tickets(线段树)
摘要:题意:有n个人,每人有一定的价值,给n个安排,每次安排有两个数 p,v p是这个人前面人的个数 (直接插在第p个人后面其他人后移),v是它的价值,n个安排后 求最终的价值序列。分析:越在后面的安排越是他的最终位置,所有我们要从后向前做,每次找前面有p个空位的位置,找到后空位减一,用线段树来维护区间的... 阅读全文

posted @ 2015-08-09 21:41 积跬步、至千里 阅读(191) 评论(0) 推荐(0)

HDU 1394-Minimum Inversion Number(BIT)
摘要:题意:给你n个数字的序列 每次把第一个数字放到最后 得到一个新序列 一共有n个序列求这些序列中哪个序列含最小的总的逆序数 (输出最小总逆序数)分析:用BIT求出初始各数的逆序数,第一个数放最后它逆序数变正序,正序变逆序。#include #include #include #include #inc... 阅读全文

posted @ 2015-08-09 21:21 积跬步、至千里 阅读(165) 评论(0) 推荐(0)

uva11992-Fast Matrix Operations(区间增值、改值)
摘要:题意:r行c列的全0矩阵 有三种操作 1 x1 y1 x2 y2 v子矩阵(x1,y1,x2,y2)所有元素增加v 2x1 y1 x2 y2 v子矩阵(x1,y1,x2,y2)所有元素设为v 3x1 y1 x2 y2 查询子矩阵元素的和、最小值、... 阅读全文

posted @ 2015-08-09 21:05 积跬步、至千里 阅读(491) 评论(0) 推荐(0)

LA3942-Remember the Word(Trie)
摘要:题意:有s个不同的单词,给出一个长字符串把这个字符串分解成若干个单词的连接(可重复使用),有多少种分解方法分析:dp[i]表示i开始的字符串能分解的方法数 dp[i]=sum(dp[i+len(x)]);单词x是i开始的字符串的前缀。#include #include #include #inclu... 阅读全文

posted @ 2015-08-09 17:48 积跬步、至千里 阅读(179) 评论(0) 推荐(0)

Uva11732(trie)
摘要:题意:给你n个字符串 用strcmp()两两比较 ,求字符比较的总次数分析:数据量很大我们考虑用孩子兄弟表示法来表示字典树#include #include #include #include using namespace std;typedef long long ll;const int N ... 阅读全文

posted @ 2015-08-09 17:32 积跬步、至千里 阅读(168) 评论(0) 推荐(0)

HDU 1251-统计难题(Trie)
摘要:题意:给一组单词 开始提问每次给一个串求该串是上面几个单词的前缀分析:没给数据规模,但用链表写ME好几次,又用数组写开小RE了,试了几次才过了,真是醉了。。。#include #include #include #include #include #include #include #include... 阅读全文

posted @ 2015-08-09 17:04 积跬步、至千里 阅读(146) 评论(0) 推荐(0)

HDU 1075-What Are You Talking About(Trie)
摘要:题意:给你一个字典 一个英文单词对应一个火星单词 给你一段火星文翻译成英文 字典上的没有的不翻译分析:没有给数据规模 字典树用链表#include #include #include #include #include #include #include #include #include #inc... 阅读全文

posted @ 2015-08-09 16:57 积跬步、至千里 阅读(154) 评论(0) 推荐(0)

UVA 11488-Hyper Prefix Sets(Trie)
摘要:题意:给一个01串的集合,一个集合的幸运值是串的个数*集合中串的最大公共前缀 ,求所有子集中最大幸运值分析:val[N]表示经过每个节点串的个数求幸运值 求就是每个节点值*该节点的深度 搜一遍树求出最大值#include #include #include #include #include #in... 阅读全文

posted @ 2015-08-09 16:50 积跬步、至千里 阅读(151) 评论(0) 推荐(0)

HDU 4825-Xor Sum(trie)
摘要:题意:给你一组数,开始询问给一个数 求组中与该数异或值最大的数。分析:根据异或的特点 要想得到的异或值最大 尽可能的让两个数的每位都相反 先把给定的一组数建树,数的最后一位对应的节点保存这个数的位置(放便取) 对于每个询问 在搜树时优先考虑和当前数位相反的节点。#include #include #... 阅读全文

posted @ 2015-08-09 16:33 积跬步、至千里 阅读(627) 评论(0) 推荐(0)

POJ 3630- Phone List(Trie)
摘要:题意:给一组串,是否存在一个串是另一个的前缀。分析:val[N]保存树节点上是否组成一个串#include #include #include #include #include #include #include #include #include #include #include #inclu... 阅读全文

posted @ 2015-08-09 16:14 积跬步、至千里 阅读(130) 评论(0) 推荐(0)

POJ 2001-Shortest Prefixes(Trie 入门)
摘要:题意:给你一组串,求每个串在组中唯一标志的最短前缀分析:保存树上经过各节点的单词个数,扫描每个串当经过节点单词个数是一(能唯一标志)结束#include #include #include #include #include #include #include #include #include #... 阅读全文

posted @ 2015-08-09 15:37 积跬步、至千里 阅读(225) 评论(0) 推荐(0)

poj2686-Traveling by Stagecoach(状压dp)
摘要:题意:n张马票,m个城市,马票上有马数(决定速度),一张只能用一次,给出地图,求从城市a到b的最短时间。分析:n值很小状态压缩#include #include #include #include #include #include #include #include #include #inclu... 阅读全文

posted @ 2015-08-03 15:23 积跬步、至千里 阅读(248) 评论(0) 推荐(0)

POJ 3140-Contestants Division(树形dp)
摘要:题意:n给节点的树,分成两个联通分支,使它们大小的绝对值最小,求这个最小值。分析:分成两个联通分支,即删除一条边,开始看到m(边数)和n(点数)没什么关系,但题目说的是一棵树,则m==n-1,求出所有的可能的差,取最小值即可#include #include #include #include #i... 阅读全文

posted @ 2015-08-03 15:02 积跬步、至千里 阅读(210) 评论(0) 推荐(0)

POJ 1655-Balancing Act(树形dp)
摘要:题意:求n个节点的树中哪个节点删除以后得到的最大连通分量最小。分析:同上题#include #include #include #include #include #include #include #include #include #include #include #include #incl... 阅读全文

posted @ 2015-08-03 14:51 积跬步、至千里 阅读(165) 评论(0) 推荐(0)

POJ 2378-Tree Cutting(树形dp)
摘要:题意:n个节点的树,删除一个点,得到的最大联通分支大小不大于总节点数的一半,求这样点的集合分析:和上题一样#include #include #include #include #include #include #include #include #include #include #includ... 阅读全文

posted @ 2015-08-03 14:46 积跬步、至千里 阅读(207) 评论(0) 推荐(0)

POJ 3107-Godfather(树形dp)
摘要:题意:有n个节点的树,删除一个点,得到的最大联通分支最小,求这样点的集合分析:dp[i]表示删除i所得最大联通分支,遍历一遍节点即可,该题用vector会超时#include #include #include #include #include #include #include #include... 阅读全文

posted @ 2015-08-03 14:41 积跬步、至千里 阅读(278) 评论(0) 推荐(0)

HDU 3586-Information Disturbing(树形dp)
摘要:题意:n个节点的通信连接树,切断每个边有一定的花费,要你切断边,在总花费不超过m的前提,使所有的其他节点都不能和节点1(根)连通,切边时有花费上限,让你最小化这个上限。分析:最小化最大值,想到二分,二分上限求符合条件的总花费和m比较。#include #include #include #inclu... 阅读全文

posted @ 2015-08-03 11:55 积跬步、至千里 阅读(195) 评论(0) 推荐(0)

HDU 4276-The Ghost Blows Light(树状背包)
摘要:题意:n个房间,每个有一定的钱,一个房间到另一个房间花费一定的时间,给你房间连接树,求在t时间内到达房间m能得到的最大钱数(从房间1(根)出发)分析:该题关键是最后要到达m,没有这个条件,就是基础的树形背包,哎,一开始没思路,放了一段时间,看看题解才明白,该题突破口,就是,你先想怎么判断不能到到达m... 阅读全文

posted @ 2015-08-03 11:36 积跬步、至千里 阅读(138) 评论(0) 推荐(0)

POJ 3345-Bribing FIPA(树状背包)
摘要:题意:有n个国家投票,要得到一个国家的投票有一定的花费,如果给到一个国家的票同时也得到了它所有附属国的票,给出国家关系树,求至少得到m票的最小花费。分析:基础树状背包,dp[i][j],以i为根的子树得j票的最小花费,该题输入有点恶心。#include #include #include #incl... 阅读全文

posted @ 2015-08-03 11:11 积跬步、至千里 阅读(142) 评论(0) 推荐(0)

POJ 2486-Apple Tree(树状背包)
摘要:题意n个节点的树,每个节点都有价值,求在树上最多走k步获得的最大价值(从1开始走,节点的价值只能获取一次)分析:开始以为是最基础的树形背包,但后来发现,不能只走子树,有可能还回到根节点,dp[i][j][0]走子树后用回到根,dp[i][j][1],不用回到根#include #include #i... 阅读全文

posted @ 2015-08-03 10:48 积跬步、至千里 阅读(136) 评论(0) 推荐(0)

HDU 4003-Find Metal Mineral(树状背包)
摘要:题意:n个节点的树给出每个边的权值,有k个机器人,求由机器人走完所有节点的最小花费(所有机器人开始在根节点)分析:仔细看了几遍例题后,发现这个题的状态很巧妙,先从整体考虑,一个机器人走完所有边回到根,是所有边权值和的2倍,对于k个机器人,有的就不用回根,dp[i][j],以i为根的子树,用机器人数j... 阅读全文

posted @ 2015-08-03 10:27 积跬步、至千里 阅读(191) 评论(0) 推荐(0)

HDU 1561-The more, The Better(树状背包)
摘要:题意:n个城堡,每个有一定的财富,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡,求应攻克哪m个城堡,获得最大财富。分析:dp[i][j],以i为根的子树,攻克j个城堡,获得的最大财富,把0看做树的根节点#include #include #include #include #i... 阅读全文

posted @ 2015-08-03 09:59 积跬步、至千里 阅读(177) 评论(0) 推荐(0)

POJ 1947-Rebuilding Roads(树形背包)
摘要:题意:一个树求得到一个节点数为p的子树,最小需要删除的边数。分析:父节点到儿子这条边,删或不删,背包问题。#include #include #include #include #include #include #include #include #include #include #includ... 阅读全文

posted @ 2015-08-03 09:37 积跬步、至千里 阅读(150) 评论(0) 推荐(0)

HDU 1011-Starship Troopers(树形背包)
摘要:题意:有n个洞,连接像一棵树,每个包含一定数量的怪和价值,给你m个士兵,每个士兵能打20个怪,杀完一个洞的怪可得该洞的价值才可继续打相连的下面的洞(每个士兵只能打一个洞),求获得的最大价值。分析:把士兵数看做容量,就是背包问题,dp[i][j]以i为根节点子树士兵数j时获得的最大价值(根节点有一定的... 阅读全文

posted @ 2015-08-03 09:25 积跬步、至千里 阅读(134) 评论(0) 推荐(0)

POJ 1155-TELE(树形背包)
摘要:题意:电视台发送信号给很多用户,每个用户(叶子节点)有愿意出的钱,电视台经过的路线都有一定费用,求电视台不损失的情况下最多给多少用户发送信号。分析:问题与以i为根节点的子树所包含的叶子数#include #include #include #include #include #include #in... 阅读全文

posted @ 2015-08-03 09:05 积跬步、至千里 阅读(264) 评论(0) 推荐(0)

CodeForces 219D-Choosing Capital for Treeland(树形dp)
摘要:题意:给你一个有向树,求以每个节点为根,可到达其他任何一个节点需要反向的边数。分析:数据规模大,若一个节点一个节点的算,必超时,有了上一道题的积累,这个题的状态就好想了,当前节点需要的翻边的数量,由子树得的加上由父节点过来的数量。两次dfs#include #include #include #in... 阅读全文

posted @ 2015-08-03 07:45 积跬步、至千里 阅读(176) 评论(0) 推荐(0)

HDU 2196-Computer(树形dp)
摘要:题意:给出电脑网络连接树,求每个节点的为起点的最长距离分析:这道题开始状态想不出来,放了一段时间,后来注意到例题上有这道题,每个节点的最长距离可由父节点的最长距离,次长距离,和子节点的最长距离(三者取最大)决定。先用一个dfs求出各节点由各子树确定的最长距离,次长距离,再用一个dfs由父节点推各子节... 阅读全文

posted @ 2015-08-02 22:32 积跬步、至千里 阅读(261) 评论(0) 推荐(0)

HDU 1520-Anniversary party(树形dp入门)
摘要:题意:n个人参加party,已知每人的欢乐值,给出n个人的工作关系树,一个人和他的顶头上司不能同时参加,party达到的最大欢乐值。分析:dp[i][f],以i为根的子树,f=0,i不参加,f=1,i参加能达到的最大欢乐值。i参加i的孩子不能参加,i不参加,其孩子参不惨加都行(取最大值)。#incl... 阅读全文

posted @ 2015-08-02 21:49 积跬步、至千里 阅读(132) 评论(0) 推荐(0)

导航