cf 467 C

从序列中选出 \(k\) 段连续的 \(m\) 个数

最大化总和

\(f_{i, j}\) 表示前 \(i\) 个位置中选出了 \(j\) 段

转移显然

  1. #include <bits/stdc++.h>
  2. const int N = 5010;
  3. long long f[N][N];
  4. int n, m, k;
  5. long long Sum[N];
  6. int main() {
  7. std:: cin >> n >> m >> k;
  8. for(int i = 1; i <= n; i ++) {
  9. std:: cin >> Sum[i];
  10. Sum[i] += Sum[i - 1];
  11. }
  12. for(int i = 1; i <= n; i ++) {
  13. for(int j = 1; j <= k; j ++) {
  14. if(i - m + 1 > 0) f[i][j] = f[i - m][j - 1] + Sum[i] - Sum[i - m];
  15. f[i][j] = std:: max(f[i - 1][j], f[i][j]);
  16. }
  17. }
  18. std:: cout << f[n][k];
  19. return 0;
  20. }

51nod 1354

给出序列 \(a\) 和一个整数 \(k\)

求子序列的乘积是 \(k\) 的倍数的方案数

\(f_{i, j}\) 表示前 \(i\) 个数,乘积是 \(j\) 的方案数

\(f_{i, j} = f_{i - 1, \frac{j}{a_{i - 1}}} + f_{i - 1, j}\)

由于 \(k\) 很大

显然单纯的数组是无法完成的

这里可以使用 \(map\), 通过遍历完成

  1. #include <bits/stdc++.h>
  2. const int N = 1010, Mod = 1e9 + 7;
  3. std:: map <int, int> Map[N];
  4. int n, k, t;
  5. int A[N];
  6. int main() {
  7. std:: cin >> t;
  8. for(; t; t --) {
  9. std:: cin >> n >> k;
  10. Map[0].clear();
  11. for(int i = 1; i <= n; i ++) {
  12. std:: cin >> A[i];
  13. Map[i].clear();
  14. }
  15. Map[0][k] = 1;
  16. for(int i = 0; i < n; i ++)
  17. for(std:: map <int, int> :: iterator it = Map[i].begin(); it != Map[i].end(); it ++) {
  18. if(it-> first % A[i + 1] == 0)
  19. (Map[i + 1][it-> first / A[i + 1]] += it-> second) %= Mod;
  20. (Map[i + 1][it-> first] += it-> second) %= Mod;
  21. }
  22. std:: cout << Map[n][1] << "\n";
  23. }
  24. return 0;
  25. }

openjudge 6047

\(w \times h\) 的蛋糕,切成 \(m\) 块

每刀可以将一块切成两块

求最小化的最大蛋糕面积

\(f_{i, j, k}\) 表示将 \(i \times j\) 的蛋糕切成 \(m\) 块时的最小化的最大蛋糕面积

枚举蛋糕的长和宽以及切成的块数

固定好后枚举长从哪里分割 \(h\) 以及分成的块数 \(p\)

\(f_{i, j, k} = min(f_{i, j, k}, max(f_{h, j, p}, f_{i - h, j, p}))\)

同理枚举列

\(f_{i, j, k} = min(f_{i, j, k}, max(f_{i, l, p}, f_{i, j - l, p}))\)

  1. #include <bits/stdc++.h>
  2. const int N = 25;
  3. int f[N][N][N];
  4. int main() {
  5. int w, h, m;
  6. while(std:: cin >> w >> h >> m) {
  7. memset(f, 0, sizeof f);
  8. if(w == 0 && h == 0 && m == 0) break;
  9. for(int i = 1; i <= w; i ++)
  10. for(int j = 1; j <= h; j ++)
  11. f[i][j][1] = i * j;
  12. for(int i = 1; i <= w; i ++)
  13. for(int j = 1; j <= h; j ++)
  14. for(int k = 2; k <= std:: min(i * j, m); k ++) {
  15. f[i][j][k] = (1 << 30);
  16. for(int H = 1; H < i; H ++)
  17. for(int p = 1; p < k; p ++)
  18. f[i][j][k] = std:: min(f[i][j][k], std:: max(f[H][j][p], f[i - H][j][k - p]));
  19. for(int L = 1; L < j; L ++)
  20. for(int p = 1; p < k; p ++)
  21. f[i][j][k] = std:: min(f[i][j][k], std:: max(f[i][L][p], f[i][j - L][k - p]));
  22. }
  23. std:: cout << f[w][h][m] << "\n";
  24. }
  25. return 0;
  26. }

dp * 3的更多相关文章

  1. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

  2. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  3. AEAI DP V3.7.0 发布,开源综合应用开发平台

    1  升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...

  4. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  5. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  6. [斜率优化DP]【学习笔记】【更新中】

    参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...

  7. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

  8. px、dp和sp,这些单位有什么区别?

    DP 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以 首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算 ...

  9. android px转换为dip/dp

    /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public int dipTopx(Context context, float dpValue) { final floa ...

  10. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

随机推荐

  1. Luogu5290 [十二省联考2019] 春节十二响 【贪心】【堆】

    题目分析: 对于一个根,假设我们对每个子树分别求出了一种答案,那么怎么合并答案是最小的呢? 首先考虑这些答案里面最大的那个数字,它肯定要融合其它组里面的最大数字.以此类推 所以最好的合并方式是,每个子 ...

  2. sqlserver 转化函数

    --查询系统当前时间select GETDATE() as date;------------------------- 0-14 ------------------select CONVERT(V ...

  3. typescript 入门教程三

    类型别名 下面的代码将string类型赋值给一个别名,以后如果出现别名的地方,就好比出现类型string,同理其他类型也一样 type Name=string let gender:Name='男' ...

  4. 查看IIS错误日志

    部署在IIS中的程序,难免出现数据产生异常 在事件查看器中,可以看出来具体的错误信息,代码定位

  5. 将网站升级为https并自动续期Https证书。

    Let's Encrypt Let's Encrypt 是一个由Internet Security Research Group (互联网安全研究组)提供的免费,自动化和开放的证书颁发机构. 它秉承着 ...

  6. ef core数据迁移的一点小感悟

    ef core在针对mysql数据迁移的时候,有些时候没法迁移...有两种情况没法迁移,一种是因为efcore的bug问题导致没法迁移,这个在github上有个问题集,另外一种是对数据表进行较大幅度的 ...

  7. 写在NOIP2018后

    退役学了一周文化课,感觉还行吧 在周四就有学弟跟我说用我的源代码测329,当时还是出乎意料的. 本来期望是100+50+55+100+50+44=399,结果测得是100+55+50+100+20+4 ...

  8. css 层叠 比较特殊性

    css 层叠: 多个相同的css声明(属性),应用到同一个元素上.当一个标签声明冲突时,浏览器会自动出发层叠机制 1:比较优先级 2:比较特殊性 3:比较源次序 依次经过上面的1,2,3的比较后,最终 ...

  9. 对于Element-ui分页进行再次的封装使用

    这是我项目的分页的目录结构,话不多说,直接上代码. <template> <div class="pagination-container"> <el ...

  10. JDK反编译的两种方式

    环境 链接:https://pan.baidu.com/s/1DwWj5Kt4Gfi68k_EOAea_Q 提取码:57j2 apktools+dex2jar+gd-gui 方式一: apktools ...