dp
这是简介
小鱼yn
简介
展开
-
2019ICPC南昌 C And and Pair dp(二项式定理 / dp)
给定一个非常大的非负整数n,计算满足以下条件的整数对(i ,j)(i\,,j)(i,j)的个数:1、0≤j≤i≤n;1、0≤j≤i≤n;1、0≤j≤i≤n;2、i&n=i;and2、i\&n=i;and2、i&n=i;and3、i&j=03、i\&j=03、i&j=0二项式在二进制的情况下,因为i&n=ii\&n=ii&n=i,所以:只有当n某一位为1时,i在这一位才能为1。因为i&j=0i\&j=0i&a原创 2020-06-27 15:12:43 · 276 阅读 · 0 评论 -
树的重心&&树的直径
树的重心树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡.实际上树的重心在树的点分治中有重要的作用, 可以避免N^2的极端复杂度(从退化链的一端出发),保证NlogN的复杂度, 利用树型dp可以很好地求树的重心.求树的重心模板:https://vjudge.net/problem/POJ-3107//树的重...原创 2020-02-03 08:41:11 · 1062 阅读 · 0 评论 -
Educational Codeforces Round 97 C. Chef Monocarp(dp)
https://codeforces.com/contest/1437/problem/C题意:将n个菜同时放进烤箱,第i个菜的最佳烹饪时间是ti,如果第i个菜在T时间被端出,那么对它的不满意值就是 |T−ti|,且在每一个时刻只能端出一个菜,问不满意值和的最小值。注:1≤n≤2001≤n≤2001≤n≤200思路:1、最佳烹饪时间值小的肯定要先取出,所以我们先将这n个物品按照最佳烹饪时间值排序2、设dp[i][j]表示前i-1个物品都取出时,第i个物品在j时刻取出需要花费的最小总时间3、那么d原创 2020-10-28 17:27:51 · 183 阅读 · 0 评论 -
CF #669 (Div. 2)D. Discrete Centrifugal Jumps(线段树/单调队列优化dp)
https://codeforces.com/contest/1407/problem/D题意:给定n个高度,当i<ji<ji<j且满足以下条件之一时,可以从iii跳到jjj:问从1到n的最小步数。思路:设dp[j]dp[j]dp[j]表示从1到jjj的最小步数:1、满足条件2的点iii:①要保证iii~jjj内的数严格小于h[j]h[j]h[j],设pos是向左第一个大于等于h[j]h[j]h[j]的数的位置,我们可以在[pos,j−1][pos,j-1][pos,j−1]的原创 2020-10-17 20:41:29 · 180 阅读 · 0 评论 -
POJ-2373-Dividing the Path【单调队列优化dp】
https://vjudge.net/problem/POJ-2373题意:农夫约翰要用洒水装置给长为L的山脊浇水,并且保证每个洒水装置的浇灌范围不会重叠,也不会流经山脊的末端(每个洒水装置的浇灌半径为A~B的整数)。约翰还有n头奶牛,每头奶牛都有一段特别喜欢的区间,这些区间只能用一个洒水装置浇水。问洒水装置最少需要用多少个。思路:转移方程:dp[i]=min(dp[i−2B]dp[i]=min(dp[i-2B]dp[i]=min(dp[i−2B]~dp[i−2A])+1dp[i-2A])+1dp[i原创 2020-09-06 21:05:18 · 285 阅读 · 1 评论 -
HDU-4122-Alice‘s mooncake shop(单调队列/RMQ 区间最小值)
题意:Alice有一家24小时营业的月饼店,2000年1月1日0点是她营业的第一个小时,Alice会营业m个小时,每个小时的月饼造价不同,造的月饼可以当天卖掉或者放在冰箱(最多存放T小时),一个月饼存放一个小时的花费是S。她有n个订单,求完成这些订单的最小花费。思路:i时刻的订单可以在[i-T,i]中任何一个时间点完成,考虑到冰箱存放的额外花费,每相邻的两个时间点的额外花费相差S,所以我们可以先在每个月饼造价上加上(m-i)* S,然后时刻i每一个月饼的最小花费就是 [i-T,i]中的最小值减去i*S1原创 2020-09-06 19:55:48 · 175 阅读 · 0 评论 -
HDU-6808-Go Running(最小点覆盖、网络流)
http://acm.hdu.edu.cn/showproblem.php?pid=6808题意:张3要求所有人跑步,有一条无限长跑道,每个人可以规定自己跑步的方向,起点,跑步起止时间。另外每个人跑步的速度都是1m/s。张3最后从监控人员哪里得到了n个报告,每个报告给出了某人在某一时候所在的位置,问跑步的最少可能人数是多少。思路:以时间和位置为横纵坐标,将这n个报告对应的点画在坐标系上。因为每个人跑步的速度都是1m/s,所以如果两个点所在直线斜率为1或-1,那么他们就有可能是同一个人,换个角度来说就是原创 2020-08-01 11:13:36 · 200 阅读 · 0 评论 -
Codeforces 510D Fox And Jumping【数论+DP】
题目链接:http://codeforces.com/problemset/problem/510/D题目大意:给你N个数,每个数用的话需要花费ci,如果他站在x位子,选取了ai,那么他可以选择走到(x+ai)或者是(x-ai),走的次数不限。问一开始他站在原点,能否通过选取一些数字使得他能够走到任意位子。思路:其实如果能够组成1的话,就能组成所有任意整数。最终我们也就是需要找出拼凑1的最...原创 2020-01-12 20:09:59 · 334 阅读 · 0 评论 -
Largest Rectangle in a Histogram(DP!)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506我们要求图中长方形最大面积,我们都知道长方形的面积等于长×宽,那怎么选择长和宽呢?我们的思路是这样子的:我们遍历数组,将当前位置上条形的高度作为长方形的宽,然后向左向右延伸,求出以当前高度能够扩展到的最左端和最右端的位置,确定长方形的长度。最后在这些长方形面积中取一个最大值就行了。但是这样有...原创 2019-12-01 16:11:32 · 178 阅读 · 0 评论 -
多重背包的 二进制优化 / 转化为有限制的完全背包
多重背包:有n种物品,每个物品的重量为w[i],每个物品的价值为h[i],每种物品有c[i]个。最朴素的做法中,我们把c[i]个物品i看成c[i]个不同的物品,进而转化成了0-1背包。然后在0-1背包的基础上我们还可以进行二进制优化### 二进制优化我们知道:2^0^,2^1^,2^2^,2^3^,,,2^n^可以组成1~2^(n+1)^-1中的任意数(每个数只能用一次)所以我们可以把c[i]个相同的物品,看成这样的几堆物品:10=**1+2+4**+315=**1+2+4+8**36=*原创 2019-12-01 14:39:51 · 262 阅读 · 0 评论 -
01背包,多重背包,完全背包——总结
可以先看下这篇博客理解下动态规划的做法:[初识动态规划](https://www.cnblogs.com/fancy-itlife/p/4393213.html)写在前面的:这篇博客主要写的是,一个容量为v的背包去装n个物品能获得的最优解的问题**问题简述:现在有一个背包,它能容纳的最大重量为v,问背包所能带走的最大价值是多少?****01背包:有n个物品,每个物品的重量为w[i],每个物品的价值为h[i]。**[对于每个物品不可以取多次,最多只能取一次,之所以叫做01背包,0表原创 2019-07-14 11:13:46 · 257 阅读 · 0 评论