随笔分类 -  dp

Minimizing Maximizer
摘要:题意:最少需要多少个区间能完全覆盖整个区间[1,n]分析:dp[i]表示覆盖[1,i]最少需要的区间数,对于区间[a,b],dp[b]=min(dp[a...b-1])+1;用线段树来维护区间最小值。#include #include #include #include #include #incl... 阅读全文

posted @ 2015-10-25 22:02 积跬步、至千里 阅读(260) 评论(0) 推荐(0)

Mountain Road
摘要:题意:n个车,过一条路,有不同的方向,路上不允许同时有两个方向的车,给出每个车的起始时间,方向,和经过路花费的时间,车最小间隔10个时间,求最后一个车通过路的最早的时间。分析:dp[i][j][0]表示0方向经过i个车,1方向经过j个车,最后在0方向,最后一个车通过路的最早的时间。dp[i][j][... 阅读全文

posted @ 2015-10-25 21:56 积跬步、至千里 阅读(137) 评论(0) 推荐(0)

Garlands
摘要:题意:n个数分成m段,每段偶数个数,最小化和最大段的半个区间的数字和。分析:先想到了二分,dp求能分成的最小段数。#include #include #include #include #include #include #include #include #include #include #in... 阅读全文

posted @ 2015-10-25 21:47 积跬步、至千里 阅读(176) 评论(0) 推荐(0)

Pitcher Rotation
摘要:题意:n个人m个对手给出每个人能战胜每个敌人的概率,现在有g个比赛,每个人赛完后要休息4天(可重复用),求能获得胜利的最大期望个数。分析:因为只有每个人5天就能用一次,所以对于每个人来说,只有得分前5的会被使用上,所以后4维状态只需要5^4,进行状态转移dp[i][j][k][l][p]表示第i场比... 阅读全文

posted @ 2015-10-25 21:40 积跬步、至千里 阅读(134) 评论(0) 推荐(0)

Chopsticks
摘要:题意:n个数3个相邻是一组,求选k组使得,各组组内较小的两个数的差之和最小。分析:对于每个数选或不选的问题,dp[i][j]表前i个数选了j组得到的最小和。dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+差)选或不选,数应该降序排列。#include #include #i... 阅读全文

posted @ 2015-10-25 21:30 积跬步、至千里 阅读(249) 评论(0) 推荐(0)

Learning Vector
摘要:题意:给出n组x,y增量,从(0,0)开始以x,y坐标增加后等到的终点坐标,可以构成一个面积,再以这个终点为起点再增加,以此类推,使用增量顺序不同,得到的面积不,求用k组增量能得到的最大的面积。分析:先按(x,y)和(0,0)确定的斜率降序排列(这个贪心好想)dp[j][k]表示用j组增量能达到右边... 阅读全文

posted @ 2015-10-25 21:22 积跬步、至千里 阅读(158) 评论(0) 推荐(0)

