
动态规划
发神经的猫
一只啥都不会的笨猫
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
codeforces 538B
简单的水题硬是给我弄复杂了。。。简单贪心解法在这里http://www.cnblogs.com/qscqesze/p/4458883.html先把所有01组合列出来,然后动规解决的OTZ#define _CRT_SECURE_NO_DEPRECATE#include#include#include#include#include#include#include#incl原创 2015-04-27 12:11:31 · 626 阅读 · 0 评论 -
POJ 2411 状态压缩DP
原博地址:http://blog.youkuaiyun.com/xingyeyongheng/article/details/21692655分析:用1*2的砖去恰好铺满n*m的空间,对于第k行第j列,有3种情况将该点铺满1:由第k-1行第j列砖竖着铺将第k行第j列铺满2:由第k行第j列被横铺砖铺满3:第k行第j列砖竖着铺将该点铺满所以对于每一列的情况其实有两种(1,0)表示该点铺砖还是不转载 2015-05-19 13:55:07 · 461 阅读 · 0 评论 -
POJ 1050
题意:出一个矩阵(100×100)求一个子矩阵,使得子矩阵中各个元素的和最大。思路:一维数组最大连续字段和的变形,具体思路见代码注释。#include#include#include#include#include#include#include#include#define y1 y12345#define mx 110#define inf 0x3f3f3f3f#原创 2015-05-18 11:40:09 · 471 阅读 · 0 评论 -
POJ 1141
题意:求增加括号数最小的序列思路:见代码注释#include#include#include#include#include#include#include#include#define y1 y12345#define mx 110#define inf 0x3f3f3f3f#define LL long long#define ULL unsigned long原创 2015-05-18 10:18:20 · 466 阅读 · 0 评论 -
POJ 1080
题目大意是:给定两组DNA序列,要你求出它们的最大相似度。每个字母与其他字母或自身和空格对应都有一个打分,求在这两个字符串中插入空格,让这两个字符串的匹配分数最大思路:最长公共子序列变形#include#include#include#include#include#include#include#include#define y1 y12345#define mx原创 2015-05-18 15:03:47 · 450 阅读 · 0 评论 -
POJ 2479
原题链接:http://poj.org/problem?id=2479题意:对整数串S,求其两个不相交的子串s1、s2,使得s1+s2的值最大思路:见代码注释#include#include#include#include#include#include#include#include#define y1 y12345#define mx 50005#defin原创 2015-05-14 19:11:00 · 414 阅读 · 0 评论 -
POJ 1015
题意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n 个人作为陪审团的候选人,然后再从这n 个人中选m 人组成陪审团。选m 人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0 到20。为了公平起见,法官选出陪审团的原则是:选出的m 个人,必须满足辩方总分D和控方总分P的差的绝对值|D-P|最小。如果有多种选择方案的 |D原创 2015-05-15 11:50:49 · 488 阅读 · 0 评论 -
UVaOJ 10003 Cutting Sticks
UVaOJ挂的我心塞。。。题目大意:有一根长度为l的木棍,要把它从给定的n个点锯断,每锯断一次所需的费用等于木棍的长度,问锯完给定的点多需的最小的花费。区间dp,dp[i][j]为锯i点到j点所需的最小花费,状态转移方程:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+c[j]-c[i]);只会写记忆化搜索,递推循环顺序傻傻搞不清楚,别人写的递推方法:h原创 2015-04-28 22:36:48 · 533 阅读 · 1 评论 -
UVaOJ 674 Coin Change
题目大意:给出5种面值的硬币1,5,10,25,50,问相加之和为n的组合个数。最开始是想到DAG模型,于是酱紫循环了for (int i = 1; i < mx; i++){ for (int j = 0; j < 5; j++){ if (i >= a[j]) dp[i] += dp[i - a[j]]; }}写完发现样例都过不了,才发现循环的姿势出问题了。#def原创 2015-04-28 19:30:28 · 480 阅读 · 0 评论 -
最长递增子序列问题
原博客:http://www.cppblog.com/mysileng/archive/2012/11/30/195841.html最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若i设dp[i]表示以i为结尾的最长递增子序列的长度,则状态转移方程为:dp[i] = max{dp[j]+1}, 1这样简单的复杂度为O(n^2),其转载 2015-05-11 14:22:25 · 557 阅读 · 0 评论 -
POJ 1260
题意:有c个种品质不同的珍珠,若要买某一品质的珍珠必须在你买的数量的基础上,多付10个这种珍珠的价钱,可以用高品质的珍珠代替低品质的。求要买到所有目标珍珠至少要花多少钱。数据保证按珍珠的价钱由低到高输入。思路:易得珍珠的替代必须是连续的,不能跳跃替代。dp[i]表示考虑到第i类珍珠时所需要的最小花费,s[i]表示前i种珍珠的个数。状态转移方程为:dp[i]=(a[i]+10)*p[原创 2015-05-19 10:55:38 · 460 阅读 · 0 评论