HDU
HAI__嗨I起来
IT
展开
-
HDU 5242Game 树上的贪心 树形dp 求出使K条链的权值总和最大
树链剖分找权值最大的前k条链题目大意:给定一个树形的游戏网络,可以从根节点出发k个人,每个人可以沿着一条路径走下去,不能回头,出口在各个叶子节点,在路过一个节点时可以 获得该点的权值,每个点的权值只能被获得一次,问k个人怎样走最后可以获得的权值最多解题思路:首先从反向建立一棵有向树(从叶子节点到根节点),首先dfs1找出每个节点到根节点的最大权路径,然后按权值递减排序原创 2016-05-21 22:05:27 · 874 阅读 · 0 评论 -
HDU 1081 To The Max
点击打开链接题意:在矩阵中找出一个和最大的子矩阵思路分析:通过转换成最大字段和第一步:s[i][k]=a[1][k]+ …… +a[i][k]第二步:t[k]=s[j][k]-s[i][k];第三步:求t[]的最大字段和原因:假设最终的子矩阵和行是i、j;那么最终是求(a[i][1]+ …… +a[j][1],a[i][2]+ …… +a[j][2], ……原创 2016-04-07 22:06:19 · 190 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese 记忆化搜索
点击打开链接老鼠每次只能走k步停下来,停下的这个位置只能比上一个停留的位置大,并获取其价值,每次只能水平或垂直走,问最大能得到的价值心得记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动态规划要低原创 2016-04-07 18:38:28 · 277 阅读 · 0 评论 -
HDU1160 FatMouse's Speed 带路径的最长上升子序列问题
点击打开链接题目大意是找到一个最多的老鼠序列,使得序列中的老鼠的体重满足递增,相应老鼠的速度满足递减。思路:就是先按体重递增进行sort排序,然后按照体重找到最长递减子序列即可,用动态规划做比较简单。态dp[i]表示前i个老鼠中的最长递减子序列长度,状态转移方程为dp[i] = max{dp[ j ]} + 1, 最后找出最大的dp[i]即可。最后的路径用栈输出就可#inclu原创 2016-04-05 21:18:16 · 530 阅读 · 0 评论 -
HDU 5631 Rikka with Graph 求从n+1 边中删除一些边使图依然联通
点击打开链接题目大意:n个顶点,n+1条边,问删除几个边之后仍是连通图的方案数有多少?思路:如果图连通的话,只能删1~2条边,而且题目数据小,所以暴力就好。#include#include#include#include#include#include#include#include#define PI acos(-1)#define eps 0.00000001原创 2016-02-26 21:04:12 · 927 阅读 · 0 评论 -
HDU 1257 最少拦截系统 贪心
最少拦截系统Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28970 Accepted Submission(s): 11349Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹原创 2015-12-14 21:44:34 · 240 阅读 · 0 评论 -
HDU 1789Doing Homework again 贪心
Doing Homework againTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9777 Accepted Submission(s): 5722Problem DescriptionIgnatius原创 2015-12-18 13:52:40 · 288 阅读 · 0 评论 -
HDU 1024 最大m个子段和滚动数组
Max Sum Plus PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22175 Accepted Submission(s): 7446Problem DescriptionNow I think原创 2016-01-22 15:47:06 · 369 阅读 · 0 评论 -
HDU 1978How many ways dp+记忆化搜索。。
How many waysTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4150 Accepted Submission(s): 2432Problem Description这是一个简单的生存游戏,你控制一原创 2015-12-18 19:12:18 · 327 阅读 · 0 评论 -
HDU 1069 最大子序列和(不连续)变形
Monkey and BananaTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10416 Accepted Submission(s): 5410Problem DescriptionA group of原创 2015-12-13 23:03:45 · 246 阅读 · 0 评论 -
最长上升子序列(LIS)长度的O(nlogn)算法
hdu 1950 Bridging signalshttp://acm.hdu.edu.cn/showproblem.php?pid=1950===================================最长上升子序列(LIS)的典型变形,熟悉的n^2的动归会超时。LIS问题可以优化为nlogn的算法。定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为转载 2016-01-21 10:45:34 · 375 阅读 · 0 评论 -
HDU 1149 背包完全装满(求最小)
Piggy-BankTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17482 Accepted Submission(s): 8806Problem DescriptionBefore ACM can do原创 2015-12-18 22:59:08 · 509 阅读 · 0 评论 -
HDU 1058 Humble Numbers dp
Humble NumbersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 21609 Accepted Submission(s): 9439Problem DescriptionA number whose原创 2015-12-17 17:57:46 · 277 阅读 · 0 评论 -
HDU 1503 Advanced Fruits 由两个字符串组成一个最短新串 (最长公共子串变形)
点击打开链接题意:给出两个串让你再不破坏每个串的字符顺序的情况下 输出一个由两个串组成的新串(保证新串长度最小)最长公共子串变形 ,通过最长公共子串的方式找到相同字符的坐标位置,然后通过插入的方式将新串输出方法一:#include#define INF 0x3f3f3f3f#define MAXN 1000using namespace std;int dp原创 2016-04-12 15:40:19 · 280 阅读 · 0 评论 -
HDU 2050 龟兔赛跑 DP
点击打开链接把起点和终点比作加油站,那总共有n+2个加油站了,每次都求出从第0个到第j个加油站(j#include#include#include#includeusing namespace std;int p[100000];double dp[1000];///0为充电 1 充电double t1[2];int main(){ int L,N,C,T,v原创 2016-04-08 17:40:41 · 391 阅读 · 0 评论 -
HDU 5672 查找子串的个数 思维 双指针
点击打开链接有一个明显的性质:如果子串(i,j)包含了至少kkk个不同的字符,那么子串(i,k),(j因此对于每一个左边界,只要找到最小的满足条件的右边界,就能在O(1)时间内统计完所有以这个左边界开始的符合条件的子串。寻找这个右边界,是经典的追赶法(尺取法,双指针法)问题。维护两个指针(数组下标),轮流更新左右边界,同时累加答案即可。复杂度 O(lengt原创 2016-04-23 21:44:31 · 842 阅读 · 0 评论 -
HDU 5671 矩阵的交换行、交换列,整行加一个数 思维题
点击打开链接对于交换行、交换列的操作,分别记录当前状态下每一行、每一列是原始数组的哪一行、哪一列即可。对每一行、每一列加一个数的操作,也可以两个数组分别记录。注意当交换行、列的同时,也要交换增量数组。输出时通过索引找到原矩阵中的值,再加上行、列的增量。复杂度O(q+mn)O(q+mn)O(q+mn)#include#include#includeusing name原创 2016-04-22 21:44:02 · 1338 阅读 · 0 评论 -
HDU 1502 三维dp加大数
F[a][b][c]=F[a-1][b][c]+F[a][b-1][c]+F[a][b][c-1];a>=b>=c;package zzz;import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String args[]){ Sca原创 2016-05-07 09:51:24 · 290 阅读 · 0 评论 -
HDU 3008 dp打怪血量 三重循环调二维背包或一维
点击打开链接题意:人有100血和100魔法,每秒增加 t 魔法(不能超过100)。n个技能,每个技能消耗a[i]魔法值,造成b[i]伤害。普通攻击不消耗魔法,每秒1伤害。boss有100血,每秒对人造成q伤害。每秒内,人先攻击,boss后攻击。问最少多少秒杀死boss?分析:boss对人每秒q伤害,人的死亡时间是确定的,T = 100/q + ( 100%q?1:0 )原创 2016-05-06 21:34:11 · 656 阅读 · 0 评论 -
HDU 1227 dp距离和最小,中位数的应用
在n个商店中建m个仓库,使各个商店到仓库的路程之和最小,商店到哪个仓库是有选择的,总之路程之和要最小!思路:从第i个商店到第j个商店建一个仓库,这个仓库所建的位置一定是dis[(i+j)/2],即建在它的中位数处,所以,这个增加值就是case[i][j]=abs(dis[k]-dis[(i+j)/2])(i我们要把它初始为一个尽可能大的数,要找dp[i][j],原创 2016-05-06 20:35:41 · 884 阅读 · 0 评论 -
HDU 2896 AC自动机
G++交MLE C++交AC#include#include#include#include#includeusing namespace std;struct node{ node *next[128]; node *fail; int num; node() { num=0; fail=NULL;原创 2016-05-06 12:11:34 · 328 阅读 · 0 评论 -
HDU 1074 Doing Homework 状态压缩dp
点击打开链接有n门课,每门课有截止时间和完成所需的时间,如果超过规定时间完成,每超过一天就会扣1分,问怎样安排做作业的顺序才能使得所扣的分最小///状态方程为:Dp[next]=min{Dp[next-1<<i]+i的罚时} 枚举i与next///具体实现为: 对每种状态遍历n项任务,如果第i项没有完成,则计算出Dp[next]的最优解#include#原创 2016-04-19 16:22:14 · 223 阅读 · 0 评论 -
hdu3400 _嵌套三分 三分求极限
给出两条平行的线段AB, CD,然后一个人在线段AB的A点出发,走向D点,其中,人在线段AB上的速度为P, 在线段CD上的速度为Q,在其他地方的速度为R,求人从A点到D点的最短时间。在有规律的数据上优化,三分和二分的思路有点类似,主要用于优化 枚举的样例的次数主要用于凹型数据或者是凸型数据此题为嵌套三分枚举,下面思路感觉比较详细所以就从网上拷贝了下来原创 2016-04-29 22:08:16 · 517 阅读 · 0 评论 -
HDU 2438 Turn the corner【三分】
点击打开链接给出汽车当前的街道宽度为x,要转弯进入的街道宽度为y,给出汽车的长度和宽度,为能否通过 解题思路:如果给我一道三分的题目,我还真的不知道往哪里去想。车转弯的时候车有段与地面的夹角角度是从0度变化到90度的。也就是转弯的时候需要一个最大的宽度才能过去。 否则就卡在 那里了。这个宽度PH是先增加后减少的。是个凸型函数,因此是三分求的极值。原创 2016-04-29 16:08:36 · 366 阅读 · 0 评论 -
HDU 1158 Employment Planning dp
点击打开链接///题意 n表示月数每个月都要保证最少有num[i]个人存在并且雇佣一个人解雇一个人需要花钱,并且雇佣了之后还要每个月发工资给他们求实现n个月的人员分配工作最少花费多少钱思路:状态表示: Dp[i][j]为前i个月的留j个人的最优解;Num[i]j>Max{Num[i]}之后无意义,无谓的浪费 记Max_n=Max{Num[i]}; Dp[i原创 2016-04-11 15:18:22 · 303 阅读 · 0 评论 -
HDU 1224 Free DIY Tour 距离的更新 bellman-Ford变形 dp ***
点击打开链接题目大意:给出一些城市的point,从起点出发经过一些城市最终回到起点,在这个过程中经过的下一个城市的point值要求不低于现在城市的point值(最后回到城市1的情况不算),问最后能够达到的最大point值之和,并输出路径。#include#define INF 0x3f3f3f3f#define M 100001using namespace std;i原创 2016-04-13 17:51:02 · 336 阅读 · 0 评论 -
HDU 1080 Human Gene Functions 带权的最长公共子序列
点击打开链接题意:给定两个字符串 s1 和 s2 ,在两个串中都可以插入空格,使两个串的长度最后相等,然后开始匹配,怎样插入空格由匹配规则得到的值最大。分析:LCS的变形d[i][j]=max(d[i-1][j-1]+match[ s1[i] ][ s2[j] ] , d[i-1][j]+match[ s1[i] ][ '-' ] , d[i][j-1]+match[ '-' ][ s原创 2016-04-12 16:56:02 · 491 阅读 · 0 评论 -
HDU 搬砖
搬砖Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 4646 Accepted Submission(s): 1060Problem Description 小明现在是人见人爱,花见花开的高富帅,整天沉浸在美原创 2015-11-29 22:24:00 · 498 阅读 · 0 评论 -
HDU 5592 线段树根据逆序数求原序列
ZYB's PremutationTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 758 Accepted Submission(s): 359Problem DescriptionZYB has a原创 2015-12-12 19:06:36 · 647 阅读 · 0 评论 -
HDU 1421 搬宿舍 dp 匹配最小 数对平方和
搬寝室Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22548 Accepted Submission(s): 7643Problem Description搬寝室是很累的,xhd深有体会.时间追述2006年原创 2015-12-16 09:39:45 · 332 阅读 · 0 评论 -
HDU 5500 Reorder the Books
Reorder the BooksTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 218 Accepted Submission(s): 146Problem Descriptiondxy has a co原创 2015-10-11 10:37:13 · 595 阅读 · 0 评论 -
HDU 1203概率dp
I NEED A OFFER!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 21079 Accepted Submission(s): 8434Problem DescriptionSpeakless很早就想原创 2015-10-24 22:01:28 · 387 阅读 · 0 评论 -
HDU 5463
Clarke and minecraftTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 325 Accepted Submission(s): 168Problem DescriptionClarke is a原创 2015-09-20 21:12:15 · 304 阅读 · 0 评论 -
HDU 5455
Fang FangTime Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 278 Accepted Submission(s): 127Problem DescriptionFang Fang says she wan原创 2015-09-19 21:15:05 · 438 阅读 · 0 评论 -
HDU 5461 沈阳网络赛
Largest PointTime Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 235 Accepted Submission(s): 112Problem DescriptionGiven the sequence原创 2015-09-19 21:11:16 · 576 阅读 · 0 评论 -
HDU 4764 博弈论
DescriptionTang and Jiang are good friends. To decide whose treat it is for dinner, they are playing a game. Specifically, Tang and Jiang will alternatively write numbers (integers) on a white boa原创 2015-09-10 11:23:21 · 481 阅读 · 0 评论 -
HDU 5119 DP 滚动数组,dp求异或
Happy Matt FriendsTime Limit: 6000/6000 MS (Java/Others) Memory Limit: 510000/510000 K (Java/Others)Total Submission(s): 1544 Accepted Submission(s): 612Problem DescriptionMatt has N原创 2015-10-04 21:54:02 · 310 阅读 · 0 评论 -
HDU 5120 两圆环覆盖的面积(几何)
IntersectionTime Limit: 4000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)Total Submission(s): 1340 Accepted Submission(s): 516Problem DescriptionMatt is a big fa原创 2015-10-04 20:23:57 · 520 阅读 · 0 评论 -
HDU 5475 网赛
An easy problemTime Limit: 8000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 322 Accepted Submission(s): 170Problem DescriptionOne day, a usele原创 2015-09-26 22:15:46 · 463 阅读 · 0 评论 -
HDU 5477A Sweet Journey网赛
A Sweet JourneyTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 175 Accepted Submission(s): 87Problem DescriptionMaster Di plans t原创 2015-09-26 21:11:03 · 383 阅读 · 0 评论