自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WKLL_

这个世界不是因为你能做什么,而是你该做什么.

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

原创 NOI 2001 炮兵阵地 状压dp

题目大意:给定n*m的网格,可以在网格上放取任意多的点,但要满足任意两点之间的距离大于2。问最多可以放几个点。题目分析:首先题目以行作为状态很明显,但是又不能只考虑上一行的状态,而是要考虑前两行的状态。#include#include#include#include#include#include#include#include#include#includeusi

2016-07-30 00:20:23 585

原创 hdu 3943 K-th Nya Number 数位dp

题目大意:给定区间[l,r]、x、y,求出在这个区间内含有x个4,y个7的第K大的数,否则输出Nya!题目分析:参照先统计在计数的思想。设dp[i][j][k]表示第i位有j个4,k个7的数字有几个。显然对于dp[i-1][j][k],可以转移到dp[i][j+1][k]和dp[i][j][k+1]。对于另外8个数(除4,7)有dp[i][j][k]=dp[i-1][j][k]*8.

2016-07-28 19:39:08 1284

原创 hdu 3652 B-number 数位dp

题目大意:求出0..n中含有13的13倍数的个数。题目分析:参照数位dp的思想。先预处理再计算。设f[i][j][k][l]表示第i位,数为j,k表示是否含有13,模13余数是l的数有几个。伪代码:决策第i位¨for x = 0 ~ 9¨  if k = 1 //要求要包含13¨    f[i,j,k,l] = f[i - 1,x,1,(l - j*10^(i-

2016-07-27 21:31:34 646

原创 uestc 250 Windy数 数位dp

题目大意:给定一个区间[l,r],求在这个区间当中满足两位数之差>=2的数的个数。题目分析:相比hdu 2089 ,hdu 3555有些差别。对于前导0这类的处理有点迷..将最高位挑出来先进行处理剩下的统计同2089一题。#include#include#include#include#include#include#include#include#include

2016-07-27 17:16:40 544

原创 hdu 3555 bomb 数位dp

题目大意:给定n个数x,求出1..x含有49的数的个数。题目大意:数位dp,思路和hdu2089差不多。求出1..x不含49的数的个数,相减即可。#include#include#include#include#include#include#include#include#include#includeusing namespace std;#def

2016-07-27 10:39:53 601

原创 hdu 2089 不要62 数位dp

题目大意:给定一个区间[l,r],要求出在这个区间内的数字中不含62和4的数字个数。题目分析:数位dp模型。求出0..r和0..l-1的方案数。相减一下即可。考虑如何求方案数:      设dp[i][j]表示当前第i位状态为j的方案数,则dp[i][j]+=dp[i-1][k].预处理完之后进行统计方案数。#include#include#include#inc

2016-07-26 19:56:57 392

原创 HNOI 2012 射箭 半平面交

http://www.lydsy.com/JudgeOnline/problem.php?id=2732Description沫沫最近在玩一个二维的射箭游戏,如下图 1 所示,这个游戏中的 x 轴在地面,第一象限中有一些竖直线段作为靶子,任意两个靶子都没有公共部分,也不会接触坐标轴。沫沫控制一个位于(0,0)的弓箭手,可以朝 0 至 90?中的任意角度(不包括 0度和

2016-07-26 16:42:08 610

原创 BZOJ1603 NOI2008 设计路线 树形dp

题目大意:给定一个根节点为1的树,要求在树中找到一些不相交的链,使得每个节点的不便利值得最大值最小,并求出满足条件的方案个数。一个节点的不便利值就是从该节点到根的路径上经过的非链边的条数。题目分析:对于无解的情况是很好处理的,对于题目意思,只要题目所给的是一个森林便可以直接判断无解,即m考虑f[i][j][k]为节点i,不便利值借将狼踩尽的图- 这是由状态直接得到的转移;

2016-07-23 22:44:06 1275

原创 BZOJ 1812 Ioi2005 riv 树形dp

