自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 51Nod - 1475 优先队列 + 贪心

题意:小C现在想建设一个国家。这个国家中有一个首都,然后有若干个中间站,还有若干个城市。现在小C想把国家建造成这样的形状:选若干(可以是0个)的中间站把他们连成一条直线,然后把首都(首都也是一个中间站)连在这一条直线的左端。然后每个点可以连一个城市,特别的是最右端的点可以连接两个城市。现在有n个城市的规划供小C选择。但是,他们那儿的交通条件比较差,他们那儿一天是

2017-01-27 11:51:06 486

原创 51Nod - 1639 递推

题意:有n根鞋带混在一起,现在重复n次以下操作:随机抽出两个鞋带头,把它们绑在一起。可以想象,这n次之后將不再有单独的鞋带头,n条鞋带系成了一些环。那么有多大概率刚好所有这些鞋带只形成了一个环?Input仅一行,包含一个整数n  (2Output输出一行,为刚好成环的概率。Input示例2Output示例0.666667

2017-01-26 09:40:59 394

原创 51Nod - 1418 模拟

题意:有N个球排成一排,每个球都是R、G、B三种颜色之一。现在想重新排列这一排球,你要重复以下过程N次:1)从原来的那排球中的最左侧取出一个球;2)将取出的求插入新的球排列的任意位置,即可以放在最左或最右端,也可以插入那排球的任意两个相邻球之间;3)计算这轮得分,如果是第一个球那么得0分;如果放在两端(最左或最右端)得分为除了新放入的球外,剩余球的颜色种数;如果放在两个

2017-01-26 09:27:36 417

原创 51Nod - 1640 生成树

题意:51nod魔法学校近日开展了主题为“天气晴朗”的魔法交流活动。N名魔法师按阵法站好,之后选取N - 1条魔法链将所有魔法师的魔力连接起来,形成一个魔法阵。魔法链是做法成功与否的关键。每一条魔法链都有一个魔力值V,魔法最终的效果取决于阵中所有魔法链的魔力值的和。由于逆天改命的魔法过于暴力,所以我们要求阵中的魔法链的魔力值最大值尽可能的小,与此

2017-01-25 09:29:20 382

原创 POJ - 3041 最小顶点覆盖

题意:在n*n的网格中,有k颗小行星。小行星i的位置是(Ri,Ci),现在可以一次摧毁一行或者一列的小行星,问要使得所有小行星毁灭,最少需要多少次。思路:最小顶点覆盖,左边是n个点,代表n行,右边是n个点,代表n列,行星当作边,如果(x,y)上有行星,就将左边节点x和右边节点y连边。那么题目所求也就是要求最小顶点覆盖,来消灭所有的行星(边)。代码:#include #incl

2017-01-24 16:39:16 478

原创 HDU - 1150 最小顶点覆盖

题意:工厂有两个机器A和B,两个机器分别有n,m种工作模式,现在有k种工作,每种工作可以在A的x[i]模式下完成,也可以在B的y[i]模式下完成,在可以调整任务执行顺序的情况下,如何分配任务可以使得调整机器模式的次数最少。思路:最小顶点覆盖。左边n种模式,右边m种模式,直接按照任务给x,y建边,这样构成的显然是二分图,为了要求出完成k个任务的最小调整次数,就是求出最小的顶点集合,可以覆

2017-01-24 16:19:12 589

原创 HDU - 4160 最小路径覆盖

题意:给n个玩具娃娃,分别给出每一个玩具娃娃的长宽高。如果满足一个娃娃的长宽高都大于另一个娃娃,那么大娃娃可以套在小娃娃的外面。问层层嵌套之后,最终最少还能剩下几个娃娃。思路:最小路径覆盖的模板题,如果左边放n个娃娃,右边放n个娃娃,满足嵌套关系的娃娃之间连边,那么显然这个图是二分图,顶点数 - 最大匹配 = 最小路径覆盖。代码:#include using namespac

2017-01-24 15:36:12 477

原创 HDU - 4352 数位dp

题意:定义一个数的power值就是这个数数位上严格递增子序列的长度,找出区间 [L,R] 中 POWER == k 的数的个数。思路:好题,搜题意的时候看到了状态压缩四个字的提示,如果没有这个提示感觉应该想不到这点。很巧妙地思路,之前没有想过LIS还可以运用状压,这题的关键在于数位上的严格上升子序列最多只有10个,这是可以用状态压缩表示的。如何利用状压求解LIS,关键要深刻理解

2017-01-24 10:27:46 526

原创 HDU - 3729 二分图最大匹配

题意:n个学生每个学生报一个自己排名的可能区间[l,r],求最多有几个学生说的是真话,并且情况合法,要求输出匹配的结果,多解的情况下要求字典序最大。思路:裸的二分图最大匹配,这题需要注意的一点就是要输出字典序最大的一组匹配结果。所以在进行匹配的过程中要从nl 到1逆序进行,保证下标大的人先匹配。代码:#include using namespace std;const

