目录

  • 数字三角形模型
    • 1015. 摘花生【简单的基本模型】
    • 1018. 最低通行费【简单】
    • 1027. 方格取数【一般 / 摘花生走两次】
  • 最长上升子序列模型【LIS】
    • 1017. 怪盗基德的滑翔翼【简单模型】
    • 1014. 登山【简单扩展】
    • 482. 合唱队形【简单扩展】

数字三角形模型

1015. 摘花生【简单的基本模型】


https://www.acwing.com/problem/content/1017/

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int t,n,m,f[N][N];
int main(void)
{cin>>t;while(t--){cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>f[i][j];for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) f[i][j]+=max(f[i-1][j],f[i][j-1]);cout<<f[n][m]<<endl;}return 0;
}

1018. 最低通行费【简单】


https://www.acwing.com/problem/content/1020/
题目说必须(2n-1)步,隐含的条件就是不会走回头路。

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int f[N][N],n;
int main(void)
{cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) cin>>f[i][j];for(int i=1;i<=n;i++) f[1][i]+=f[1][i-1];for(int i=1;i<=n;i++) f[i][1]+=f[i-1][1];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) f[i][j]=min(f[i-1][j],f[i][j-1])+f[i][j];cout<<f[n][n]<<endl;return 0;
}

1027. 方格取数【一般 / 摘花生走两次】


https://www.acwing.com/problem/content/1029/

上图摘自:小呆呆大佬https://www.acwing.com/solution/content/7164/

#include<bits/stdc++.h>
using namespace std;
const int N=15;
int f[N*2][N][N],w[N][N],n,x,y,c;
int main(void)
{cin>>n;while(cin>>x>>y>>c,x||y||c) w[x][y]=c;for(int k=2;k<=n+n;k++){for(int i1=1;i1<=n;i1++){for(int i2=1;i2<=n;i2++){int j1=k-i1,j2=k-i2;if(j1>=1&&j1<=n&&j2>=1&&j2<=n){int t=w[i1][j1];if(i1!=i2) t+=w[i2][j2];//不重合int temp=f[k][i1][i2];temp=max(temp,f[k-1][i1-1][i2-1]+t);temp=max(temp,f[k-1][i1-1][i2]+t);temp=max(temp,f[k-1][i1][i2-1]+t);temp=max(temp,f[k-1][i1][i2]+t);f[k][i1][i2]=temp;}}}}cout<<f[n*2][n][n]<<endl;return 0;
}

最长上升子序列模型【LIS】

1017. 怪盗基德的滑翔翼【简单模型】


https://www.acwing.com/problem/content/1019/
正着跑一遍,反着跑一遍,取一个max即可。

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int t,n,a[N],f[N];
int main(void)
{cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];int res=0;for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++) if(a[i]>a[j]) f[i]=max(f[i],f[j]+1);res=max(res,f[i]);}for(int i=n;i>=1;i--){f[i]=1;for(int j=n;j>i;j--) if(a[i]>a[j]) f[i]=max(f[i],f[j]+1);res=max(res,f[i]);}cout<<res<<endl;}return 0;
}

1014. 登山【简单扩展】


https://www.acwing.com/problem/content/1016/
正着跑一次,反着跑一次。

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int f1[N],f2[N],h[N],ans,n;
int main(void)
{cin>>n;for(int i=1;i<=n;i++) cin>>h[i];for(int i=1;i<=n;i++){f1[i]=1;for(int j=1;j<i;j++) if(h[j]<h[i]) f1[i]=max(f1[i],f1[j]+1);ans=max(ans,f1[i]);}for(int i=n;i>=1;i--){f2[i]=1;for(int j=n;j>i;j--) if(h[i]>h[j]) f2[i]=max(f2[i],f2[j]+1);ans=max(ans,f1[i]+f2[i]-1);}cout<<ans;return 0;
}

482. 合唱队形【简单扩展】


https://www.acwing.com/problem/content/484/
跟登山问题几乎一样,不过是对立的问题。

#include<bits/stdc++.h>
using namespace std;
const int N=250;
int f1[N],f2[N],h[N],n,ans;
int main(void)
{cin>>n;for(int i=1;i<=n;i++) cin>>h[i];for(int i=1;i<=n;i++){f1[i]=1;for(int j=1;j<i;j++) if(h[i]>h[j]) f1[i]=max(f1[i],f1[j]+1);}for(int i=n;i>=1;i--){f2[i]=1;for(int j=n;j>i;j--) if(h[i]>h[j]) f2[i]=max(f2[i],f2[j]+1);ans=max(ans,f1[i]+f2[i]-1);}cout<<n-ans<<endl;return 0;
}