题目大意:给定一棵树,每个点有权值,每条边有边权(单向边)。你可以选取K个黑点,使得从每个点移动到距离他最近的黑点的花费(距离*点权)的总和最小。题目分析:先将该树转化成二叉树方便动态规划。由于当前节点i的子树的花费与最近的黑点j有关系。且要记录下当前已经用过几个黑点。所以f[i][j][k]表示当前这棵子树的根节点为i,最近的黑点为j,用了k个黑点的花费。记忆化搜索方便实现。

2016-07-23 17:25:26 1069

原创 感冒病毒 suspects 并查集

题目大意:给定n个人,m个团,同一个团中只要有一个人感染病毒整个团就都感染病毒。现在0号感染了病毒,问总共有多少个人会感染病毒。题目分析:简单的并查集。#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define

2016-07-23 13:21:55 552

原创 【bzoj1369】[Baltic2003]Gem 树形dp

题目大意:给定一棵树,要你为他标上权值且两点间权值不能相同。问最小的权值总和为多少。题目分析:WJMZBMR表示这道题并不能用奇数层染色的方法来做。因为可以构造出贪心反例(用大量的叶子节点强迫某个节点选2)。所以考虑树形dp。 设状态f[i][j]表示根节点为i的子树且根节点颜色为j的子树的最小权值。#include#include#include#include#

2016-07-21 17:37:20 698

原创 【bzoj3522】[Poi2014]Hotel 暴力+计数

题目大意:给定一棵树,选取树上三个点,使得三个点任意两点之间距离相等,问方案数。题目分析:对于任意三个点,要么处于一条链,或者不处于同一条链。显然处于一条链时不满足题意。所以必然这三个点是有一个中心使得该点到三个点距离相等。所以暴力枚举中心,再计算方案数。#include#include#include#include#include#include#i

2016-07-21 15:00:44 798

原创 【bzoj1912】[Apio2010] patrol 巡逻 树形dp