2017-01-23 16:52:28 421

原创 51Nod - 1737 树形dp

题意:给出一棵n个点的树,将这n个点两两配对,求所有可行的方案中配对两点间的距离的总和最大为多少。Input一个数n(1<=n<=100,000,n保证为偶数)接下来n-1行每行三个数x,y,z表示有一条长度为z的边连接x和y(0Output一个数表示答案Input示例61 2 11 3 11 4 13 5 14 6 1

2017-01-23 14:51:49 367

原创 HDU - 2444 二分图判定 + 最大匹配

题意:简化题意就是判断一个图是否是二分图,如果是求出最大匹配。思路:模板题,但是还wa了好久,有个地方需要注意,在判断是否是二分图的时候,一定要从每个未染色的节点出发判定,不能只任意选一个节点。另外一点是我zz了,在转化成二分图之后左边和右边的节点下标都应该从1开始,而不能用原始图的下标。代码:#include using namespace std;const int

2017-01-23 10:05:47 371

原创 51Nod - 1272 单调队列 + 二分

题意:给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对。每个元素和自己也可以组成一对。例如:{5, 3, 6, 3, 4, 2},可以组成11对,如下(数字为下标):(0,0), (0, 2), (1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (3, 3), (3, 4), (4, 4),

2017-01-22 10:40:13 607

原创 51Nod - 1483 暴力

题意:有n种不同的化学试剂。第i种有ai升。每次实验都要把所有的化学试剂混在一起,但是这些试剂的量一定要相等。所以现在的首要任务是把这些化学试剂的量弄成相等。有两种操作:·        把第i种的量翻倍,即第i种的量变成2ai。·        把第i种的量减半,除的时候向下取整,即把第i种的量变成 ⌊ ai2 ⌋ 。现在所有的化学试剂的量已知

2017-01-22 10:01:54 487

原创 HDU - 6012 枚举 + 二分

题意:问题描述这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望。Lotus将所有的nn株盆栽都放在新建的温室里,所以所有盆栽都处于完全相同的环境中。每一株盆栽都有一个最佳生长温度区间[l,r][l,r],在这个范围的温度下生长会生长得最好,但是不一定会提供最佳的研究价值(Lotus认为研究发育不良的盆栽也是很有研究价值的)。Lotus进行了若干次试验

2017-01-22 08:47:36 580

原创 51Nod - 1402 模拟 + 贪心

题意:一个N长的数组s[](注意这里的数组初始下标设为1,而不是0,即N个元素为s[1],s[2],...,s[N]),满足以下性质:1)每个元素都是非负的整数,且s[1]=0;2)任意两个相邻元素差值的绝对值不大于1,即| s[i]-s[i+1] |3)对于部分特殊点xi,要求s[xi]问在以上约束下s[]中的最大值最大可能是多少?Inpu

2017-01-21 11:59:51 530

原创 51Nod - 1625 状压暴力+ 贪心

题意:在公司年会上,做为互联网巨头51nod掌门人的夹克老爷当然不会放过任何发红包的机会。现场有n排m列观众,夹克老爷会为每一名观众送出普通现金红包,每个红包内金额随机。接下来,夹克老爷又送出最多k组高级红包,每组高级红包会同时给一排或一列的人派发 ,每个高级红包的金额皆为x。派发高级红包时,普通红包将会强制收回。同时,每个人只能得到一个高级红包

2017-01-21 09:34:38 448

原创 51Nod - 1247 找规律

