04 2016 档案

ZOJ-3929 Deque and Balls (DP+找规律)
摘要:题目大意:n个数,每个数的大小都在1~n之间。操作n次,第 i 次将第 i 个数放到一个双端队列里面,放到队列两端的概率是相等的。问操作n次之后双端队列中元素满足xi>xi+1的对数的期望,输出的数据为:(期望*2^n)%mod。 题目分析:定义状态dp(i)表示操作 i 次之后的相应期望值。则状态 阅读全文

posted @ 2016-04-30 22:31 20143605 阅读(302) 评论(0) 推荐(0)

ZOJ-3933 Team Formation (二分图最佳完美匹配)
摘要:题目大意:n个人,分为两个阵营。现在要组成由若干支队伍,每支队伍由两个人组成并且这两个人必须来自不同的阵营。同时,每个人都有m个厌恶的对象,并且厌恶是相互的。相互厌恶的人不能组成一支队伍。问最多能组成多少支队伍,并在在队伍数最多的前提下求最多的女生数以及输出方案。 题目分析:很显然是个二分图。从阵营 阅读全文

posted @ 2016-04-30 20:43 20143605 阅读(343) 评论(0) 推荐(0)

hihoCoder#1015 : KMP算法 (KMP模板)
摘要:代码如下: 阅读全文

posted @ 2016-04-28 17:39 20143605 阅读(197) 评论(0) 推荐(0)

hihoCoder#1107 : Shortest Proper Prefix (前缀树)
摘要:题目大意:在n个单词中,如果以s作为前缀的单词个数不超过5个,那么称s为proper prefix。如果s为proper prefix并且s的任何一个前缀(不包括s)都不是proper prefix,那么称s为shortest proper prefix,找出词典中shortest proper p 阅读全文

posted @ 2016-04-28 17:00 20143605 阅读(353) 评论(0) 推荐(0)

hihoCoder#1014 Trie树 (前缀树)
摘要:题目大意:给一本有n个单词的词典,有m次询问,每次询问的是该词典中有多少个单词有共同的某个前缀。 题目分析:在添加单词建立trie的时候,每经过一个节点就意味着该节点和它的各级祖先节点是某个单词的前缀,这样就可以在建立trie的同时统计单词个数。 代码如下: 阅读全文

posted @ 2016-04-28 09:46 20143605 阅读(322) 评论(0) 推荐(0)