题目大意:给你一棵树,你可以连k条边(1题目分析:对于一棵树来说,遍历所有的点最少需要将每条边走两次,即2*(n-1)。显然当k==1时将直径的两个端点相连,便可以使原来直径上的边减少1次,显然最优。当k==2时,只要将原来直径上的边权赋为-1再找一次树的直径即可。最终答案ans=2*(n-1)-dis1-dis2+2;#include#include#include

2016-07-21 13:43:20 744

原创 Tyvj P1520 树的直径

http://www.tyvj.cn/p/1520题目大意:求树的直径题目分析:详见本栏目总结。#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define For(i,n) for(in

2016-07-20 19:05:16 339

原创 树形动态规划总结

本文部分题目出自《树的动态规划与构造》一文/*问题可以分解成若干相互联系的阶段,在每一个阶段都要做出决策,全部过程的决策是一个决策序列。要使整个活动的总体效果达到最优的问题,称为多阶段决策问题。动态规划就是解决多阶段决策最优化问题的一种思想方法。因为树可以描述比较复杂的关系,这对选手分析问题的能力有较高的要求,在寻找最优子结构、组织状态时往往需要创造性思维,而且树型动态规划对数

2016-07-20 09:19:05 1866

原创 poj 1987 Distance Statistics 点分治

题目大意: 给你一棵树,问两个点对距离题目分析:点分治裸题。dfs处理出每个重心(分治下)到当前子树根节点的距离存在dis数组中,o(n)直接找出。但要注意的是,对于dis所存的距离,只适用于两个不同的子树当中,所以要将位于同一个子树中的方案数减去。#include#include#include#include#include#include#incl

2016-07-19 17:09:58 764

原创 迷のA+B problem

为什么我要单独开个专栏放一个A+B problem这道每个oj上基本都是第一题的大水题=-=大概原因是....这道题真的很有魅力(智力)...事实上主要原因在于老是被机房中的神犇吐槽头文件太多...    其实只是为了打代码方便而已=-=。于是...为了证明我的头文件还不算那-么-难-看(只要向上对应即可...特地贴一个A+B probl

2016-07-18 20:37:55 409

原创 vijos 1892 树上的最大匹配问题 树形dp

https://vijos.org/p/1892题目大意:树上的最大匹配是多少? 最大匹配解的方案共有多少组?(首先树可以被看作是一个无向图G.(对于无向图G来说, 其上的最大匹配是边集的一个子集, 满足:(对于G中每一个点来说, 都只有最多一条与之相连的边在这个子集中.(最大匹配就是这个子集大小可以到达的最大值.以上大概就是树上最大匹配的概念。

2016-07-18 09:05:51 2475

原创 Codeforces 23 E Tree 树形dp+高精

题目大意:给你一棵树,让你切断一些边,使得剩下的每个连通块的点的个数的乘积最大,输出这个乘积。题目分析: 由于题目要求各个连通块点的乘积,设状态dp[i][j]表示i作为一个连通块时其点个数为j时候的值。每次枚举与当前节点联通的其他节点所已经扩展的总结点数量。则dp[u][i+j]=max(dp[u][i]*dp[v][j]) {其中u为当前节点,v为u的子节点,i,j分别枚举

2016-07-15 20:14:45 1029

原创 Codeforces 543 D Road Improvement 树形dp

题目大意:给定n个点的树#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Rep(i,n) for(int i=0;

2016-07-15 10:00:53 829

原创 Codeforces 161 D Distance in Tree 树形DP

题目大意:给出一棵n个节点的树,统计树中长度为k的路径的条数(1<=n<=50000 ,1);题目分析:设dp[i][j]表示以i作为长度为j的路径其中一个点的方案数。转移:dp[u][j]+=dp[v][j-1];  方案计数:ans+=dp[v][j]*dp[u][k-j-1];#include#include#include#include

2016-07-15 09:50:11 1020

原创 codeforces 366 C Dima and Salad dp

http://codeforces.com/problemset/problem/366/C题目大意:在一个冰箱里有n种水果,并且这些水果每一种都有一个美味度和一个卡路里的属性, 小明要从这些水果中选出来一些做一个水果沙拉,并且要求他的水果沙拉的美味度之和是卡路里和的k倍,问小明是否可以做出这么一个水果沙拉,若不能输出-1,否则输出符合要求的最大的美味值之和。题目分析:

2016-07-10 16:03:17 703

原创 Codeforces 486 D Valid Sets 记忆化搜索

题目大意:给出一棵树,求这棵树的满足最大点与最小点之差小于等于d的连通子图的个数。  题目分析:枚举每个点,假设当前该点就是该联通子图的最大点,进行遍历,最后将每个点的方案总数累加起来即可。#include#include#include#include#include#include#include#include#include#includeusi

2016-07-10 15:51:25 696

原创 Codeforces 543 A Writing Code 计数DP

http://codeforces.com/problemset/problem/543/A题目大意:n个人,一共要写m行程序,每个程序员每行出现的bug数为ai,要求整个程序出现的bug数不超过b的方案数.题目分析:简单的计数DP,01背包变形。需要记录的是写到第i行时错误的bug数为j的方案。所以定义二维数组dp[i][j]。转移与01背包类似。具体见代码;初始化d

2016-07-01 00:43:59 911

原创 Codeforces 577 B Modulo Sum 简单数学+dp

http://codeforces.com/problemset/problem/577/B题目大意:给定两个数n和m,还有a1-an的n个数,判断是否存在该数列的一个子序列,使得子序列元素的和可以被m整除。题目分析:这题的n的范围是小于10^6,而m小于10^3。事实上当n>=m时必然满足条件。因而仅需要处理n由上述知只要设一个二维布尔数组f[i][j]表示到第i位数

2016-07-01 00:20:54 876

原创 Codeforces 474 D Flowers

http://codeforces.com/problemset/problem/474/D题目大意:一个东西爱吃花,有两种颜色红R和白W,他吃白花每次都一组一组吃,一组是连续在一起的k朵,问在花的朵数从ai到bi范围里,他总共有多少种吃法。题目分析:这是一道比较裸的计算方案数的DP。由于题目告诉我们吃白花是一组一组的吃,由此得出当前的状态数必然与i-k的状态数有关

2016-07-01 00:09:01 874

空空如也

空空如也

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

TA关注的人

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