题意:在一个无限大的二维网格上,你站在(a,b)点上,下一步你可以移动到(a + b, b), (a, a + b), (a - b, b), 或者 (a, a - b)这4个点。给出起点坐标(a,b),以及终点坐标(x,y),问你能否从起点移动到终点。如果可以,输出"Yes",否则输出"No"。例如:(1,1) 到 (2,3),(1,1) -> (2,1) -> (2,3

2017-01-20 18:23:19 2343

原创 51Nod - 1276 思维题

题意:有N个岛连在一起形成了一个大的岛屿,如果海平面上升超过某些岛的高度时,则这个岛会被淹没。原本的大岛屿则会分为多个小岛屿,如果海平面一直上升,则所有岛都会被淹没在水下。给出N个岛的高度。然后有Q个查询,每个查询给出一个海平面的高度H,问当海平面高度达到H时,海上共有多少个岛屿。例如:岛屿的高度为:{2, 1, 3, 2, 3}, 查询为:{0, 1, 3, 2}。当

2017-01-20 13:33:41 532

原创 51Nod - 1270 dp

题意:数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai,都满足1   (公式表示所有两个相邻元素的差的绝对值之和)给出数组B,计算可能的最大代价S。Input第1行:1个数N,表示数组的长度(1 <= N <= 50000)。第2 - N+1行:每行1个数,

2017-01-19 22:45:40 338

原创 51Nod - 1065 二分

题意:N个整数组成的序列a[1],a[2],a[3],…,a[n],从中选出一个子序列(a[i],a[i+1],…a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的。例如:4,-1,5,-2,-1,2,6,-2。-1,5,-2,-1,序列和为1,是最小的。Input第1行:整数序列的长度N(2 <= N <= 500

2017-01-18 20:35:52 340

原创 51Nod - 1043 dp

题意:1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码。例如:99、1230、123312是幸运号码。给出一个N,求长度为2N的幸运号码的数量。由于数量很大,输出数量 Mod 10^9 + 7的结果即可。Input输入N(1Output输出幸运号码的数量 Mod 10^9 + 7Inpu

2017-01-18 11:01:20 317

原创 51Nod - 1035 模拟

题意:正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数。1/6= 0.1(6) 循环节长度为11/7= 0.(142857) 循环节长度为61/9= 0.(1)  循环节长度为1Input输入n(10

2017-01-18 10:36:08 374

原创 51Nod - 1021 区间dp

题意:N堆石子摆成一个环。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19)1 2 3 4 => 1 5 4(5) => 1 9(14) => 10(

2017-01-17 20:48:08 343

原创 HDU - 3709 数位dp

题意:定义一种平衡数,就是按照十进制数位上选取一位当作支点,左右两边的数位计算力矩后相等,即为平衡数。所谓力矩,就是拿数位上的数字乘上到支点的距离。举例来说,4139,如果选3作为支点,左边的力矩为4*2+1*1=9,右边的力矩为9*1=9,左边等于右边,所以4139是一个平衡数。题目要求计算出区间[x,y]之间的平衡数的个数。思路:显然数位dp。关键是在于状态的设计,这里还是欠缺不少

2017-01-16 09:41:40 403

原创 POJ - 3252 数位dp

题意:一个数x是round number,要求x写成二进制形式的时候数位上0的个数要大于等于1的个数,题目要求求出给定范围内的round number个数。思路:既然求的是二进制,那么自然要用二进制的数位dp来判断,模式基本不变,另外保存两个变量one,zero分别表示搜索中1和0出现的个数,另外还有一个flag变量清除前导零的影响。代码:#include #include

2017-01-13 11:48:41 688

原创 HDU - 4734 数位dp

题意:定义F(x),若数x的十进制表示可以写成(A nA n-1A n-2 ... A 2A 1),那么F(x)定义为F(x) = An * 2^(n-1) + An-1 * 2^(n-2) + ... + A2 * 2 + A1 * 1,先给出A,B,求出0到B之间F(x)小于等于F(A)的数有多少个?思路:数位dp,可以发现最大的A也就是999999999,F(A)的最大值不超过5

2017-01-13 10:20:26 300

原创 51Nod - 1050 单调队列

题意:N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。

2017-01-11 21:11:53 370

原创 HDU - 4507 数位dp

题意:  什么样的数和7有关呢?   如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关――   1、整数中某一位是7;   2、整数的每一位加起来的和是7的整数倍;   3、这个整数是7的整数倍;   现在问题来了:吉哥想知道在一定区间内和7无关的数字的平方和。 Input输入数据的第一行是case数T(1 Output请计算L

2017-01-10 22:27:14 370

原创 CF - 55D 数位dp + 状压

题意:求出区间[l,r]中的所有Beautiful Number的数目,如果一个数x可以被它各个数位上的非零数整除,那它就是Beautiful Number。思路:很巧妙的一道数位dp,没想出来看题解了。假设不考虑记忆化搜索,这里可以直接枚举每一位的值来进行计算,这里可以进行状压,利用cnt(1这里有个很关键的一点,需要知道如果z%y==0,那么(x%z)%y==x%y,明白这

2017-01-08 22:57:15 458

原创 51Nod - 1042 数位dp

题意:给出一段区间a-b,统计这个区间内0-9出现的次数。比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次。Input两个数a,b(1 Output输出共10行,分别是0-9出现的次数Input示例10 19Output示例1

2017-01-08 15:44:03 492

原创 51Nod - 1009 数位dp

题意:给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。Input输入N(1 Output输出包含1的个数Input示例12Output示例5思路:一道基础的数位dp

2017-01-02 22:03:12 629

原创 51Nod - 1092 区间dp

题意:回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。每个字符串都可以通过向中间添加一些字符,使之变为回文字符串。例如:abbc 添加2个字符可以变为 acbbca,也可以添加3个变为 abbcbba。方案1只需要添加2个字符,是所有方案中添加字符数量最少的。Input输入一个字符串Str,Str的长度 Outp

2017-01-02 16:35:14 353

原创 51Nod - 1094 暴力 + map

题意:一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间[i, j],(1 <= i <= j <= n),使得a[i] + ... + a[j] = k。Input第1行:2个数N,K。N为数列的长度。K为需要求的和。(2 <= N <= 10000,-10^9 <= K <= 10^9)第2 - N + 1行:

2017-01-01 21:55:57 431

空空如也

空空如也

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

TA关注的人

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