UVA-11235 Frequent values (RMQ)
摘要:题目大意:在一个长度为n的不降序列中,有m次询问,每次询问(i,j)表示在区间(i,j)中找出出现次数最多的元素的出现次数。 题目分析:因为序列有序,可以将序列分段,并且记录每段的元素个数、每一个元素所属的段num(i)、每一个元素所属段的左端点l(i)及右端点r(i)。那么对于每次询问: ans( 阅读全文

posted @ 2016-04-26 23:02 20143605 阅读(273) 评论(0) 推荐(0)

UVALive-4329 Ping pong (树状数组)
摘要:题目大意:有n个数排成一列,问从中能找出几个三元组(ai,aj,ak)满足i<j<k并且这三个数严格单调。 题目分析:枚举中间的数字aj,如果aj前面有c(j)个数a(j)小,后面有d(j)个数比a(j)小,那么aj为中间数时,共有c(j)*(n-j-d(j))+d(j)*(j-1-c(j))。定义 阅读全文

posted @ 2016-04-25 21:35 20143605 阅读(384) 评论(0) 推荐(0)

POJ-3140 Contestants Division (树)
摘要:题目大意:一棵树,带点权。将这棵树分成两部分,找出使得两部分的点权和的差最小。 题目分析:直接dfs即可。找出每棵子树u的点权和size(u),如果以u和它的父节点之间的边为界,那么两边的点权和分别为sum-size(u)和size(u)。 代码如下: 阅读全文

posted @ 2016-04-24 21:55 20143605 阅读(183) 评论(0) 推荐(0)

ZOJ-3946 Highway Project (最短路)
摘要:题目大意:一张带权无向图,权有两个参数(d,c),分别表示走过这条边的时间和建造这条边的代价。要求选出一些边,使得0节点到其他点的距离之和最短,并在最短的基础上求最小代价。 题目分析:这是16年浙江省赛的一道题。先求出0到所有点的最短路,然后找出所有可能在最短路径上的边,最后在每一个节点的入边之中都 阅读全文

posted @ 2016-04-24 09:53 20143605 阅读(983) 评论(0) 推荐(0)

POJ-3162 Walking Race (求树上两点之间最大距离)
摘要:题目大意:给一棵树,对于所有的点,找出距它最远点的距离,然后将这些距离排成一列,找出最长的一个区间满足:其中的最大值减去最小值不大于m。 题目分析:两次dfs找出距每个节点的最远距离,然后可以通过维护两个单调队列来找最长区间,也可以通过线段树区间合并来找,后者比较麻烦。 代码如下: 阅读全文

posted @ 2016-04-21 22:43 20143605 阅读(423) 评论(0) 推荐(0)

POJ-2152 Fire (树形DP)
摘要:题目大意:在一棵树中选出一些点,选每个点的代价为w(i),并且对于点 i ,在距离它lim(i)之内必须选一个点,使它作为 i 的依赖点。求最小代价。 题目分析:定义状态dp(u,k)表示使u为根节点的子树满足题意并且节点u依赖节点k产生的最小代价,定义best(u)表示子树u满足题意得最小代价。则 阅读全文

posted @ 2016-04-21 20:18 20143605 阅读(234) 评论(0) 推荐(0)

POJ-1655 Balancing Act
摘要:题目大意:一棵n个节点的树,找出最大子树最小的节点。 题目分析:过程类似求重心。 代码如下: 阅读全文

posted @ 2016-04-16 23:33 20143605 阅读(161) 评论(0) 推荐(0)

POJ-2378 Tree Cutting
摘要:题目大意:一棵n个节点的树,找出所有的点满足:删除它之后,产生的最大(这里节点数最多即为最大)新树中节点数不超n的一半。 题目分析:两次深搜,过程类似求重心。 代码如下: 阅读全文

posted @ 2016-04-16 23:08 20143605 阅读(203) 评论(0) 推荐(0)

ZOJ-3870 Team Formation
摘要:题目大意:给n个正数,找出满足A^B>max(A,B)的对数。 题目分析: 代码如下: 阅读全文

posted @ 2016-04-16 21:59 20143605 阅读(161) 评论(0) 推荐(0)

POJ-1741 Tree (树上点分治)
摘要:题目大意:一棵带边权无根树,边权代表距离,求距离小于等于k的点对儿数。 题目分析:这两个点之间的路径只有两种可能,要么经过根节点,要么在一棵子树内。定义depth(i)表示点 i 到根节点的距离,belong(i)表示 i 所属的子树。如果路径经过根节点,那么满足depth(i)+depth(j)< 阅读全文

posted @ 2016-04-14 23:44 20143605 阅读(214) 评论(0) 推荐(0)

POJ-3107 Godfather
摘要:题目大意:给一棵无根树,找出所有满足下面的条件的点:删除它后,最大子树中的个数最少。 题目分析:两次深搜,第一次找出子树中节点的个数,第二次维护最大子树。 ps:边用vector保存时会超时。。。 代码如下: 阅读全文

posted @ 2016-04-10 10:45 20143605 阅读(140) 评论(0) 推荐(0)

HDU-3586 Information Disturbing(树形DP+删边)
摘要:题目大意:一棵有n个节点的有根树,1为根节点,边带权,表示删掉这条边的代价。现在要删掉一些边,使叶子节点不能到达根节点。但是,每次删除的边的代价不能超过limit,删掉的边的总代价不能超过m,求最小的limit的可能取值。 题目分析:二分枚举limit,定义状态dp(u)表示将u与它管辖的叶子节点失 阅读全文

posted @ 2016-04-09 23:52 20143605 阅读(314) 评论(0) 推荐(0)

HDU-4276 The Ghost Blows Light (树形DP+背包)
摘要:题目大意:在一个n个节点的树形迷宫中,1为起点,n为出口。每个节点上有一定价值的珠宝,在节点之间移动的时间已知,问在能走出迷宫的前提下并且不超过m的时间内能收集的最多珠宝是多少? 题目分析:在树上,从1到n的路径唯一。从1到n的唯一路径叫做主线路,要想走到出口,一定会经过主线路,也就是必须经过主线路 阅读全文

posted @ 2016-04-09 17:02 20143605 阅读(323) 评论(0) 推荐(0)

POJ-2486 Apple Tree (树形DP)
摘要:题目大意:一棵点带权有根树,根节点为1。从根节点出发,走k步,求能收集的最大权值和。 题目分析:从一个点向其某棵子树出发有三种可能的情况: 1、停留在那棵子树上; 2、再回到这个点; 3、经过这个点走向了其他分支; 定义状态dp(u,k,0/1)表示在u节点为根的子树上走k步并且不回/回到u的最大权 阅读全文

posted @ 2016-04-04 12:53 20143605 阅读(524) 评论(2) 推荐(0)

HDU-4003 Find Metal Mineral (树形DP+分组背包)
摘要:题目大意:用m个机器人去遍历有n个节点的有根树,边权代表一个机器人通过这条边的代价,求最小代价。 题目分析:定义状态dp(root,k)表示最终遍历完成后以root为根节点的子树中有k个机器人时产生的总代价。则状态转移方程为: dp(root,k)=min(dp(root,k),dp(son,j)+ 阅读全文

posted @ 2016-04-04 09:07 20143605 阅读(348) 评论(0) 推荐(0)

POJ-1947 Rebuilding Roads (树形DP+分组背包)
摘要:题目大意:将一棵n个节点的有根树,删掉一些边变成恰有m个节点的新树。求最少需要去掉几条边。 题目分析:定义状态dp(root,k)表示在以root为根节点的子树中,删掉一些边变成恰有k个节点的新树需要删去的最少边数。对于根节点root的某个儿子son,要么将son及其所有的子节点全部删掉,则dp(r 阅读全文

posted @ 2016-04-02 23:36 20143605 阅读(1116) 评论(3) 推荐(0)

HDU-1011 Starship Troopers (树形DP+分组背包)
摘要:题目大意:给一棵有根带点权树,并且给出容量。求在不超过容量下的最大权值。前提是选完父节点才能选子节点。 题目分析:树上的分组背包。 ps:特判m为0时的情况。 代码如下: 阅读全文

posted @ 2016-04-02 21:32 20143605 阅读(138) 评论(0) 推荐(0)

POJ-1155 TELE (树形DP+分组背包)
摘要:题目大意:给一棵带边权的有根树,每个叶子节点有权。边权表示代价,叶子节点的权值代表可以补偿多少代价。问从根节点最多可以到达多少个叶子,使得付出的总代价不大于0。 题目分析:定义状态dp(u,k)表示从u开始到达k个叶子所花费的最小代价。则状态转移方程为: dp(u,k)=min(dp(u,k),dp 阅读全文

posted @ 2016-04-02 11:50 20143605 阅读(333) 评论(0) 推荐(0)