首页 > 其他分享 >动态规划 题单总结

动态规划 题单总结

时间:2023-09-23 14:55:31浏览次数:64  
标签:总结 考虑 合并 这道题 对决 动态 节点 DP 题单

目录

P7339 『MdOI R4』Kotori

考虑直接思考对于分成\(\frac{n}{2}\)组构成的所有的树。很显然这是一颗完全二叉树。此时,我们将对决树抽象的构建出来:image注意到对于这棵树的叶子节点都是这\(2^k\)个可以对决的初始节点。最直接的思考,我们发现我们需要的信息就是针对每个参赛人员求出他可能的敌人。注意,如果当前对决的人员有1号选手,我们需要特判。这个特判操作一定是这颗树上的最左边的一个链。这个链有一个特殊性质:这条链上的所有节点的编号的二进制只有一个1。所以可以使用__builtin_popcount()函数。注意到由于对决的两方都有可能产生一定的对手,所以此时我们需要首先二分查找两边都合法的vector,然后resize()删除,最后合并两个vector代码

P2167 [SDOI2009] Bill的挑战

发现 \(N\) 的值很小,加上方案数的计算量很大,考虑状压。在转移过程中我们发现最大的问题在于对于不合法字符串的筛选。这里提出了一种新的筛选不合法方案数的方式:利用相对于某个字母合法的可以选择的字符串的个数与当前枚举的状态数进行取交,之后再进行转移。那么我们直接对可以选择的字符串数进行预处理就可以。可悲的是一开始手模样例4出错了\kk代码

P4206 [NOI2005] 聪聪与可可

注意考虑聪聪每次走的点是固定的,所以是可以预处理出来的。代码

P4377 [USACO18OPEN] Talent Show G

这是一道经典的01分数规划问题。该特点就是求两个要素选或不选的最大值。注意到这种问题的贪心都是有问题的,而答案的规模可能会很小,所以直接考虑进行二分答案(浮点二分)。但是此题比较特殊,由于有 \(W\) 的上下限控制,所以我们无法针对所有的正数情况全部选取。考虑01背包就可以解决这个问题。但是还是与01背包有些许不同,需要将所有大于等于 \(W\) 的部分全部计算在 \(W\) 上。代码

P4766 [CERC2014] Outer space invaders

这道题是一类十分典型的区间DP。而经典的区间DP一共有两种情况:一种是以单个物体为单位进行合并,这种情况下可以考虑直接进行合并;另一种就是以一段区间为一个物体,此时我们可以考虑最后执行的操作,再用这个操作将这个区间合并成两部分。blog但是这道题的简单版可以看这道题这个blog很好。考虑如何合并能使得两边的区间不会计算重复。可以将中间点暂时性扣去。利用一个g[][]计算合并中间点的贡献。

P8564 ρars/ey

这是经典的树上DP背包问题。实际上,树上DP就是孩子节点想给父节点传达什么样的信息。这道题就是每个孩子节点给父亲提供自己分别删除多少个节点的最小代价,以供让父亲节点填充自己的代价数组,最后递交给爷爷节点。由于这里面每棵子树需要在当前情况下删除的点数不一定全部删除,所以就必须枚举出最小节点的最小代价。记录

标签:总结,考虑,合并,这道题,对决,动态,节点,DP,题单
From: https://www.cnblogs.com/adolf-stalin/p/17705902.html

相关文章

  • 网络拥塞控制算法总结-PolyCC
    字节跳动在SIGCOMM'23以Poster形式提交了一篇论文《PolyCC:Poly-AlgorithmicCongestionControl》,试图将各种拥塞控制算法整合到一个统一的框架里。其理由是近40年来各种渠道发布的各种拥塞控制算法,没有一种算法能解决所有网络场景(不同的应用,不同的流量模型等)。 如上图,PolyCC......
  • 代码随想录算法训练营-动态规划-1|509. 斐波那契数、70. 爬楼梯
    509. 斐波那契数 1classSolution:2deffib(self,n:int)->int:3ifn<=2:4returnn56prev1,prev2=0,17for_inrange(2,n+1):8sum_value=prev1+prev29prev1,......
  • STM32开发之实验总结
    一、跑马灯实验  可以利用跑马灯实验来配置程序在正常运行指示【还有也可以使用串口实验来】,我们所要配置的有;  延迟函数  GPIO初始化函数  在初始化的时候我们要确定是那个GPIO口如果你需要用他的复用功能,你也需要设置。记住stm32在默认情况下都是死亡的,所以你无论......
  • Linux用g++编译生成动态连接库.so的方法及连接
    Linux动态库默认搜索路径/lib64、/usr/lib64、/lib、/usr/lib系统头文件目录/usr/include常用命令lddmain:查看二进制可执行文件链接的动态链接库信息,例如lddnginxg++-cmain.cpp:以单个xx.cpp源文件为单位只编译出xx.o的二进制文件(称为:目标文件)g++xx.oyy.o-oma......
  • 20230922学习总结java连接HBASE
    连接条件:1、所有虚拟机上运行hadoop集群、运行zookeeper进程守护 2、向项目中导入即hbase安装目录下的conf文件夹中的两个文件 3、添加maven依赖<dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</ar......
  • Python分享之动态类型
    动态类型(dynamictyping)是Python另一个重要的核心概念。我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值。这些都与动态类型的概念相关。动态类型在我们接触的对象中,有一类特殊的对象,是用于存储数据的。常见的该类对象包括各种数字,字符串,表,词......
  • 每日总结(数据清洗)
    2、数据清洗:要求将day_id一列中的数值清洗为真实的日期格式,可用字符串表示。数据1对应日期2021-09-01,依次类推,15对应日期2021-09-151CREATETABLEIFNOTEXISTSsales_sample(2day_idSTRING,3sale_nbrSTRING,4buy_nbrSTRING,5cntINT,6round......
  • 每日总结
    今日收获顺利通过王老师的测试啦(~~~今晚大概,可以稍微睡的久一点)!背单词~明天预计明天要开始准备一下关于.NET的东西啦!小组的大作业可不能落下;还要准备一下程序设计大赛(来自算法菜鸟的无奈~);打算今天把那个实验报告写了;......
  • 每日总结9.22
    今天学习了将csv文件导入到Hive数据库;对数据进行清洗,并对数据进行分析处理;实现了用Dbeaver连接hive,navicat连接Mysql数据库;在将Hive数据导入到Mysql数据库中时遇到了一些问题,明天将继续解决这个问题,并实现数据的可视化。 ......
  • k8s yaml文件总结
    k8s支持yaml和JSON格式创建资源对象,json用于接口之间消息传递,适用于开发;yaml格式用于配置和管理,适用于云平台管理,yaml简洁非标记性语言1.yaml相关基础概念  yaml语法规则:  大小写敏感;缩进表示层级关系;缩进不允许使用tab键,只允许使用空格;#表示注释---为可选分隔符,当需要......