随笔分类 - DP
摘要:Problem Statement Cat Noku has just finished writing his first computer program. Noku's computer has m memory cells. The cells have addresses 0 throug
阅读全文
摘要:水A - Multiplication Table不要想复杂,第一题就是纯暴力代码:#include #include #include #include using namespace std;const int N = 1e5 + 10;const int INF = 0x3f3f3f3f;in...
阅读全文
摘要:整理一下我之前做过的01背包的基础题目,以后不断更新PS:限于篇幅,每道题目只给出粗略分析以及核心代码1. POJ 3624Charm Bracelet 这题就是赤裸裸的01背包裸题,不过开二维的数组似乎不行,那么一维能节省空间。背包的第二个for循环是倒序的,这是因为dp[i][j]是由dp[i...
阅读全文
摘要:水 A - Ilya and Diplomas 贪心 || 二分 B - Pasha and Tea 题意:有n个girl和n个boy喝茶,茶杯的容量不等,boy喝的是girl的两倍且boy喝的一样多,girl喝的一样多,问主人最多能倒出多少水 分析:第一反应是用二分搜索girl喝的茶容量,可惜写搓
阅读全文
摘要:1. LIS (Longest Increasing Subsequence) O (n^2): O (nlogn): 2. LCS (Longest Common Subsequence) 3. LCIS (Longest Common Increasing Subsequence) 4. LPS
阅读全文
摘要:题目传送门题意:(摘自LRJ《训练指南》)手机在蜂窝网络中的定位是一个基本问题。假设蜂窝网络已经得知手机处于c1, c2,…,cn这些区域中的一个,最简单的方法是同时在这些区域中寻找手机。但这样做很浪费带宽。由于蜂窝网络中可以得知手机在这不同区域中的概率,因此一个折中的方法就是把这些区域分成w组,然...
阅读全文
摘要:题目传送门题意:n个歹徒进饭店,可变化宽度的门,范围[0, k],每个歹徒进门在ti时间进门,身材si,进去后有pi的成功值,问最大的成功值分析:首先按照进门时间排序,dp[i][j] 表示第i个歹徒在门大小为j的时候进门的最大成功值,那么状态转移方程:dp[i][j] = dp[i-1][k] +...
阅读全文
摘要:题目传送门题意:n个饭店在一条直线上,给了它们的坐标,现在要建造m个停车场,饭店没有停车场的要到最近的停车场,问所有饭店到停车场的最短距离分析:易得区间(i, j)的最短距离和一定是建在(i + j) / 2的饭店,预处理出(i, j)的距离和sum[i][j],mark[i][j] 表示区间的最优...
阅读全文
摘要:题目传送门题意:教授给学生上课,有n个主题,每个主题有ti时间,上课有两个限制:1.每个主题只能在一节课内讲完,不能分开在多节课;2. 必须按主题顺序讲,不能打乱。一节课L时间,如果提前下课了,按照时间多少,学生会有不满意度。问最少要几节课讲完主题,如果多种方案输出不满意度最小的分析:dp[i]表示...
阅读全文
摘要:题目传送门题意:题意难懂,就是一个小偷在m天内从城市1飞到城市n最小花费,输入的是每个城市飞到其他城市的航班。分析:dp[i][j] 表示小偷第i天在城市j的最小花费。状态转移方程:dp[i][j] = min (dp[i-1][k] + cost[k][j][t%day]) t表示在t天时k飞往j...
阅读全文
摘要:题目传送门题意:n首个按照给定顺序存在m张光盘里,每首歌有播放时间ti,并且只能完整的存在一张光盘里,问最多能存几首歌分析:类似01背包和完全背包,每首歌可存可不存,存到下一张光盘的情况是当前存不下了。dp[i][j][k] 表示前i首歌,存在前j张光盘,光盘已存k时间时最多能存多少歌曲。状态转移方...
阅读全文
摘要:以后每做完一场CF,解题报告都写在一起吧暴力||二分A - Bear and Elections题意:有n个候选人,第一个候选人可以贿赂其他人拿到他们的票,问最少要贿赂多少张票第一个人才能赢分析:正解竟然是暴力!没敢写暴力,卡了很久,导致这场比赛差点爆零!二分的话可以优化,但对于这题来说好像不需要。...
阅读全文
摘要:题目传送门题意:给出一些砖头的长宽高,砖头能叠在另一块上要求它的长宽都小于下面的转头的长宽,问叠起来最高能有多高分析:设一个砖头的长宽高为x, y, z,那么想当于多了x, z, y 和y, x, z的砖头,如果i能叠在j上,那么g[i][j] = true,转换成DAG问题,dp[i]表示第i块叠...
阅读全文
摘要:题目传送门题意:一个置换群,经过最少k次置换后还原。问给一个N个元素,在所有的置换群里,有多少个不同的k。分析:这道题可以转化成:N =Σai ,求LCM (ai)有多少个不同的值。比如N=10时,k可为:1,2,3,2*2,5,2*3,7,2*2*2,3*3,2*5,2*2*3,2*7,3*5,2...
阅读全文
摘要:题目传送门题意:有n个金矿,每个金矿有抓取的消耗的时间和价值,矿工在原点,问在T时间内能得到的最大的价值分析:唯一和01背包不同的是金矿可能共线,也就是抓取近的金矿后才能抓后面共线的金矿。这是分组背包问题,方法是将点按照斜率排序,如果相等按照距离原点远近排序,将斜率相等的点分成一组,每组的点累加上前...
阅读全文
摘要:题目传送门题意:有n个商店,有m金钱,一个商店买x件商品需要x*w[i]的金钱,得到a[i] * x + b[i]件商品(x > 0),问最多能买到多少件商品01背包+完全背包:首先x == 1时,得到a[i] + b[i],若再买得到的是a[i],那么x == 1的情况用01背包思想,x > 1时...
阅读全文
摘要:题目传送门 1 /* 2 题意:三种操作,插入,删除,替换,问最少操作数使得字符串变成回文串 3 区间DP:有一道类似的题,有点不同的是可以替换,那么两端点不同的时候可以替换掉一个后成回文, 4 即dp[j+1][k-1] + 1,还有这道题没有要求打印 5 ...
阅读全文
摘要:题目传送门 1 /* 2 题意:问最少插入多少个字符使得字符串变成回文串 3 区间DP:dp[i][j]表示[l, r]的字符串要成为回文需要插入几个字符串,那么dp[l][r] = dp[l+1][r-1]; (str[l] == str[r]) 4 dp[...
阅读全文
摘要:一.简单基础DP1. 递推DP DAGPOJ 1163 The Triangle数塔,自底向上(空间可优化)URAL 1167 Bicolored Horses马棚,选取上一层的最优状态UVA 590 Always on the run小偷逃跑,与马棚题类似UVA 1291 Dance Dance ...
阅读全文
摘要:题目传送门 1 /* 2 题意:求每行每列都至少有一颗石子的天数期望值 3 概率DP:先求概率,再算期望,dp[i][j][k]表示一共放了i颗石子,j行k列至少有一颗的概率 4 由四种状态转移来,行+1, 列+1,行列+1,行列不加。另外,这样写法相当于剪枝,减少时...
阅读全文