自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 石子归并 CSU - 1592 (区间合并)

石子归并 题目链接:CSU - 1592 题意:将n堆石子合并成一堆,每次只能合并相邻的两堆石子,每次合并的代价是两堆石子总石子数和;思路:入门的一道区间DP,将合并区间由小向大推;dp[i][j]表示合并区间[i, j]的最小代价;初始化dp为INF,dp[i][i]=0;dp[i][j]=min(dp[i][k]+dp[k+1][j]]+sum[i][j])(i<=k...

2018-07-31 20:09:36 193

原创 Find Metal Mineral HDU - 4003 (树形DP)

Find Metal Mineral 题目连接:HDU - 4003 题意:火星上出金矿了!!!排k个机器人到S点,问机器人找完所有金矿后,最短的移动距离;如果只有一个机器人,他就要找遍所有金矿就会走重复的路,直到找到最后一个矿;如果有两个机器人,他俩就可以分头行动;思路:每个节点都可以分0~k个机器人,但是这里有两点要注意:1:此k非彼k,这里的k指的是该节点的父亲分到的机器人的...

2018-07-31 19:24:32 151

原创 Problem L. Visual Cube HDU - 6330 (模拟,构建)

Problem L. Visual Cube 题目连接:HDU - 6330 题意:给出三个数x, y, z,分别对应一个立方体的长宽高;要求打印出这么一个立方体;根据题目样例不难找出规律;首先上部分就是答打印上面,下部分打印下面最后补齐边角的点就可以了;#include <bits/stdc++.h>using namespace std;char ...

2018-07-31 19:04:38 205

原创 Problem F. Grab The Tree HDU - 6324 (博弈)

Problem F. Grab The Tree 题目链接:HDU - 6324 题意:有一棵树,每个节点都有一个值,Q首先选择任意个点,但是所选点不能有连边,也就是选了儿子就不能选父亲,选了父亲就不能选儿子;Q选完后T选;比较最后每个人选的数的异或和,谁大谁赢,相等就是平局;竟然写了半天树形DP,然后就莫名其妙的AC了~~~;先说一下为什么不能用树形DP,这不是模板吗???要么选...

2018-07-31 18:52:16 190

原创 Problem A. Ascending Rating HDU - 6319 (单调栈 )

Problem A. Ascending Rating 题目链接:HDU - 6319 题意:在一个数列a中任选一个长度为m的区间;设maxrating和count初始值均为0,然后从该区间的左边第一个位置开始遍历该区间,没遇到一个大于maxrating的数x,就将maxrating改为x,同时count++;遍历完该区间后就得到了该区间的maxrating值和count值;求A,...

2018-07-31 18:38:14 184

原创 JLUCPC HDU - 3899 (树形DP)

JLUCPC 题目链接:HDU - 3899 题意:N座城市由N-1条边连接,就是一棵树;一直每条边及其距离;每座城市中都有若干球队;现要推选出开一个盟主大会,要让所有球队到该城市消耗体力最少;若i城的球队到j城,消耗体力为team[i]*dis[i][j];也就是找到这么一个城市k,使得最小;先求出每个节点(包括子节点)共有多少队伍team[i], 其子节点到父节点的花费之和co...

2018-07-31 18:07:49 180

原创 Information Disturbing HDU - 3586(树形DP,有限制的割边, 二分)

Information Disturbing题目链接:HDU - 3586题意:敌军有一队侦察兵,每个通讯兵只与他的直接上级单线联系,队长是1号,通讯系统构成树状结构;现,总军司令要求你切断先锋通讯兵(叶子节点)与总队长(根节点)的联系,并且消耗体力不能超过m;求出满足条件的每次切断一条边的最大体力消耗值;思路:不看切边的限制,就是一个落得树形DP,加上限制后只不过改了状态转移方程;...

2018-07-31 13:32:40 203 4

原创 Bonsai HDU - 3452(树形DP)

Bonsai 题目链接:HDU - 3452题意:给出一棵树,已知树根,边权,要求删掉一些边,使得所有叶子都不能再和树根有联通路径,删掉的边的边权之和最小是多少;思路:不考虑限制条件,我们可以直接将与树根直接相连的边删掉,也可以将叶子上的连边删掉,这是两种最简单的方法,但是未必使得删掉的边权之和最小;如上图我们可以看到,删除2-4连边的效果和删除4-8, 4-9连边的效果相同;...

2018-07-29 11:10:46 165

原创 Party at Hali-Bula HDU - 2412 (树形DP判断是否唯一最优解)

Party at Hali-Bula 题目链接:HDU - 2412 题意:笔者要开一个party,邀请公司的所有同事,当然了包括各位boss,但是每个人都不会和他的直接上司同事参加party,问可最多可以有多少人来参加party,并判断是否只有唯一解;第一问很简单,就是树形dp入门了,每个人只有两种情况,1参加,0不参加;参加,则他的手下一定不参加;不参加,则他的手下可能参加,也可能...

2018-07-29 10:51:25 254

原创 Computer HDU - 2196 (树形DP)

Computer 题目链接:HDU - 2196 题意:n台电脑由n-1根网线连接,构成一棵树;问每个电脑和最远连接的电脑之间的距离最大是多少;思路:如果是求某一个点到达的最远的电脑,直接深搜一遍就可以了,但是本题是要求出所有的点的最长到达点,总不能每个点都跑一边dfs吧;首先明确一点一个节点的最长到达距离是什么?要么是一本节点向下到叶子节点的距离,要么是向上到父节点,再由父节点向...

2018-07-29 08:21:31 168

原创 Park Visit HDU - 4607 (树的直径)

Park Visit 题目链接:HDU - 4607 题意:公园里有n个景点,n-1条距离相等的将这n个点构成一棵树,问任选一点开始参观公园,可以逛完k个景点所要走的最短路径;思路:如果树的直径为m,即树的叶节点到叶节点之间最长距离为m, 当k<=m+1时,不用走回头路,这样是最短的,此时最短路径为k-1; 当k>m+1时并定会走重复的路,我们的目标就是让重复的路最短;要想...

2018-07-29 08:04:21 292

原创 Anniversary party HDU - 1520 (树形DP)

Anniversary party 题目链接:HDU - 1520 题意:公司里开party,每个人都有1个rat值,每个人都不会和他的直接上司同时出现在party上,问聚会上的party值最大时多少?思路:每个人要么参加聚会,要么不参加,如果某人参加party,那么他的手下必定不参加;如果他不参加,他的手下可能参加也可能不参加;#include <bits/stdc++....

2018-07-28 10:21:19 134

原创 Starship Troopers HDU - 1011 (树形DP)

Starship Troopers 题目链接:HDU - 1011 题意:星际战争中虫子时很烦人的,有你带领的阿尔法舰队要开赴洞穴消灭虫子,舰队上共m个士兵,每个士兵可以消灭20只虫子,洞穴入口是1号房间,洞内有N个房间,每个房间相互连通,每个房间有x个虫子,还有y个首脑,要活捉首脑必须消灭房间内的全部虫子,如果有20只虫子,就需要一个士兵,21只虫子就需要2个士兵;没经过一个房间就必须留...

2018-07-28 10:01:54 432

原创 The more, The Better HDU - 1561 (树形DP,有依赖背包)

The more, The Better 题目链接:HDU - 1561 题意:现有N座城堡,每座城堡有bi的宝藏,现在最多攻破M座城堡,且攻城要按顺序,要共攻破第i座城堡必须先攻破第j座城堡;首先是个背包问题,其次不难看出,每座城堡之间的联系是片森林,所以想到树形dp令dp[i][j]表示第i个节点处,攻破的城堡有j座(包括其本身和子节点);#include <bit...

2018-07-28 08:51:41 186

原创 Pangu and Stones HihoCoder - 1636 (区间DP) 2017区域赛北京站

Pangu and Stones 题目链接:HihoCoder - 1636 题意:现有n堆石子,每次合并k堆石子,L<=k<=R,每次合并石子花费代价是合并的石子的总数量;问最后能否合并成一堆石子,若能,输出最小代价;反之输出0;思路:令dp[i][j][k]表示将区间[i, j]合并成k堆所花费最小代价;当k=1时,dp[i][j][1]=min(dp[i][i+x...

2018-07-28 08:25:23 278

原创 A Mini Locomotive POJ - 1976 (动态规划)

A Mini Locomotive 题目链接:POJ - 1976 题意:n个连续的车厢,用三个车头带,每个车头最多能带动k个连续的车厢,每个车厢内有不同数量的乘客,问最多能拉走多少乘客;设dp[i][j]表示第i个车头拉动前j个车厢所能拉走的最大乘客数量;​#include <stdio.h>#include <string.h>#include...

2018-07-27 08:14:30 200

原创 Consumer HDU - 3449 (有依赖的背包)

Consumer 题目链接:HDU - 3449 题意:FJ要去购物,买的商品要用箱子装起来,每个箱子装不同的商品,问FJ能获得的最大价值;只有先买了箱子,才能买固定的物品,所以这是个有依赖的背包问题,对于每个箱子内的物品一定是按01背包看是否要买;对于每个箱子有两个状态,买,不买;买了就必定买了对应商品,那么买了这一箱子后,用剩下的钱买商品;#include <bit...

2018-07-27 08:09:55 309

原创 AreYouBusy HDU - 3535 (混合背包)

AreYouBusy 题目链接:HDU - 3535 题意:有n个集合,每个集合中由若干任务,集合分为三种类型;0类型表示该集合中的任务至少做一件,1类型表示该集合中的任务最多做一件, 2类型表示该集合中的任务可以随意做;给出每件任务完成所需时间及获得利益,求最大利益;思路:0类型中每组最少选一件那么让DP数组初始化为-INF可满足,dp[i][j]表示第i组任务,花费j时间获得最大利...

2018-07-26 12:26:25 221

原创 FATE HDU - 2159 (二维完全背包)

FATE 题目链接:HDU - 2159 题意:玩游戏时要打怪升级,现差n个经验才能升级,现剩体力为m,有k种怪,最多还能杀s只怪,每只怪击杀后的经验值和消耗体力值分别为ai, bi;问能升级的情况下,所剩体力最大是多少?思路:主要是看看要把谁看成背包容量,谁看作物体?这里有两种限制条件,体力和杀怪数目,所以可以看作二维背包,又怪的数量是无穷的,所以是完全背包;令dp[i][j...

2018-07-25 18:32:41 281

原创 I NEED A OFFER! HDU - 1203 (01背包)

I NEED A OFFER! 题目链接:HDU - 1203 题意:Speakless要出国留学,现有N万元资本,M所学校可供选择,第i所学校的申请费用是ai万元,Speakless估计自己能得到第i所学校的offer的几率是bi,问在负经济担得起的前提下,他能得到至少一份offer的概率最大是多少?思路:求得到至少一份offer的概率最大,就是要得不到offer的概率最小;01背包...

2018-07-25 18:08:42 179

原创 Coins HDU - 2844 (多重背包)

Coins 题目链接:HDU - 2844 题意:有N种面值不同的硬币,面值为Ai的硬币有Ci枚,问不超过M元的前提下,能组合成几种价格;看作是体积是M的背包,看最后求出的有几个dp[i]=i的;#include <bits/stdc++.h>using namespace std;const int maxn=1e5+10;int dp[maxn], A[11...

2018-07-25 18:02:03 492

原创 Distinct Values HDU - 6301

Distinct Values 题目链接:HDU - 6301 题意:题目要求构造一个长度为n的数组,要求在区间[l, r]中不能有重复数字,且数组中数必须是正整数,[l, r]这样的区间有多个,且有可能重叠;写出构造出来的字典序最小的数组;思路:普通做法是把区间排序后遍历区间,未使用的数字标记,对后面没有影响的就再消除标记;但是区间有很多,遍历每个区间会超时;我们可以把区间放...

2018-07-25 09:47:26 178

原创 Balanced Sequence HDU - 6299 (字符串,括号匹配, 贪心)

Balanced Sequence 题目链接:HDU - 6299 题意:n个只包含左右括号的字符串,问如何连接这些字符串可以使得匹配到的括号最多;思路:先把没个字符串自身能匹配的括号去掉,则剩的一定有p个右括号+q个左括号组成;形如))))))((((;要想匹配到的括号最多,则尽量让每个括号都起作用了;如果只包含左括号则把他放在最前边,如果只有右括号把他放在最后边;可以看...

2018-07-25 09:30:46 298

原创 Dividing HDU - 1059 (多重背包)

Dividing 题目链接:HDU - 1059 题意:一共六种大理石,已知每种大理石的价值(第i种大理石的价值就是i)和数量,问能否将大理石均分成两份价值相同的?注:大理石不能切割,只能整块分配;思路:如果大理石总价值为奇数,则一定无法分配,如果是偶数就按多重背包分配,分能否分成价值相同的两份;#include <bits/stdc++.h>using names...

2018-07-25 09:21:04 208

原创 Big Event in HDU HDU - 1171 (多重背包)

Big Event in HDU 题目链接:HDU - 1171 题意:hdu的计算机学院要分成两个院系,原学院有多个设备,知道每种设备的价值和已有的数量,问分配已有的设备,是最公平的,求出分配后每个院分到的设备价值;很明显的一个多重背包,由于数据小,可以转换成01背包;  多重背包代码:#include <bits/stdc++.h>using nam...

2018-07-25 09:11:03 154

原创 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 HDU - 2191 (多重背包)

悼念512汶川大地震遇难同胞——珍惜现在,感恩生活题目链接:HDU - 2191 题意:现共有资金n,采购大米,有m种大米,已知每种大米的价格(每袋),重量(每袋),以及库存;问最多能购得多少大米,大米只能按袋买;思路:每种物品有xi个,是多重背包,可以直接套用多重背包计算,再者,题目数据很小,可以直接把多重背包转换成01背包;  多重背包代码:#include ...

2018-07-25 08:58:03 124

原创 ACboy needs your help HDU - 1712 (分组背包)

ACboy needs your help 题目链接:HDU - 1712 题意:一共有N门课, 有M天时间;花费j天来学习第i门课,获益A[i][j];问如何安排学习时间获益最大;思路:每门课最多学一次,因为分多次学没有意义;分多次学,实际上就是一共学习该门课的天数和,对结果无影响,所以每门课就是一组,然后按分组背包做就好了;#include <bits/stdc++.h...

2018-07-25 08:50:13 168

原创 Gold miner HDU - 4341(分组背包)

Gold miner 题目链接:HDU - 4341题意:大家都玩过黄金矿工吧,老头用钩子钩金矿,已知每个金矿的坐标,价值,以及老头把它钩上来花费的时间,问在T时间内老头能得到的金矿的最大价值,注意:在一条线上的金矿(就是在同一条以老头为起点的射线上),只有把靠近老头的先钩走,才能钩下一个;思路:每块金矿只能钩一次,所以必定是01背包,但是在一条线上的金矿有依赖性,如果钩了第二块,那么...

2018-07-25 08:39:45 154

原创 Guess the number HDU - 5981 (DP)

Guess the number 题目链接:HDU - 5981 题意:一未知数x, 要求在[l, r]区间猜出未知数x,如果猜的数小于x,会给出提示:小了; 如果猜的数大于x,直接告诉你不对,并且在以后的猜测中,只要猜的数不是x,就只告诉你不对;问最坏情况下至少需要猜测几次?及猜测的方案数;这个题和之前做的测试鸡蛋问题一样,只不过多了一步求方案数;两个鸡蛋,100层楼问题链接...

2018-07-22 15:38:32 261

原创 2个鸡蛋,100层楼问题;

题目:现有两个硬度相同的鸡蛋,以及一栋100层的楼,如果鸡蛋在第n层楼摔下去不会碎,在n-1层楼摔下去会碎,那么鸡蛋的硬度是n,如果要测出鸡蛋的硬度n,在最坏情况下最少要测试几次?每测试一次就把一个鸡蛋从x层楼扔下去;只有两个鸡蛋可用,鸡蛋摔碎了就不能用了;题目分析:1:二分????刚开始看到这个题脑子里最先蹦出来的就是二分;每次取一半,log(n)的算法,然后稍微深入分析一下就悲...

2018-07-22 12:29:14 1795

原创 Aninteresting game HDU - 5975 (树状数组lowbit深入理解)

Aninteresting game题目链接:HDU - 5975题意:有1~n个数,将i放入集合中时同时放入了[i-lowbit(i)+1, i-1]区间的数,每向集合中放入一个数就耗费一点体力,所以,向集合中放入i时就是同时放入[i-lowbit(i)+1, i]区间的数,共i-(lowbit(i)+1)+1=lowbit(i)个数,消耗的体力就是lowbit(i);问将区间[l,...

2018-07-22 08:44:33 413 2

原创 Regular Number HDU - 5972 (字符串匹配+bitset妙用)

Regular Number 题目链接:HDU - 5972 题意:一个仅由0~9字符组成的字符串x有n个字符,i位置可选择的字符有ai种,给出一个长串s,找出x能构成的s的所有子串;思路:用对0~9每个字符建一个长度为n的bitset,若该字符在i位置可供选择,就将对应位置置为1;再用一个新的bitset与s对应;#include <bits/stdc++.h>...

2018-07-21 20:01:52 258

原创 Simple Math Problem HDU - 5974

Simple Math Problem 题目链接:HDU - 5974题意:已知a, b,求x, y, 使得x, y,满足x+y=a,lcm(x, y)=b(lcm表示最小公倍数);联立上述两式得:x^2-a*x+b*gcd(x, y)=0;令gcd(x, y)=k;则有x'*k+y'*k=a    (x'+y')*k=a    x'+y'=a/k;而且:x*y/k=b    ...

2018-07-21 19:54:28 158

原创 K-th Number HDU - 6231 (二分+尺取)

K-th Number 题目链接:HDU - 6231 题意:有一个数列a,在a的所有长度不小于k的连续子序列中,把其中的第k大数加入数列b,求数列b的第m大数;思路:所求数一定是数列a中的数,那么就在a 中任选一个数x,若a的所有长度不小于k的连续子序列中第k大数不小于x的子序列一共有Q个,那么x在数列b中至少是第Q大数;若Q<m,说明x可能找小了;若Q>m,说明x找大了...

2018-07-20 21:40:33 187

原创 String HDU - 5672 (尺取)

String 题目链接:HDU - 5672 题意:有一条只由小写字母构成的字符串,问有多少子串中包含不少于k个不同字符;思路:若以l为起点的区间[l, r]中,有k个不同字符,且r处的字符就是第k个不同的字符,那么r后边的区间也一定 至少k个不同字符;那么,以l为起点的区间中,包含至少k个不同字符的区间有n-r个(n是原串长度,下标由0开始);就用尺取法维护这样一个区间;...

2018-07-20 21:28:29 266

原创 Maximize! CodeForces - 939E (三分)

Maximize! 题目链接:CodeForces - 939E 题意:不断向集合中插入一个数,且这个数比集合中所有数都大,然后在集合中找一个子集,使得找到的子集中的最大值减去子集的平均值的差最大;思路:如何选取子集?最后插入的这个数是一定要选的,然后再选小的数,就是一个最大数加上几个用来拉低平均值的小数构成了所需子集;小数一定是从最小值开始连续增加使平均值减小,直到达到一个临界点,再...

2018-07-19 21:05:54 206

原创 Japan POJ - 3067 (树状数组)

Japan 题目链接:POJ - 3067 题意左右两边各有你n个, m个点由下向上,由1开始标号,有k条边,连接左右两边的点,每两条直线相交就有一个交点,不存在重点;问一共几个交点;思路:把k条边按左端点由小到大排序,再按右端点由小到大排序,然后开始连边,每加一条边产生的交点就是之前右端点比该边的右端点大的边的条数;因为我们已经按左端点排好序了,之前一定不会有左端点比他还大的了;...

2018-07-19 20:54:02 307

原创 Cows POJ - 2481 (树状数组)

Cows 题目链接:POJ - 2481 题意:John家里有好多奶牛,所有奶牛都在同一条直线上活动,第i个奶牛活动范围是[Si, Ei],对于两头奶牛i, j来说如果Si<=Sj&&Ei>=Ej&&Ej-Sj<Ei-Si 则奶牛i比奶牛j强壮,也就是说如果j的活动范围在i的活动范围内且不重合的话,奶牛i就比奶牛j强壮;对每个奶牛,求出比他...

2018-07-19 20:43:09 299

原创 Mobile phones POJ - 1195 (二维树状数组)

Mobile phones 题目链接:POJ - 1195 题意:把一个矩阵分为S*S的方格,初始化为0,每次将(x, y)格子里增加a,或者求l<=x<=r&&b<=y<=t的矩阵内方格中数的和;这个题用二维的树状数组;其实和一维一样, 就是多个一维的摞起来构成了二维的;需要注意的是最后求出来的tr[r][t]-tr[l][b]并不是最...

2018-07-19 20:20:51 356

原创 Stars POJ - 2352 (树状数组)

Stars 题目链接:POJ - 2352 题意:平面直角坐标系上有很多星号,把星号分为不同等级,等级是这样定义的:该星号左下方有n星号,则该星号等级为n星号坐标是按y有小到大,再按x由小到大顺序给出;树状数组存x位置上的点的个数,直接根据题目给出的坐标顺序插入横坐标即可,因为要找左下方的星号,那么一定先让左下方的点插入,而且我们是插入的横坐标,所以纵坐标要先按顺序由小到大插入,然...

2018-07-19 20:04:59 255

空空如也

空空如也

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

TA关注的人

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