清北学堂提高组突破营游记day5
长者zhx来啦。。
(又要送冰红茶了。。。)
zhx一上来就讲动态规划。。。是不是要逼死人。。。。
动态规划:
最简单的例子:斐波那契数列。因为他是递推(通项公式不算)的,所以前面的已经确定的项不会影响后面的,满足无后效性,为最简单的动态规划。
3种写法:用算好的自己来算别人,或者用别人更新自己,记忆化搜索。
计算斐波那契数列f[n]=f[n-1]+f[n-2]。
如果用dfs来计算的话,在dfs函数里return dfs(n-1)+dfs(n-2);
由于没有记忆化,(没有把每一个阶段记录下来,)复杂度达到了f[n]级别而线性地推可以O(n)。
这就是为什么记忆化。
(zhx:我课件只有130页,没什么东西。。)
动态规划过程图
画成图就是dag有向无环图。
背包问题:洛谷p1048采药。
代码:
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = ;
const int maxm = ;
int main()
{
int N,W;
int w[maxn],v[maxn],value[][];
cin>>W>>N;
for(int i=;i<=N;i++)
cin>>w[i]>>v[i];
memset(value,,sizeof(value)); //value数组注意要清空 for(int i=;i<=N;i++)
for(int j=W;j>=;j--)
{
if(j>=w[i])
value[i][j]=max(value[i-][j],value[i-][j-w[i]]+v[i]);
else value[i][j]=value[i-][j];
} cout<<value[N][W]<<endl;
return ;}
然后是无限背包,有限背包。
然后是区间dp,
例题为合并石子。
满足只能合并相邻的两个元素的题为区间dp。
代码:
状压dp:洛谷p1171
如果一个题数据n<=20||22,考虑状压dp。
洛谷p1879玉米田,状压dp;
P1896 [SCOI2005]互不侵犯,状压dp;
然后是数位dp:
P2657 [SCOI2009]windy数
。
树形dp:
题目:对于一棵有n个点的树,求它有多少个点。
(题目无锅)。
要求用树形dp做。
原理:处理子树。我们设f[i]表示i节点以及他的子树一共有多少个节点。那么转移方程为f[i]=Σf[j](子树)+1(自己);
最后输出f[1];
博弈论dp: 明天再讲。
清北学堂提高组突破营游记day5的更多相关文章
- 清北学堂提高组突破营游记day3
讲课人更换成dms. 真的今天快把我们逼疯了.. 今天主攻数据结构, 基本上看完我博客能理解个大概把, 1.LCA 安利之前个人博客链接.之前自己学过QWQ. 2.st表.同上. 3.字符串哈希.同上 ...
- 清北学堂提高组突破营游记day6
还有一天就结束了..QWQ 好快啊. 昨天没讲完的博弈论DP: 一个标准的博弈论dp,一般问的是是否先手赢. 博弈论最关键的问题:dp过程. 对于一个问题,一定有很多状态,每个状态可以转移到其他的一些 ...
- 清北学堂提高组突破营游记day4
今天主攻图论. 对于这道题,30分做法是暴力搜索全部来判断是否有异样. 对于满分做法,利用带权并查集.? 又带我们串了一边LCA 安利个人LCA博客. spfa代码.原理:循环队列. 然后是floyd ...
- 清北学堂提高组突破营考试T1
题目如下: (想要作弊的后几届神仙们我劝你们还是别黈了,这个题如果你们不会只能证明你们上错班了). 好,题目看完了,发现是一道大模拟(%你)题,于是我们按照题目说的做: #include<ios ...
- 清北学堂提高突破营游记day1
上午7点半到的国防宾馆,8点开始的培训. 讲课人林永迪. 没错就是这个人: 他推荐的教辅:刘汝佳紫书,算法导论(也就看看..),刘汝佳白书 先讲模拟.(貌似就是看题论题. 然后贪心. 贪心没有固定的模 ...
- 清北学堂提高突破营游记day2
先水了一下昨天没讲完的贪心. 然后今天讲的分治. 安利自己水的二分与三分. 二分一定要满足有序.三分适合解决单峰函数问题. 第一道题借教室.运用差分和二分查找. 三分: P1731 [NOI1999] ...
- <知识整理>2019清北学堂提高储备D2
简单数据结构: 一.二叉搜索树 1.前置技能: n/1+n/2+……+n/n=O(n log n) (本天复杂度常涉及) 2.入门题引入: N<=100000. 这里多了一个删除的操作,因此要 ...
- <知识整理>2019清北学堂提高储备D1
一.枚举: 枚举是最简单最基础的算法,核心思想是将可能的结果都列举出来并判断是否是解. 优点:思维简单,帮助理解问题.找规律.没头绪时 缺点:时空复杂度较高,会有很多冗余的非解(简单的枚举几乎没有利用 ...
- <知识整理>2019清北学堂提高储备D3
全天动态规划入门到入坑... 一.总概: 动态规划是指解最优化问题的一类算法,考察方式灵活,也常是NOIP难题级别.先明确动态规划里的一些概念: 状态:可看做用动态规划求解问题时操作的对象. 边界条件 ...
随机推荐
- Emacs常用命令快速参考
原文地址 Emacs常用命令的汇总,来自Emacs参考卡片 注意:以下命令中标注的按键,大写的C代表Control,在键盘上通常是Ctrl键,而M代表Meta,在键盘上通常是Alt键,S则代表Shif ...
- [Flask]jinja2渲染分页导航部件
注意: 1.在视图函数中通过request.args.get('page')获取page数,并将page传给macros.html模板文件 效果: 点击8,就跳转到第8页数据了 视图函数 @app.r ...
- flutter 快速生成Widget
快速生成对象 List.generate(20, (i){ return Text("$i"); }), 快速生成Widget ListView.builder( itemCoun ...
- CentOS7 通过 YUM 升级 VIM8
Run 就完了: rpm -Uvh http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm ...
- python之reportlab生成PDF文件
项目需要,需要自动生成PDF测试报告.经过对比之后,选择使用了reportlab模块. 项目背景:开发一个测试平台,供测试维护测试用例,执行测试用例,并且生成测试报告(包含PDF和excel),将生成 ...
- c++ 指针(二)
指针 (4)指针数组 #include <iostream> using namespace std; ; int main () { , , }; ; i < MAX; i++) ...
- windows qt 使用openssl API
1.下载安装openssl http://dl.pconline.com.cn/download/355862-1.html 版本: OpenSSL(Win32) 1.0.1g 2.配置QT项目文件, ...
- python selenium中Excel数据维护(二)
接着python里面的xlrd模块详解(一)中我们我们来举一个实例: 我们来举一个从Excel中读取账号和密码的例子并调用: ♦1.制作Excel我们要对以上输入的用户名和密码进行参数化,使得这些数据 ...
- (5.2)mysql高可用系列——测试环境部署
关键词环境部署: ############## 测试环境机器架构 #########[1]策划[1.1]linux服务器A组 8台 192.168.1.200~192.168.1.207,主机名db, ...
- Java static基本认知
一. static的用途 在Java编程思想中有这么一句话:“static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅 ...