自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 uva 10304 - Optimal Binary Search Tree(区间dp)

题意: 建一棵树,左子树小于根小于右子数,现要求求出f1*h1+f2*h2+...的最小(f是权值,h是高度) 那么用区间dp,枚举i到j以k为根的最小总数 那么每增加一层(除了根),就会增加sum:i->j并且减去a[k]; #include #include #include #include using namespace std; const int maxn = 26

2016-04-18 19:48:18 269

原创 uva10123

题意: 给出板的长度重量和n个物块,给出每个物块的位置以及重量,求使木板保持平衡的取法 思路: 两个支点对木板有一个向上的力,放在上面的木板有向下的力,一旦向上的力不敌向下的力,木板就会失去平衡(物理不好,不知道是不是) lef装者左边的合力,rig装者右边的合力,那么用压缩状态和记忆化搜索来做 st表示的是板上有几个物块,每当一个取法合理,就更新状态传进去#include #inclu

2016-04-18 16:25:04 268

原创 Tour uvalive3305

题意: 给出n个点,要求飞行员严格从1点出发至最右点(只能往右),再严格往左回到1 思路: 由于是闭合的,所以n与n-1一定是相连的,那么一定有总路劲是dp[n][n-1]+a[n][n-1],dp[n][n-1]表示从n走到1在从1走到n-1,从而构成环 i与i-1有可能是一侧也有可能是两侧,在枚举i-1之前的点j: 如果一侧,那么有dp[i][j]=dp[i-1][j]+a[i][i

2016-04-10 15:52:55 238

原创 Bigger is Better

题意: 用n根火柴棒搭出数字,求这个数能被m整除的最大值 思路: 递推的式子是newi=i+num[k][根数], newj=(j*10+k)%m[余数] dp[newi][newj] = max(dp[i][j]+1, dp[newi][newj]); 那么ans是只针对余数为0的情况 出发点是dp[0][0],结尾点是dp[i][0],之间必定是会得出一条等差数列(d=1)铺成

2016-04-07 21:34:19 394

原创 UVALive - 4614 Moving to Nuremberg (树形DP)

题意: 找出一个点,使得从这个点出发经过规定点规定次数路径总和最短 思路: 首先先建树,设1为根,并计算从1出发的总路径 那么从父结点递推下去算其字节点有: dp[v] = dp[u]+(sum-f[v])*len*2-f[v]*len*2 式子的意思就是v以上的点(-f[v])要多走u->v, 然后呢由于dp[u]里面含有v以下的点v->u的路径,所以减去 代码: #include

2016-04-06 18:35:36 201

原创 uva10131

题意: 求大象从重量递增且智商递减的序列的最长,并打印最长序列 思路: dp[cur]表示以cur为结尾的最长,很好理解 code: #include #include const int N = 10005; struct state { int w, s; }tmp[N]; int n, dp[N], vis[N]; int find(int cur) { if(dp[cur]

2016-04-04 12:05:19 266

原创 uva116

题意: 从左往右走,使得得到的行数的字典集尽量小,且得到的总和最小 思路: 逆向dp保证字典集尽量小 代码:#include #include #include #include using namespace std; int m, n; int maps[11][101]; int smap[11][101]; int fath[11][101]; int main() { whil

2016-04-04 11:42:09 346

原创 uva10614

题意: 给*的位置涂色,保证不同行不同列的涂色不同 思路: 关键思路我已经标在代码上了 一共要涂k种颜色,那么就要选出k条完全匹配的路(这样理解, 一旦这个点的横纵坐标相连,那么这两座标将不再参与匹配,即不能有相同行相同列的点) 代码: #include #include #include #include #include using namespace std; #define r

2016-04-04 00:22:36 266

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除