第一章 动态规划【未完结】相关推荐

  1. 第一章 动态规划 背包问题之01背包问题

    背包问题题谱 1.基础01背包问题 1. 问题描述 有 N 件物品和一个容量是 V 的背包.每件物品只能使用一次.第 i 件物品的体积是 vi,价值是 wi.求解将哪些物品装入背包,可使这些物品的总体 ...

  2. 碧水风荷录-第一章(未完,正在整理中……)

    茫茫的夜色中,巍峨的嵩山显得更加苍老.夜色渐淡,晨意渐浓,一缕曙光从天边射出. 寺中的弟子已经起床了,此时已经开始忙个不停.有的练功,有的忙着提水,还有的忙着做斋饭. 浓浓的晨雾刚刚退散,从方丈室中走 ...

  3. 南京大学声学基础(第三版)杜功焕第二章(未完结)

    弹性体振动学 分布参数系统:有不少振动系统质量在空间有一部分联系,并且空间中某物体一部分的质量本身还包含着弹性和阻尼振动. 具有分布参数系统的物体叫弹性体:本章弦,棒,膜,板. 2-1弦的振动 寻找弦 ...

  4. 第一章 动态规划 状态压缩DP

    1.基本概述 状态压缩dp和状态机一样,都是一种特殊的状态表示方式.状态机用一系列小状态表示某一状态.状态压缩dp用二进制数进行表示.虽然看代码起来时间复杂度比较高,但是很多的情况都给剪枝掉了. 状态 ...

  5. Python数据结构与算法分析(第二版)答案 - 第一章(未完)

    本人手写或借阅资料,仅供参考,有错误欢迎指正. #1.1 Fraction(分数)的getNum()以及getDen() #1.2 所有分数一开始就是最简形式 #1.3 实现下列简单的算术运算:__s ...

  6. acwing提高组 第一章 动态规划

    文章目录 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP oj链接 数字三角形模型 AcWing 1015. 摘花 ...

  7. 开篇和第一章:Mac OS X内核故事之“N国语言”

    开篇声明:       1.写作动机和热情来自两方面:一是自乔帮主回归后,苹果公司经历了从濒临破产到全球市值第一的华丽转身,其产品风靡全球.我本人当了4年的苹果用户,3年的weiphoner,在坛子上 ...

  8. HttpClient 中文官方教程----第一章基础知识-只收录,未测试

    2019独角兽企业重金招聘Python工程师标准>>> 第一章基础知识 英文链接:http://hc.apache.org/httpcomponents-client-ga/tuto ...

  9. c++ primer5 第一章练习题答案 尚未完成 后续补充(基本已经完结)

    1.3 //1.3 #include <iostream>//如果加上这一行就不需要 std::cout 直接cout就可以了总是忘记 加std 这里出于和书籍 上代码配套 所以还是 st ...

最新文章

  1. 深度学习需要掌握的 13 个概率分布(附代码)
  2. 轻松删除所有安装的gem
  3. matlab实现单纯型法解线性规划_【运筹学教程】求解线性规划问题的单纯形法
  4. py获取前端的参数_微前端 qiankun 项目实践
  5. 视频AI,助力体育赛事转播走进智能时代
  6. 几件欣慰的事,关于.Net的培训和嵌入式开发效率
  7. C语言提前结束for循环,[新人求指教]51C语言编程可否用中断令循环结束提早结束...
  8. Hive中元数据表的含义
  9. hadoop 实战——网站日志数据分析
  10. 机器学习实践笔记(三)时间序列数据预测
  11. 杭州电子科技大学java刷题_杭州电子科技大学的OJ
  12. 关于雅虎邮箱的Foxmail,outlook设置。
  13. python下faker模块引入报错:Traceback (most recent call last) 解决办法
  14. 星期零参展FHC,推出新品“Pastrami”和“微笑乐摇杯”,引爆植物肉潮流
  15. 单片机/C语言浮点型数据转换为字符串方法
  16. 用于自动化的 10 个杀手级 Python 脚本
  17. linux下编译和安装log4cxx,Linux下log4cxx的安装使用
  18. git 代码记录单条合并的方法
  19. c:一个长方体表面积体积的计算
  20. 基于单片机的坐姿提醒系统设计(#0475)

热门文章

  1. HDU 2001 计算两点间的距离
  2. as3.0用了视频组件,导致视频打开后就全屏,加一下代码就行
  3. uva 1614奇怪的股市(归纳法证明,贪心)
  4. KaleidoscopeGame
  5. grep命令參数及使用方法
  6. Jmeter将HTTP request报文体中的字符串转换为大写
  7. flot中文API(转载)
  8. 气死我的存储过程和用户定义函数
  9. 数据挖掘领域十大经典算法
  10. STM32 串口ISP下载