-------- 专 题 --------
文章平均质量分 82
virgoDd
Good afternoon,good evening and good night
展开
-
UVa 147 Dollars(DP完全背包)
很水的完全背包题 大家都会的 只是要注意把小数化为整数 不然精度丢失很严重;#include#includeusing namespace std;long long d[30005];int val[12]={10000,5000,2000,1000,500,200,100,50,20,10,5},a;int main(){ double fm; d[原创 2014-08-21 09:42:53 · 581 阅读 · 0 评论 -
UVa 10066 Twin Towers (DP 最长公共子序列)
题意 求两串数字最长公共子序列的长度裸的lcs没啥说的#include #include #include using namespace std; const int maxn=105; int a[maxn],b[maxn],d[maxn][maxn],na,nb; void lcs() { memset(d,0,sizeof(d));原创 2014-08-22 15:50:08 · 1182 阅读 · 0 评论 -
POJ 3036 Honeycomb Walk(DP)
题意 求蜜蜂在蜂巢跑行n个格子回到原点的方法数把每个格子抽象成一个点 最多走14步 把初始位置O的坐标设为(15,15) 保围着O的6个点如下图所示 他们到O的距离都是1每个点周围都有这样的6个点 代表相邻的格子 这6个点到中间点的距离为1 令d[k][i][j]表示 从O点走k步到达(i,j)点的方法总数 那么很容易有转移方程 d[k][i][j]原创 2014-08-22 20:05:21 · 1489 阅读 · 0 评论 -
UVa 10130 SuperSale(DP 01背包)
题意 商畅做活动买东西 每个人每个商品只能拿一件 要拿价值尽量高的商品 很简单的01背包题目 求出每个人可以拿的最大值 加起来就是结果了原创 2014-08-22 23:14:43 · 778 阅读 · 0 评论 -
UVa 10285 Longest Run on a Snowboard(DP 二维最长递减子序列)
题意 输入一个城市的滑雪地图 你可以从高的地方滑到伤下左右低的地方 求这个城市的最长滑雪线路长度 即在一个矩阵中找出最长递减连续序列令d[i][j]为以格子map(i,j)为起点的最长序列 则有状态转移方程d[i][j]=max{d[a][b]}+1 a,b为与i,j相邻且值比i,j小的所有点#include #include #include using na原创 2014-08-23 10:06:31 · 844 阅读 · 0 评论 -
UVA 10131 Is Bigger Smarter? (DP,最长条件子序列)
题意:找出一个最长的序列,满足大象的体重增加时 智商是减小的也是基础的DP d[i]表示以第i个大象为起点的最长序列 当满足(w[i]>w[j])&&(s[i]原创 2014-08-22 09:28:26 · 967 阅读 · 0 评论 -
HDU 2602 Bone Collector(01背包经典)
很裸的01背包 大家都懂得原创 2014-08-22 09:52:21 · 590 阅读 · 0 评论 -
UVa 103 Stacking Boxes 堆砌盒子(DP 最长条件子序列)
题意 盒子a的n边都小于盒子b时 盒子a原创 2014-08-22 10:26:02 · 849 阅读 · 0 评论 -
POJ 2182 Lost Cows (树状数组,递推)
题意 N头牛排成一列 但编号顺序是乱的 知道每头牛前面有多少头牛编号在其之前 要求输出此时队列中每头牛的编号本题有两种做法 一是利用数据结构的树状数组 时间复杂度低但相对较复杂 也可以依次推出每头牛的编号 这里先介绍递推的 以后再介绍数据结构优化的从后往前递推 知道第i头牛在前i头牛里面的编号 即a[i]+1 然后加上a[i]+1之前已经被确定的编号个数(也就是被i后面的原创 2014-08-22 10:43:32 · 690 阅读 · 0 评论 -
UVa 10465 Homer Simpson(DP 完全背包)
题意 霍默辛普森吃汉堡 有两种汉堡 一中吃一个需要m分钟 另一种吃一个需要n分钟 他共有t分钟时间 要我们输出他在尽量用掉所有时间的前提下最多能吃多少个汉堡 如果时间无法用完 输出他吃的汉堡数和剩余喝酒的时间很明显的完全背包问题 求两次 一次对个数 一次对时间就行了 时间用不完的情况下就输出时间的d1为个数的 d2为时间的 dt保存时间原创 2014-08-23 09:52:12 · 993 阅读 · 0 评论 -
UVa 10192 Vacation (DP 最长公共子序列)
题意:假期你要出去旅游 你爸爸和你妈妈对你去的城市有不同的意见 为了不让他们中的任何一个不开心 你得选出同时符合两人的方案 也就是最长公共子序列 这个大白上有很详细的讲解 直接用增量法就些 注意输入数据有空格 不能用scanf读入;#include#include#include#define M 110using namespace st原创 2014-08-22 10:03:31 · 625 阅读 · 0 评论 -
POJ 1157 Little shop of flowers(DP,最优搭配)
题意很简单 你有f束花和v个花瓶 每束花放在不同的花瓶中都会有不同的价值 并且花的相对顺序不能改变 也就是说第i束花放在第j个花瓶中 那么第i+1朵花要放在j以后的花瓶中 设d[i][j]表示第i朵花放在第[j]个瓶子中前i朵花的最大价值 有状态转移方程 d[i][j]=max{d[i-1][1~j-1]}+val[i][j];题目有几个坑点 可能所有价值都为负数原创 2014-08-22 10:41:05 · 717 阅读 · 0 评论 -
UVa 624 CD (DP 01背包)
题意 你要把CD上的歌录到tape上,使得剩余磁带空间最小 很容易看出是01背包问题 输出路径也很容易 直接递归原创 2014-08-22 09:38:23 · 626 阅读 · 0 评论 -
UVa 437 The Tower of Babylon(DP 最长条件子序列)
题意 给你n种长方体 每种都有无穷个 当一个长方体的长和宽都小于另一个时 这个长方体可以放在另一个上面 要求输出这样累积起来的最大高度因为每个长方体都有3种放法 比较不好控制 可以把一个长宽高分成三个长方体 高度是固定的 这样就比较好控制了#include #include #include using namespace std;原创 2014-08-23 10:50:52 · 1079 阅读 · 0 评论 -
UVa 531 Compromise (DP 最长公共子序列)
还是最长公共子序列 只是现在是单词不是一个字母了 用字符串数组保存 还是一样的处理 注意结果的打印和输入的处理原创 2014-08-22 10:20:33 · 656 阅读 · 0 评论 -
UVa 348 Optimal Array Multiplication Sequence (DP 最优矩阵链乘)
题意 求给定数目矩阵的最优链乘 并输出路径矩阵链乘在小白P170有讲解 也是经典的动态规划 有了转移方程题目就好做了 设d[i][j]为矩阵i到矩阵j的最优链乘 初始状态d[i][i]=0 k为i,j之间的一个矩阵 x[i],y[i]分别表示第i个矩阵的行和列 则有d[i][j]=min{d[i][k]+d[k+1][j]+x[i]*y[k]*y[j]}感觉这题比较难的就是原创 2014-08-22 20:37:31 · 661 阅读 · 0 评论 -
HDU 1300 Pearls(DP 珠宝店进货问题)
题意 珠宝店到珍珠批发商进货 第i种价格为p[i]的珍珠需要n个 则珍珠的结算价格为∑(n+10)*p[i] 由于没种珍珠的数量结算时都要加上10 所以有时候把便宜的珍珠换为贵的结算价格反而变少了 给你一张购买清单 珍珠价格是递增的 每种珍珠都可以替换为比它贵的 求最少总花费和上篇博客描述的几乎是一样的 令d[i]表示前i种珍珠的最少花费 sum[i]表原创 2014-08-23 16:19:24 · 1006 阅读 · 0 评论 -
UVa 10404 Bachet's Game(DP)
题意 给你n个小石头 和一个数组a[m] 然后两个人轮流取石头 stan先取 olive后取 他们都完美发挥 谁取完最后一个石头谁就是赢家 感觉不是很容易看出来是dp题 令d[i]表示只有i个石子时谁赢 1表示stan赢 0表示olive赢 i-a[j]表示从i个石子一次取走a[j]个还剩下的 所以有 当(i-a[j]>0&&d[i-a[j]]=原创 2014-08-23 10:52:21 · 966 阅读 · 0 评论 -
POJ 3080 Blue Jeans(KMP 最长公共子串)
Blue JeansDescriptionThe Genographic Project is a research partnership between IBM and The National Geographic Society that is analyzing DNA from hundreds of thousands of contributors to map how原创 2014-09-02 09:50:59 · 718 阅读 · 0 评论 -
UVa 12657 Boxes in a Line(双向链表的应用)
Boxes in a LineYou have n boxes in a line on the table numbered 1 . . . n from left to right. Your task is to simulate 4kinds of commands:• 1 X Y : move box X to the left to Y (ignore this if X原创 2014-09-02 09:50:55 · 558 阅读 · 0 评论 -
POJ 3993 Not So Flat After All(质因数)
Not So Flat After AllDescriptionAny positive integer v can be written as p1a1*p2a2*...*pnan where pi is a prime number and ai ≥ 0. For example: 24 = 23*31. Pick any two prime numbers p1 and原创 2014-09-02 09:51:01 · 577 阅读 · 0 评论 -
HDU 1003 Max Sum(dp,最大连续子序列和)
Max SumProblem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6原创 2014-09-02 09:50:53 · 571 阅读 · 0 评论 -
UVa 679 Dropping Balls
Dropping Balls A number of K balls are dropped one by one from the root of a fully binary tree structure FBT. Each time the ball being dropped first visits a non-terminal node. It then k原创 2014-09-02 09:50:57 · 564 阅读 · 0 评论 -
UVa 620 Cellular Structure(DP)
题意 有A,B两种细胞 A细胞可由空生成 非空细胞链有两种增长方式 设O为原非空细胞链 则O可增长为OAB或BOA 给你一个细胞链 若其是合法分裂的 要求判断最后一次分裂是哪种方式 无法得到的输出MUTANT若给定的S是以AB结尾的 判断去掉AB的部分是否合法即可 若S是B开始A结束的 判断去掉首尾是否合法即可;原创 2014-08-23 13:47:17 · 1346 阅读 · 0 评论 -
UVa 11584 Partitioning by Palindromes(DP 最少对称串)
题意 判断一个串最少可以分解为多少个对称串 一个串从左往后和从右往左是一样的 这个串就称为对沉串令d[i]表示给定串的前i个字母至少可以分解为多少个对称串 那么对于j=1~i 若(i,j)是一个对称串 那么有 d[i]=min(d[i],d[j-1]+1) 然后就得到答案了#include#include#includeusing namespace std;原创 2014-08-25 15:07:18 · 1243 阅读 · 0 评论 -
UVa 10534 Wavio Sequence ( DP 二分 最长递增子序列 )
题意 求一个序列a某一位的最长递增序列(lis)和最长递减序列(lds)中最小值的最大值开始直接用DP写了 然后就超时了 后来看到别人说要用二分把时间复杂度优化到O(n*logn) 果然如此 用一个栈s保存长度为i的LIS的最小尾部s[i] top为栈顶即当前LIS的长度 初始s[1]=a[1] top=1 遍历整个序列 当a[i]>s[top]时 a[i]入栈原创 2014-08-25 15:18:17 · 743 阅读 · 0 评论 -
UVa 10069 Distinct Subsequences(大数 DP)
题意 求母串中子串出现的次数(长度不超过1后面100个0 显然要用大数了)令a为子串 b为母串 d[i][j]表示子串前i个字母在母串前j个字母中出现的次数 当a[i]==b[j]&&d[i-1][j-1]!=0时 d[i][j]=d[i-1][j-1]+d[i][j-1](a[i]==b[j]时 子串前i个字母在母串前j个字母中出现的次数 等于 子串前i-1个字母在母串前j原创 2014-08-25 09:48:31 · 938 阅读 · 0 评论 -
UVa 11400 Lighting System Design(DP 照明系统设计)
题意 设计某个地方的照明系统 一共需要n种不同类型的灯泡 接着输入 每种灯泡的电压v 对应电压电源的价格k 每个灯泡的价格c 需要这种灯泡的数量l 电压低的灯泡可以用电压高的灯泡替换 每种灯泡只需要一个对应的电源 求完成这个照明系统的最少花费比较简单的DP 容易知道 当要替换一种灯泡中的一个到令一种电压较高的灯泡时 只有全部替换这种灯泡为另一种时才可能使总花费变小原创 2014-08-23 16:03:26 · 1308 阅读 · 0 评论 -
UVa 10003 Cutting Sticks(DP 最优木棍切割)
题意 要把一根长为l的木棍切成n+1段 切割的位置分别为c[1],c[2],...,c[n] 每次切割的成本为当前切割的那一段的长度 如长度100的切成两段成本为100 求完成切割的最小成本和最优矩阵链乘那题很像 不用打印路径更简单了 在木棍上加两个点c[0]=0 c[n+1]=l d[i][j]表示把这段木棍的第i到j个点完成切割的最小成本 如果j=i+1原创 2014-08-25 21:29:38 · 1932 阅读 · 0 评论 -
UVa 10051 Tower of Cubes(DP 最长立体堆叠)
题意 给你n个立方体 立方体每面都涂有颜色 当一个立方体序号小于另一个立方体且这个立方体底面的颜色等于另一个立方体顶面的颜色 这个立方体就可以放在另一个立方体上面 求这些立方体堆起来的最大高度;每个立方体有6种放置方式 为了便于控制 个人喜欢将一个立方体分解为6个 这样每个立方体只用考虑顶面和底面 d[i]表示分解后以第i个立方体为基底可以达到的最大高度 j从1到原创 2014-08-26 08:39:25 · 884 阅读 · 0 评论 -
UVa 348 Optimal Array Multiplication Sequence (DP 最优矩阵链乘)
题意 求给定数目矩阵的最优链乘 并输出路径矩阵链乘在小白第二版 P277有讲解 也是经典的动态规划 有了转移方程题目就好做了 设d[i][j]为矩阵i到矩阵j的最优链乘 初始状态d[i][i]=0 k为i,j之间的一个矩阵 x[i],y[i]分别表示第i个矩阵的行和列 则有d[i][j]=min{d[i][k]+d[k+1][j]+x[i]*y[k]*y[j]}原创 2014-08-25 21:24:16 · 655 阅读 · 0 评论 -
UVa 10651 Pebble Solitaire (DP 卵石游戏 记忆化搜索)
题意 给你一个长度为12的字符串 由字符'-'和字符'o'组成 其中"-oo"和"oo-"分别可以通过一次转换变为"o--"和"--o" 可以发现每次转换o都少了一个 只需求出给你的字符串做多能转换多少次就行了令d[s]表示字符串s最多可以转换的次数 若s可以通过一次转换变为字符串t 有d[s]=max(d[s],d[t]+1)#include#incl原创 2014-08-26 09:43:30 · 840 阅读 · 0 评论 -
HDU 4883 TIANKENG’s restaurant(模拟)
题意 天坑开了个饭店 他知道所有客人的进来时间和出去的时间 求天坑至少准备多少张凳子以分钟为单位 直接模拟就行了 peo[i]代表第i分钟的人 第i组人第si分钟进来 第so分钟出去 那么j从si到so peo[j]都加上这组的人数 最后看第几分钟人最多就是答案了#include #include using namespace std原创 2014-08-27 10:37:07 · 901 阅读 · 0 评论 -
HDU 4882 ZCC Loves Codefires(贪心)
题意 有n个题目 完成第i个题目需要的时间为e[i] 第i个题目的系数为k[i] 你可以按任意顺序完成题目 比赛开始到完成第i个题目消耗的总时间为t[i] 那么完成第i个题目要扣掉k[i]*t[i]分 求完成所有题目至少扣多少分考虑任意相邻两题i,j 改变i,j时 i,j之前和之后所有的题目对结果都没有影响 只是i,j两题的扣分和由原来的(t+e[i])*原创 2014-08-27 10:27:40 · 1084 阅读 · 0 评论 -
UVa 156 Ananagrams(STL,map)
Ananagrams Most crossword puzzle fans are used to anagrams--groups of words with the same letters in different orders--for example OPTS, SPOT, STOP, POTS and POST. Some words however do原创 2014-09-02 09:50:32 · 517 阅读 · 0 评论 -
UVa 11988 Broken Keyboard(链表的应用)
Broken Keyboard (a.k.a. Beiju Text)You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem with the keyboard is that sometimes the "home" key or the "en原创 2014-09-02 09:50:48 · 506 阅读 · 0 评论 -
UVa 489 Hangman Judge(字符串)
Hangman Judge In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are t原创 2014-09-02 09:50:11 · 598 阅读 · 0 评论 -
POJ 2250 Compromise (DP,最长公共子序列)
CompromiseTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 6440Accepted: 2882Special JudgeDescriptionIn a few months the European Currency Union原创 2014-09-02 09:50:38 · 579 阅读 · 0 评论 -
POJ 3390 Print Words in Lines(DP)
Print Words in LinesTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 1624Accepted: 864DescriptionWe have a paragraph of text to print. A text is a s原创 2014-09-02 09:50:19 · 635 阅读 · 0 评论 -
Codeforce 22B Bargaining Table
B. Bargaining TableBob wants to put a new bargaining table in his office. To do so he measured the office room thoroughly and drew its plan: Bob's office room is a rectangular room n × m meter原创 2014-09-02 09:50:46 · 769 阅读 · 0 评论