随笔分类 -  DP

hdu 5965 扫雷
摘要:题意:三行n列的棋盘,给出第二列的每个格子的雷数a[i](代表周围八个格子的地雷数量,中间那一行肯定没地雷),问有多少种放雷方案 思路:每一列只能放0,1,2,我们对于第一列进行枚举,dp[i]代表每一列雷数目,所以dp[2]=a[1]-dp[1],dp[3]=a[2]-dp[1]-dp[2]... 阅读全文

posted @ 2017-09-28 16:09 hhhhx 阅读(165) 评论(0) 推荐(0)

Codeforces Round #436 (Div. 2) E. Fire
摘要:题意:给你n个需要救得东西,每个东西给出t,d,p,表示需要花费t时间,在d时间之前,价值为p,问救出最多价值,并把每个东西序号输出,比如 3 3 4 ,这就无法救出 思路:dp,dp[i][j]表示救出第i个花费j时间救出最大价值,dp[i][j]=max(dp[i][j],dp[i-1][j-a 阅读全文

posted @ 2017-09-26 12:10 hhhhx 阅读(142) 评论(0) 推荐(0)

Manthan, Codefest 17 C. Helga Hufflepuff's Cup
摘要:题意:给你一个有n个节点的树,每个节点的安全级别为1-m,但不是数字越大安全性越好,安全性最高为k,当一个节点安全性为k,和他相邻的节点的安全性可为(1....k-1),只有最多x个节点的安全性为k,问有多少分配方案 思路:树形dp,dp[i][j][x]表示以i为根的树有j个k安全性的时候,这个节 阅读全文

posted @ 2017-09-26 10:39 hhhhx 阅读(125) 评论(0) 推荐(0)

hdu 3664 Permutation Counting
摘要:题意:一个序列A的值为A[i]>i的个数,问给出n,m,使得n个数排列值为m的个数 思路:dp,dp[i][j],相当于i个数价值为j,那么我是不是可以把第i个数放到第i个位置(即dp[i-1][j],还可以把i-1个数产生价值的位置和i换一下,价值不变(即dp[i-1][j]*j),还可以从dp[ 阅读全文

posted @ 2017-09-21 17:20 hhhhx 阅读(106) 评论(0) 推荐(0)

2017 JUST Programming Contest 3.0 J. Boxes Game
摘要:题意:n个价值的东西,A,B两个人可以从最左或最右拿加入自己的分数,都想尽量大,问A-B 思路:dp[i][j]表示当前这个人取l-r区间的最大值是多少,即为max(sum(a[l]+...a[r])-dp[l][r-1],sum(a[l]+...a[r])-dp[l+1][r]); 阅读全文

posted @ 2017-09-15 19:15 hhhhx 阅读(222) 评论(0) 推荐(0)

Educational Codeforces Round 28 B. Math Show
摘要:题意:我有n个任务,每个任务是相同的,每个任务分为k个子任务,给出k个子任务的花费时间,每完成一个子任务+1分,但是我完成一个大任务(即k个子任务)可获得k+1分,我现在有w时间,问最大分数获得 思路:dp,dp[j]表示我获得该积分消耗的最少时间, dp[j+x] =min(dp[j+x],dp[ 阅读全文

posted @ 2017-09-08 14:46 hhhhx 阅读(151) 评论(0) 推荐(0)

Codeforces Round #336 (Div. 2) D. Zuma
摘要:题意:给出一个数列,一次能消除一个回文数列,问最少多少次 思路:dp+搜索 阅读全文

posted @ 2017-09-01 14:33 hhhhx 阅读(132) 评论(0) 推荐(0)

hdu 2660
摘要:题意:从n个物品中选出k个,给出每个物品的价值,重量,并且重量不能超过w 思路:dp[i][j]表示重量为i时选j个的最大价值 dp[i][j]=max(dp[i][j],dp[i-b[k]][j-1]+a[k]], DFS 阅读全文

posted @ 2017-08-29 12:39 hhhhx 阅读(129) 评论(0) 推荐(0)

hdu 6170
摘要:题意:A,B2个字符串,.可以代替任意字符,*表示前面那个字符的任意次(0,1,2....,问是否完全匹配 思路:dp[i][j]表示A第i个B第j个是否匹配 阅读全文

posted @ 2017-08-23 15:29 hhhhx 阅读(119) 评论(0) 推荐(0)

bzoj 4197 寿司晚宴
摘要:4197: [Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 i 种寿司的美 阅读全文

posted @ 2017-08-21 14:29 hhhhx 阅读(136) 评论(0) 推荐(0)

hdu 5569
摘要:题意:一个矩阵,从(1,1)走到(n,m),只能右,下,问最短路径和最短,路径和为走过的点a1*a2+a2*a3+..... 思路:暴力转移即可 阅读全文

posted @ 2017-08-11 16:15 hhhhx 阅读(112) 评论(0) 推荐(0)

bzoj 2748
摘要:1 #include 2 using namespace std; 3 const int N=1005; 4 int dp[55][1010]; 5 6 int main(){ 7 int n,s,e; 8 cin>>n>>s>>e; 9 dp[0][s]=1; 10 int x; 11 for(int i=1;i=0;j--){ 1... 阅读全文

posted @ 2017-08-11 15:43 hhhhx 阅读(98) 评论(0) 推荐(0)

codeforces Testing Round #12
摘要:A题意:问l,r之间多少个数整除k 思路:XJB判断(不要抱着想少几种判断还能过的心态疯狂交。。。 B题意:问有多少个一点都不重合的区间 思路:贪心 C题意:问有多少个长度为K的上升子序列 思路:dp[i][j]表示以i结尾的j长度子序列,那么他就+上前面比她小的dp[ii][j-1],树状数组维护 阅读全文

posted @ 2017-08-09 14:08 hhhhx 阅读(109) 评论(0) 推荐(0)

bzoj 4300 绝世好题
摘要:4300: 绝世好题 Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。 Input 输入文件共2行。 第一行包 阅读全文

posted @ 2017-07-31 15:34 hhhhx 阅读(120) 评论(0) 推荐(0)

codeforces #271(div2) E
摘要:题意:给出n,d,和一个数列,求一个最长子序列,相邻的两个数绝对值>=d;,输出长度和位置。 思路:dp[i]表示以当前这个数字为终点形成的最大长度,这样的话找位置的时候就是往前找dp[i]-j(1<=j<dp[i]),这里用到线段树来优化 对于一个数字A,他的前一个数字的区间在(1,A-d),(A 阅读全文

posted @ 2017-07-30 15:26 hhhhx 阅读(159) 评论(0) 推荐(0)

hdu 4283
摘要:题意:给出个A数列,问是否能用栈的规则控制这些数的进出,使得a[i]*i最小 思路:首先我们得知道,如果当前这个数字是第k个出来的,那么这个数字后面的k-1个数字肯定是(1 k-1)出来的,当然这k-1个数字也有可能打乱顺序出来 dp[i][j]表示i到j中这些数字按照1 (j-i+1)排列组合的某 阅读全文

posted @ 2017-07-29 11:08 hhhhx 阅读(155) 评论(0) 推荐(0)

codeforces prblem 484 D
摘要:题意:一个数列,我们可以把他分成若干段,每段的值为最大值减去最小值,问最大的值和为多少 思路:肯定是单调的放在一起,那么峰值该如何处理,要么放在前面段,要么后面段,如:1 3 4 1 ,或者 1 3 7 6 阅读全文

posted @ 2017-07-28 20:28 hhhhx 阅读(156) 评论(0) 推荐(0)

codeforces prblem 375 b
摘要:题意:给出个只有0,1的矩阵,我们可以交换任意行,问最大的全1矩阵面积是多少 思路:行的全1的段我们无法改变,所以得尽量把该列有1的这些行放在一起,然后根据能向左延伸多少全1格排序 阅读全文

posted @ 2017-07-28 16:12 hhhhx 阅读(132) 评论(0) 推荐(0)

codeforces contest/5/problem/C
摘要:题意:求最长连续符合的(),和个数 思路:dp[i]表示以i为结尾的最长连续合法(),那么当我们匹配到一个()时,是不是dp[)的位置]=()的长度+dp[(前一个位置] 阅读全文

posted @ 2017-07-28 15:07 hhhhx 阅读(125) 评论(0) 推荐(0)

hdu 5273
摘要:题意:求任意一个区间的逆序对 思路:f[i][j]表示i到j之间与点j的逆序对,dp[i][j]表示i到j这区间的逆序对,dp[i][j]=dp[i][j-1]+f[i][j] 阅读全文

posted @ 2017-07-28 13:48 hhhhx 阅读(134) 评论(0) 推荐(0)

导航