随笔 - 532
文章 - 0
评论 - 3
阅读 -
10867
随笔分类 - dp
一本通1598:【 例 2】最大连续和
摘要:长度为n 的整数序列 要求从中找出一段连续的长度不超过m的子序列,使得这个序列的和最大 #include <iostream> using namespace std; const int N=2e5+3; #define int long long int a[N],s[N],f[N],n,m;
阅读全文
一本通1599:修剪草坪
摘要:FJ 有 n 只奶牛,奶牛 i的效率为 a[i]。 选一些奶牛放到n个格子上且 连续的奶牛不能超过K只。 计算 FJ 可以得到的最大效率 #include <iostream> using namespace std; const int N=2e5+3; #define int long long
阅读全文
P2569 [SCOI2010]股票交易
摘要:通过一段时间的观察,预测到了未来 n天内某只股票的走势,第 i 天的股票买入价为每股 a[i],第 ii 天的股票卖出价为每股 b[i] (a[i]>=b[i]), 规定第 ii 天的一次买入至多只能购买 as[i] 股,一次卖出至多只能卖出 bs[i] 股。 规定在两次交易(某一天的买入或者卖
阅读全文
最长公共上升子序列
摘要:n^3 #include <iostream> #include <algorithm> #include<cstring> #include <vector> using namespace std; const int N=600; int n,m,a[N],b[N],p[N][N],f[N][
阅读全文
uva 12563 Jin Ge Jin Qu hao
摘要:01背包,这题设计状态f[i][j] 为刚好用完时间 j 时的歌曲数,这样方便找到用时(初始化设置一下就好 #include <iostream> #include <algorithm> #include<cstring> using namespace std; const int N=53,M
阅读全文
poj 2392 Space Elevator
摘要:给出了一些砖块,砖块有高度,最高可以达到的高度(高度限制)和数量,问可以用这些砖块堆的最大高度 f[i][j] 考虑前i块,能否堆出高度为j f[i][j] | =f[i-1][j-k*h[i] ] 注意先排个序,按照 limit[i] 从小到大 枚举 j #include <iostream> #
阅读全文
uva 590
摘要:一共有n座城市,要在这n座城市旅游k天,从城市1出发,第k天到达城市n。 输入有n*(n-1)行,每n-1行代表i到除了i之外的其他城市航班的天数以及价格。 求最小花费。 #include <iostream> #include <algorithm> using namespace std; co
阅读全文
uva 473
摘要:有n首歌,每首时长Ti,要把这n首歌装进m个光盘里面,每个光盘最多能存的时长为t. 要求这些歌在光盘里面要按照所给歌的先后顺序存入,不能改变前后顺序. 例如有4首歌,按顺序给出他们的时长:1,2,3,4. 装入一个容量时长为10的光盘里,可以是1,2,3或者1,3,4等,但是不能2,1,3. 问最多
阅读全文
uva 10453
摘要:将字符串变为回文串最少需要几次操作(在任意位置插入字符),并输出变化后的回文串f[l][r] = f[l+1][r-1] // a[i]==a[j] =min(f[l+1][r],f[l][r-1]) #include <iostream> #include <cstring> using name
阅读全文
uva 10163
摘要:n个仓库,安排m个人看守,每个仓库只由一个人看守,每个人对应a[i] ,表示能量(薪水) 如果某个人看守k个仓库,每个仓库能量值 a[i]/k 求仓库能量最小值最大时,所支付薪水最少值 #include <iostream> #include <algorithm> #include <cstrin
阅读全文
luogu 3092
摘要:约翰到商场购物,他的钱包里有K(1 <= K <= 16)个硬币,面值的范围是1..100,000,000。 约翰想按顺序买 N个物品(1 <= N <= 100,000),第i个物品需要花费c(i)块钱,(1 <= c(i) <= 10,000)。 在依次进行的购买N个物品的过程中,约翰可以随时停
阅读全文
uva 1291
摘要:游戏者必须按照这个序列一次用某一只脚踩相应的踏板。在任何时候,两只脚不能在同一个踏板上,但可以同时在中心位置0。每一个时刻,HH必须移动他的一只脚去踩相应的箭头,另一只脚不能动。每跳完一个曲子,HH会计算他的总体力消耗。规定:从中心移动到任意一个箭头耗费2单位体力;从任何一个箭头到相邻的箭头耗费3单
阅读全文
uva 10564
摘要:和 数字金字塔 几乎一样 f[i[[j][s] s表示当前的和 #include<iostream> #include <cstring> #include <algorithm> using namespace std; const int N=90; #define int long long
阅读全文
uva 1366
摘要:一个方格图,每个格子上有 A 矿与 B 矿。A 矿只能向西运输,B 矿只能向北运输。即如果要采某个格子上的矿,那么运输路上的这种矿要全采 转移很明显了 f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1])+s1[i][j]; f[i][j][1]=max(f[i][j-
阅读全文
uva 11795
摘要:题目意思还是有点绕的,想了好一会 大体上是一个状压dp(废话 f[j] ,当当前拥有武器集合为j 时,消灭所有怪物的方案数 像线性dp一样,但可以去掉一维 f[j]+=f[t] ,t= j^(1<<i ) 条件是 武器库j 能消灭 怪物i 这就要处理出 g[j] ,表示 武器库 j 能消灭的怪物集合
阅读全文
uva 1456
摘要:比如,手机可能位于 5 个区域中,概率分别为 0.3,0.05,0.1,0.3,0.25, 则一种方法是先同时访问 \{c1,c2,c3\},再同时访问 {c_4,c_5}, 访问区域数量的期望为 3*(0.3 + 0.05 + 0.1) + (3 + 2) *(0.3 + 0.25) = 4.1
阅读全文
uva 11552
摘要:给你一个长度 k ,一个字符串 S(都为小写字母) ,保证 S 的长度为 k的整数倍。 将 S 按顺序分为 S/k 组,组内字符可以重新排列 问最少有几个块?(如 fff,ww ) 枚举开头元素j ,上一个组的末尾元素r f[i[j] = min{ f[i-1][r] - 1 +count[i] }
阅读全文
uva 10534
摘要:给一个序列A,求一个最长子序列,长度为2k+1 满足前k+1个数递增,后k个递减 LIS板子题,正反各求一次,枚举中间的交点 #include<iostream> #include<cstring> #include <algorithm> using namespace std; const in
阅读全文
uva 1424
摘要:给定一个长度为 n1 ( n1≤100 ) 的点的无向连通图和一个长度为 n 的序列 A ( n≤200 ) ,1<=A[i]<=n1 希望修改尽量少的数,使得序列的任意相邻两个数在图上是是相邻节点,或者相同 n<=100 ,直接暴力 枚举位置i,i-1 的值, 那么就可以转移 如果 k==j
阅读全文
uva 11584
摘要:给一个字符串,划分成最少的回文串 如aaadbccb > aa d bccb f[i] = miin{ f[j]+1 } j<i, 且 s[j...i]是回文串 #include <iostream> #include <cstring> using namespace std ; const in
阅读全文