Dyslexic Gollum
摘要:题意:求长度是n的二进制串中,不含长度大于等于k的回文串的个数分析:dp[i][j][k]表示长度i,后11位状态是j不含长度大于等于k的回文串的个数(因为k最大是10,所把后11位状态压缩,dp[i][j][k]=dp[i-1][j>>1][k]+dp[i-1][j>>1|(1#include #... 阅读全文

posted @ 2015-10-25 21:09 积跬步、至千里 阅读(156) 评论(0) 推荐(0)

Locker
摘要:题意:有2个数字串,每次可以变化1-3位(每位+1或-1(0-9,9-0)可循环),求由1串变到2串的最小用的次数。分析:dp[i][num]表示变到第i位时最后两位组成的数是num时最小次数(因为dp[i-1][num1],num1肯定是i位数的i-1,i-2位数,dp[i][num]=min(d... 阅读全文

posted @ 2015-10-25 20:59 积跬步、至千里 阅读(294) 评论(0) 推荐(0)

Free Candies
摘要:题意:有4堆东西,每堆有n个每个有一个颜色,现在有一个篮子最多能装5个不同的颜色的东西,每次都从堆顶拿,当篮子出现两个相同颜色,可以获得这两个东西,求获得的最大数量分析:因为就4推,可以把各堆的取得状态表示出来,用记忆化搜索,因为最多可以装5个作为转移的状态。#include #include #i... 阅读全文

posted @ 2015-10-25 20:11 积跬步、至千里 阅读(144) 评论(0) 推荐(0)

Storage Keepers
摘要:题意:n个仓库,m个人申请看管仓库,一个人可以看管多个仓库,一个仓库只能被一个人看管,每个人都有一个能力值,他看管的仓库的安全度U是能力值/看管仓库数,安全线L是U中的最小值,有多少能力公司发多少工资,求在保证安全线最高的情况下,公司花费最小。分析:状态好想dp[i][j],i个人看管j个仓库能达到... 阅读全文

posted @ 2015-10-18 20:56 积跬步、至千里 阅读(211) 评论(0) 推荐(0)

Stamps and Envelope Size
摘要:题意:容量为s的信封,给n组邮票的面值,求哪一组能组成的连续的面值的最大值最大,若有多组答案,输出面值数量最小的一组,若数量相等,输出最大面值最小的一组,若最大面值相等,输出第二大面值最小的一组,依次类推。分析:可以从小到大枚举面值直到不能组成,dp[i][j]是否能组成面值为i,用邮票数量为j d... 阅读全文

posted @ 2015-10-17 22:33 积跬步、至千里 阅读(160) 评论(0) 推荐(0)

Alibaba
摘要:题意:有n个东西在一条路上,已知他们的位置,和能获得他们的最后期限,求能获得n个东西的最小总时间。分析:想到了求”未来费用问题",dp[i][j][k]表示获得区间长i起点为j的所有东西,k=0最后点在左边界,k=1最后点在右边界,花费最小的费用。dp[i][j][0]=min(dp[i-1][j+... 阅读全文

posted @ 2015-10-17 22:20 积跬步、至千里 阅读(168) 评论(0) 推荐(0)

Cyborg Genes
摘要:题意:给两个字符串,求最短的以两字符串为子序列的字符串和个数分析:最长公共子序列的变形,num[i][j]表示个数#include #include #include #include #include #include #include #include #include #include #in... 阅读全文

posted @ 2015-10-17 22:17 积跬步、至千里 阅读(111) 评论(0) 推荐(0)

Cake slicing
摘要:题意:n*m的方格中有k个点,现在要把方格分开使得每个点在一个部分,每分一次花费边长的费用,求完成花的最小费用分析:dp[sx][sy][ex][ey]表示分割起点(sx,sy)终点(ex,ey)的矩形最小花费,判断一下矩形内有无点,无点置成无穷大(不会被选择),若有一个点则完成分割值为0,若多于一... 阅读全文

posted @ 2015-10-17 22:11 积跬步、至千里 阅读(226) 评论(0) 推荐(0)

Longest Run on a Snowboard
摘要:题意:n*m的矩阵,求矩阵中最长下降的序列的长度。分析:dp[i][j]表示以i,j为起点的最长下降序列,然后记忆化搜索。#include #include #include #include #include #include #include #include #include #include... 阅读全文

posted @ 2015-10-17 22:02 积跬步、至千里 阅读(183) 评论(0) 推荐(0)

Color Length
摘要:题意:给出两个字符串,求把两字符串组成一个字符串使的字符串中的相同字母的最远距离的和最小。分析:本题关键在于怎么计算距离和的方法上。dp[i][j]表示处理到长度i的a串,长度j的b串还需要的计算的距离dp[i][j]=min(dp[i+1][j],dp[i][j+1])+num[i][j](表示组... 阅读全文

posted @ 2015-10-17 21:58 积跬步、至千里 阅读(155) 评论(0) 推荐(0)

Team them up!
摘要:题意:给出n个人以及认识其他人的情况,现在要把所有人分成两队,每队至少一人,求使两队人数差距最小且每队内部的人都相互认识的分队情况。分析:这道题让我学习到了不少,首先看到使差距最小就想到了背包,但是不会表示分队情况。看了别人的思路,这个很明显是要判断是否是二分图,让不是相互认识的两人连一条边,若不是... 阅读全文

posted @ 2015-10-17 21:43 积跬步、至千里 阅读(210) 评论(0) 推荐(0)

The Bookcase
摘要:题意:有n本宽w高h的书,向三层书架上放,每层不能为空,求占用的整体的最小面积(总高度*三层中最宽的)分析:不太好想,dp[i][j]表示第一层宽度为i第二层为j放的最小高度dp[i][j]=min(dp[i-w[i]][j],dp[i][j-w[i]])放在第一、二层取最小,当i,j放的是第一本书... 阅读全文

posted @ 2015-10-17 21:28 积跬步、至千里 阅读(165) 评论(0) 推荐(0)

Fixing the Great Wall
摘要:题意:在一条线上,有n个坏的地方要修机器人修,机器人的移动速度V,若坏的地方立即被修花费ci,若没修,每单位时间增加d,出去机器人的开始位置,求修完n个地方的最小花费。分析:非常经典,求解“未来费用”的问题,考虑区间完成最后一定在区间边界上,才能保证最优。dp[i][j][k]表示修完区间长i起点为... 阅读全文

posted @ 2015-10-17 20:42 积跬步、至千里 阅读(237) 评论(0) 推荐(0)

Bigger is Better
摘要:题意:有n个火柴棒,已知拼成9个数字花费的数目,求能拼出的能整除m的最大数分析:dp[i][j]表示,用i个火柴棒,拼出的数余m余数为j时的最大数int tmp=dp[i][j]*10+k;(k是拼成的某个数)dp[i+num[k]][tmp%m]=max(dp[i+num[k]][tmp%m],t... 阅读全文

posted @ 2015-10-13 22:46 积跬步、至千里 阅读(284) 评论(0) 推荐(0)

导航