清北学堂清华大学钟皓曦神仙讲课day3摘要

摘要:
QWQDP有几种:这是斐波那契序列:与他人一起更新自己。因为他已经重复调用了f[n-2]两次,我们将打开一个数组来判断f[n]是否已计算,这意味着1。否则,0意味着判断是否已计算。如果已计算,将直接返回。如果尚未计算,则为1.计算2.赋值布尔3.赋值f[n]是。这正是QWQ如何在安利加速自己编写的斐波那契矩阵:https://www.cnblogs.com/lbssxz/p/10679655.html在示例的最后,常见的dp类型:其他dp很可怕,有两种类型的NOIP参与的概率相对较低:但其他四种dp例程应该记住。然而,zhx允许您使用数字dp来实现。

---恢复内容开始---

今天全是DP

awsl,真的好难

先从斐波那契开始:

dp:满足有一个状态边界条件(f[0]=0,f[1]=1)

边界条件:不需要计算其他状态的值而可以直接得出的状态或者最底层状态(不能由其他状态推出来)

然后是状态转移方程:f[n]=f[n-1]+f[n-2](然后是矩阵加速或者递推。。)

总之:边界条件,状态,转移方程为三大核心(其他都是一些题目变量。

据说动态规划和dag(大哥)是等价的,但是图论后几天再讲。。QWQ

DP有这几种:(zhx大佬的神仙字体)

清北学堂清华大学钟皓曦神仙讲课day3摘要第1张

这是斐波那契数列顺推:

清北学堂清华大学钟皓曦神仙讲课day3摘要第2张用别人更新自己。

逆推:

清北学堂清华大学钟皓曦神仙讲课day3摘要第3张用自己更新别人。

 记忆化搜索:

清北学堂清华大学钟皓曦神仙讲课day3摘要第4张

复杂度O(f[n])f[n]为第n项的值

 其实他有通项公式的:

清北学堂清华大学钟皓曦神仙讲课day3摘要第5张

 也就是说,复杂度为指数级别,因为右边那一项小于1,他的n次方也小于一

为何如此之慢?

因为他有重复调用(f[n]=f[n-1]+f[n-2],f[n-1]=f[n-2]+f[n-3])f[n-2]被调用两次

那么我们再开一个数组,用来判断f[n]是否被算过(suan_le_mei数组)

算过就是1,否则为0(bool)

清北学堂清华大学钟皓曦神仙讲课day3摘要第6张

也就是判断是否被算过(f[n]已经有值了),算过就直接返回,没算过就1.算2.赋值bool3.赋值f[n]

没错就是这样QWQ(%zhx大佬竟然把蒟蒻讲明白了)

在安利一下本人写的斐波那契矩阵加速:https://www.cnblogs.com/lbssxz/p/10679655.html

例题完结

常见dp种类:

 清北学堂清华大学钟皓曦神仙讲课day3摘要第7张其他dp好可怕(最可怕的是未知

清北学堂清华大学钟皓曦神仙讲课day3摘要第8张

还有两种NOIP涉及概率比较小的:

清北学堂清华大学钟皓曦神仙讲课day3摘要第9张

但是其他4种dp套路要背熟。

1,数位dp:

 给定两个正整数l,r,求l到r有多少个数?

(wtf这个题不是r-l+1吗)

但是,zhx让你用数位dp做。

首先将题目转化一下(减去l)得0到x有多少个数这个问题

那么设0<=v<=x,将v按十进制位数分解,得每一位vn,vn-1,vn-2....v1,我们从高位开始填v的位数,要分两种情况:

1,当前面已经填好的位数和x对应位数相同时,现在填的位数必须小于等于x对应位数才满足v<=x

2,当前面有至少一位和x对应位数不相同时,这意味着当前一位不管填多少,都满足v<x,那么,0到9随便填就行,

状态:设数组f[i][j],代表当前填到了第i位,j的值为(0:当前面几位有至少一位不和x对应位相等时,随便填  1:当前面几位都相同时只能填vi<=x[i])

状态转移:从第一位开始,if分两种情况递归

代码:先存x的位数:

清北学堂清华大学钟皓曦神仙讲课day3摘要第10张

其中z为存x位数的数组(下标从0开始)

然后是dp主体部分:

首先必须清空memset()%

初始化:清北学堂清华大学钟皓曦神仙讲课day3摘要第11张why?因为他们在n+1位的值都为0,所以相等的情况只有一种

然后用一个for循环,枚举从第n位到第0位,然后分情况转移就ok了。QWQ

改一下问题:求l,r区间内有多少个相邻数位只差大于2的数?

状态为了包含所有条件,发生了变化清北学堂清华大学钟皓曦神仙讲课day3摘要第12张

其他改改就行。

2.树形dp

给你一个有n个结点的树,求它有几个点(没错答案就是n你没看错

老师竟然把这么简单的题让我们用树形dp做

又变难了

#include<iostream>

using namespace std;

int f[233];

void dfs(int p)
{
    for (x is p's son)
    {
        dfs(x);
        f[p] += f[x];
    }
    f[p] ++;
}

int main()
{
    cin >> n;
    read_tree();
    
    dfs(1);
    cout << f[1] << endl;
    
    return 0;
}

状态dp

 状压复杂度为清北学堂清华大学钟皓曦神仙讲课day3摘要第13张

 而n<=20时为状压的数据范围,考虑使用状压

免责声明:文章转载自《清北学堂清华大学钟皓曦神仙讲课day3摘要》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#自定义控件在添加引用后不显示在工具箱的解决方法(转)Java进程CPU100%的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

UOS怎么安装谷歌浏览器

这是安装完成的截图点击UOS左下角启动器图标,拉至最底下,找到“Chromium网页浏览器”,点击启动以下是启动的界面截图...

jmeter监控内存,CPU等方法

当然,我们也可以选择本地进程下的远程进程来获取服务器的内存使用情况和其他信息。在文本框中输入需要测试的服务器的IP地址:port,然后在下面输入用户名和密码。单击“连接”以查看发生的情况。...

【JVM】元空间详解 Metaspace

nocs。JpgNoKlassisMetaspaceNoKlassinMetaspaces专用于存储其他与klass相关的内容,如方法、常量池等。它可以由多个不连续的存储器组成。在元空间GC之后,还将调整阈值。默认情况下,MaxMetaspaceSize基本上是无限的,因为大多数元空间都是在本地内存中分配的,但它仍然受到本地内存大小的限制。为了防止元空间的无...

安装pygame

在python3中安装pygame库。一段时间后,您可以看到安装成功,并且可以导入pygame...

CentOS7 复制文件夹和移动文件夹

CentOS7在Linux中复制、移动和删除文件的命令有:cp、mv、rm I。文件复制命令cp命令格式:cp[-adfilprsu]源文件(source)目标文件(destination)cp[option]source1source2source3…directory参数描述:-a:指存档,即复制所有目录-d:如果源文件是连接文件(linkfile...

js学习-es6实现枚举

最近,我大部分时间都在写dart,突然使用了js。我发现js不能直接声明枚举。目录枚举功能对象冻结()符号实现反映了不可更改值的唯一性。请注意,枚举特性枚举值不能重复,也不能修改。Switchcase可以直接判断对象。冻结()对象。方法可以冻结对象。无法更改实现constEnumSex=Object。冷冻枚举性别。人=1;安慰日志;//符号(男性)表示值co...