自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笔记

个人笔记,欢迎交流!

  • 博客(13)
  • 收藏
  • 关注

原创 邻接表的两种模拟写法(模板)

前言:邻接表一直图方便 vector实现,从来没有被卡住时间。直到遇到poj3107. 1.vector:struct edge{ int to,w;//更多关于边的属性可以自己添加,to连接的点,w权值。};vector<edge>G[MAX_N];//MAX_N点个数加边操作: G[s].push_back(edge{t,w}); //建一条从s到t权值为w的边遍历: for(v

2016-09-29 23:26:34 1882

原创 HDU1520(树形dp入门题)

题意:在一个有根树上每个节点有一个权值,每相邻的父亲和孩子只能选择一个,问怎么选择总权值之和最大。思路: 树形dp的常规入门题:设dp[i][0]表示:当前这个点不选,dp[i][1]表示当前这个点选择的最优解。转移方程:dp[cur][0]+=max(dp[son][1],dp[son][0]);//当前这个点不选,那他的孩子可选可不选,取 最大的。 dp[cur][1]+=dp[son][

2016-09-28 21:40:01 3995

原创 hdu5927 2016 东北赛F Auliary Set

题意:在一颗1为根的树上,又很少一部分的不重要的点,其他都是重要的点,问满足条件的点有多少个? 满足条件有两种情形:1.为重要的点。2.他的亲孩子至少有两个不同的重要的点。 思路:先预处理每个点的孩子个数,和父亲是谁。在对于比较少的m个不重要点,求是否满足有两个不同的重要点孩子。这个求法是O(m)。 怎么做呢?对m个点深度排序,从最深的点开始,满足孩子数>=2就计数,不满足就把他父亲的孩子数-

2016-09-26 10:32:49 500

原创 uva1625 Color Length

题意: 有两个由大写字母组成的颜色序列,将它们合并成一个序列:每次可以把其中一个序列开头的颜色放到新序列的尾部。 对于每种颜色,其跨度定义为合并后的序列中字母最后一次和第一次出现的位置之差,求所有合并方案中所有颜色跨度之和的最小值。 思路:紫书上思路非常清晰,但写起来还是有点考验码力,首先预处理c[i][j]:p[i]串前到去q[j]串前总共有多少个已经出现但未结束的字母。 在设dp[i][

2016-09-22 00:37:39 420

原创 uva11584 Partitioning by Palindromes

题意:给你一个串,问最少能划分成几个回文串。 例如:racecar本身就是回文串,只用一个划分。 思路:这题定义d[i]表示:0~i字符串的最小回文串的个数,则dp[i]=min(dp[j]+1);s[j][i]满足回文串的条件。 所以这题需要预先处理s[i][j]判断某个子串是不是回文串,时间复杂度O(n^2);转移方程也是O(n^2);#include<bits/stdc++.h>usi

2016-09-21 22:34:31 373

原创 light oj 1422(区间dp 水题)

题意:给你n天需要穿的衣服的样式,每次可以套着穿衣服,脱掉的衣服就不能再穿了,问至少要带多少条衣服才能参加所有宴会 思路:dp[i][j]代表从区间i到区间j最少的穿衣数量,默认dp[i][j]这个状态的穿衣数,就要等于dp[i+1]+1,如果在k(i#include<bits/stdc++.h>using namespace std;int dp[110][110],a[110];int

2016-09-21 20:34:46 517

原创 CodeForces 149D-Coloring Brackets(区间dp 的好题)

题意: 给一个给定括号序列,给该括号上色,上色有三个要求1、只有三种上色方案,不上色,上红色,上蓝色2、每对括号必须只能给其中的一个上色3、相邻的两个不能上同色,可以都不上色求0-len-1这一区间内有多少种上色方案思路:括号匹配问题是典型区间dp问题,这题在此基础上改编增加颜色的规定,于是我需要多定义两层设dp[i][j][l][r]表示:从i到j这个括号序列i位置为l颜色,j位置为r颜色的状态

2016-09-21 00:04:26 625

原创 poj 1651 Multiplication Puzzle(裸区间dp)

题意:一系列的数字,除了头尾不能动,每次取出一个数字,这个数字与左右相邻数字的乘积为其价值,最后将所有价值加起来,要求最小值。 思路:典型的区间dp问题。#include<cstdio>#include<algorithm>using namespace std;int dp[110][110],a[110];const int inf=0x7ffffff;int main(){

2016-09-20 23:38:31 273

原创 hdu2476 String painter

题意: 有两个字符串,每次操作可以把一段连续的区间变成同一个字母,问第一个串最小几次操作才能变成第二个串。 前言:一开始看题就知道这是区间dp经典套路,然而这题还是看别人题解+思考过的,遂记载一下这题的解题思路。 思路:dp的题目最开始最重要就是定义状态,区间dp套路基本都是dp[i][j]:表示i到j的最优解。 而这题直接思考 s1串变成s2串有点难搞(我就没搞出来)。就先思考空串变成s2串

2016-09-20 21:23:39 399

原创 最短最优升级路径(某公司面试编程题)

最短最优升级路径 时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 游戏网站提供若干升级补丁,每个补丁大小不一,玩家要升级到最新版,如何选择下载哪些补丁下载量最小。 输入 第一行输入 第一个数为用户版本 第二个数为最新版本,空格分开 接着输入N...

2016-09-19 21:09:47 2241 1

原创 hdu4283 You Are the One(区间DP)

题意:有n个人每个人都有一个权值v,根据他出场的顺序决定他的心情,比如第k个出场,坏的心情值就是(k-1)v,有一个原理为栈的小黑屋,可以控制出场顺序。问怎么利用这个小黑屋使所有人心情值之和的最小是多少? 思路:首先贪心的想让权值最高的先出场一定最优的,但是这题人出场的顺序只能由一个栈来控制,不能贪心的决策。而栈起到的作用就是改变一定区间内人的出场顺序。 所以这题就用区间dp来做,设dp[i][

2016-09-19 00:14:12 692

原创 poj 3537 Minimax Triangulation(区间dp 三角剖分)

题意:给你一个n个顶点多边形,有很多种方法对它进行三角剖分,求最大三角形的面积最小的情况是多少? 思路:典型的区间dp 三角剖分类型的题目。这类题目的转移方程和矩阵链乘的很像,但是区别在于矩阵链乘可以反应决策的过程 ,而三角剖分的则允许随意切割,在这样的情况下,有必要把决策的顺序规范化,使得在规范的决策顺序下,所有的状态都可以用区间表示表示。一般的做法都是对这个多边形,逆时针规定i~j 如图:

2016-09-16 18:38:30 573

原创 poj1160 Post Office

题意:有V(v<=300)个 地点,选择p(p<=30)个作为邮局,问怎么选择,其他点到最近的邮局的距离之和最小。 思路: 直接暴力肯定不行。做过dp区间类问题就知道这题是典型区间dp类的问题。 设dp[i][j] 前i个地点里选择j个邮局的最小距离。 很容易推出一个经典的转移方程 dp[i][j]=min(dp[i][j],dp[k][j-1]+cost[k+1][i]);(1<=k#inc

2016-09-13 21:25:40 340

空空如也

空空如也

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

TA关注的人

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