
ACM_POJ
文章平均质量分 75
dilemma729
这个作者很懒,什么都没留下…
展开
-
POJ 2229-Sumsets(DP)
题目大意:只用2的次方数(1,2,4,8…)组成N(1此题直接用完全背包会超时。用d[i]表示组成i有多少种方法,考虑组成中是否有1,有两种情况,至少有1个1,那么此时剩下的i-1随意组合,或者没有1,那么只能由2,4,8…组成,此时将它们除以2便得到1,2,4,8…,即组成i/2时的方案数。状态转移方程:d[i]=d[i-1]+d[i/2](i%2==0)d[i]原创 2015-02-24 19:43:01 · 435 阅读 · 0 评论 -
POJ 1189-钉子和小球(DP)
第i层有2*i+1种可能的位置(从第1个空位到最后一个空位总共i+1个和i个钉子位置),用d[i][j]表示第i行在第j个位置掉落的概率的分子(分母是2^i)。如果位置是空位,那么有3种情况:(1).从上一个同样的位置掉落下来,(2).掉落到左边的钉子(如果有)并向右走,(3).掉落到右边的钉子(如果有)并向左走。如果位置是有钉子的,有2种情况:(1).这个原创 2015-02-25 23:35:17 · 860 阅读 · 0 评论 -
POJ 1990-MooFest(树状数组)
题目大意:有N(1要求所有的声音和,那么每次对话只基于一头牛求就可以,可以基于听力值大的那头牛,首先对所有牛排序,根据听力值的大小。排序之后,每头牛只用求和在它前面的牛对话发出的声音,所有这样的声音加起来就是答案所求。用两个树状数组来完成这个操作。对于每头牛,关于它的和分两部分求,第一部分是位置小于它的,第二部分是位置大于它的。第一个树状数组来存每头牛的位置,第二个树状数组原创 2015-02-24 18:00:19 · 480 阅读 · 0 评论 -
POJ 1187-陨石的秘密(DP)
用d[i][j][u][v]表示i个{},j个[],u个(),深度为v的序列数,根据最后一个子括号(就是最后一个反括号对应的正括号范围内的括号)分类计数。最后一个子括号可能深度小于v,此时前面的括号深度必须为v,最后一个子括号深度也可能等于v,此时前面的括号深度可以小于或等于v。用sum[i][j][u][v]表示i个{},j个[],u个(),深度小于等于v的序列数。没递推完i,j原创 2015-02-25 23:28:09 · 1032 阅读 · 0 评论 -
POJ 1440-Varacious Steve(DP)
题目大意:Steve和Digit轮流取甜甜圈,有n个,每次不能取超过m个(1用d[i][j][u][0]表示目前总共有i个甜甜圈,其中j个还未被取,u个在Steve处,且下一步到Steve走时,Steve能吃到的最多的甜甜圈,用d[i][j][u][1]表示目前总共有i个,j个未取,u个在Steve处,且下一步到Digit走时,Digit能吃到的最多的甜甜圈。状态转移方程:原创 2015-02-25 23:55:28 · 1349 阅读 · 0 评论 -
POJ 4052-Hrinity(KMP算法+AC自动机)
题目大意:给出一系列模式串,可能是以压缩形式给出的,并给出文本串,求问模式串总共出现了多少次,如果同一个模式串出现多次,只算一次,如果模式串A和B出现了,模式串B是A的子串,那么B不算。首先对字符串解压,然后对解压之后的模式串存入AC自动机中,接着算出哪些匹配,对于那些匹配的,我是KMP算法判断是否有子串的关系。#include#include#include#def原创 2015-02-24 18:46:04 · 456 阅读 · 0 评论 -
POJ 1297-Supermarket(DP)
题目大意:有M(1用d[i][j]表示当前买了列表的前i个物品并且走完了街道的前j个摊子的最小花费,那么分两种情况,如果第j个摊子卖的和在列表上第i个商品相同,那么可能从d[i-1][j-1]推来或d[i][j-1],即第j个摊子买或不买,若第j个摊子卖的不是列表上的第i个商品,那么就直接由d[i][j-1]推来。程序中用滚动数组从而在空间上压缩了一维状态。状态转移方程原创 2015-02-27 01:07:07 · 670 阅读 · 0 评论 -
POJ 3411-Paid Roads(状态压缩+dijkstra算法+floyd-warshall算法)
题目大意:给出一张有向图,求点1到点N的最短路,不同的是,对于每一条边,除了源点目标点和花费以外,还有额外点c,若走这条边之前到达过c点,花费会减少到另一个值P。如果最短路不存在,输出impossible。先用floyd-warshall算法判断连通性,此时忽略额外的c和P。然后用dijkstra算法,用d[i][S]表示在点i且经过了S集合的点的最短路,将每一个d[i][S]都看原创 2015-03-01 23:10:23 · 666 阅读 · 0 评论 -
POJ 3268-Silver Cow Party(dijkstra算法)
题目大意:给出一个单向带权图和一个点s,求点u,u到s的最短路径和s到u的最短路径之和最大。先求一次dijkstra,然后把所有的边反向,权值不变,再求一次dijkstra,将两者加起来求最大的值就是所求的答案。#include#include#include#includeusing namespace std;const int maxn=1010;cons原创 2015-03-01 23:03:27 · 847 阅读 · 0 评论