首页 > 其他分享 >2024.8.30 总结(集训 考 DP)

2024.8.30 总结(集训 考 DP)

时间:2024-08-30 22:52:51浏览次数:11  
标签:颜色 2024.8 30 long DP 100 高维

上午三个多小时考四道题的 DP。

赛时会的分:[100](?) + 100 + [30](?) + 100。

估分:100 + 100 + 0 + 100。

实际分:10 + 100 + 0 + 100。

挂巨量的分,挂了 120 分。

下面是一些值得注意的点:

T1

就是分组背包。DP 数组下标要考虑负数可以直接全体加一个值变成非负的,[或者用 map 之类的](?)(& 不知道 unordered_map 会不会被卡)。

我赛时的做法是每个挂钩的位置加上 15 变成非负的,然后最后要看质量之和 * 15 的地方的 DP 值。感觉可能是对的,不知道为啥挂了。

T2

数位 DP 的基础题,做法比较板。

注意 0 算不算贡献;注意是 < x 还是 <= x;注意 dig 数组不是输入的字符串(代表数),而是那个字符串的 1 ~ ... 位翻转后的结果(就是要注意是从低位到高位存的还是从高位到低位存的)。

对于要不要用高精度,可能可以先写一份用 long long 之类的的代码,然后拿它跑极限数据看会不会爆 long long。但是这样会不会爆成负数又加回正数从而导致判断失误啊?

T3

感觉是非常巧妙的背包题。

数据范围较小,想:

  • 状压
  • 搜索
  • 高维 DP

此题即高维 DP。

有序枚举颜色来填以满足第一种限制(同一行的两个相邻点,左点的颜色 <= 右点的颜色)。此处我从小到大枚举颜色。

设 \(f _ { i, a, b, c, d }\) 表示当前填了第 \(0\) 到 \(i\) 个颜色,\(4\) 行分别填到第 \(1\) 位到第 \(a, b, c, d\) 位的方案数。

现在考虑第二种限制怎么满足。假设要求 \(a\) 处理的行上的第 \(x\) 位和 \(b\) 处理的行上的第 \(y\) 位颜色相同。那么填某一种颜色后,要么 \(a < x\) 且 \(b < y\),要么 \(a \geq x\) 且 \(b \geq y\)。那么可以预处理出哪些状态是不能要的,每一种颜色填完后就把这些状态的方案数赋为 0。

那么现在考虑怎么转移。考虑一位一位转移,外层循环枚举颜色,内层枚举转移哪一行的哪一位,像完全背包那样转移。[本质是高维费用的完全背包,每一个物品是在某一行往右多填一位,费用是 1。](?)于是可以把 \(i\) 那一维去掉。

[std](?)的代码写得很好看。可以参考。我补的代码也是这种写法。

启发:这种多个并列的东西(如本题中的 \(4\) 行),可以考虑高维 DP,每个开一维。

T4

题解好像是状压 DP,用矩阵快速幂来优化。[感觉和我的本质上应该差不多。](?)

我的做法:
两行为一个状态,把状态作为点,根据合法转移在状态之间连边,用邻接矩阵记录,跑邻接矩阵的快速幂再统计答案即可。不管不合法的状态来节省时空。
启发:这种状态转移求路径数的 DP 可以转换成图论题用邻接矩阵快速幂做。

2024.8.30

标签:颜色,2024.8,30,long,DP,100,高维
From: https://www.cnblogs.com/huangkxQwQ/p/18389646

相关文章

  • 2024/08/30 每日一题
    LeetCode3153所有数对中数位差之和方法1:模拟classSolution{publiclongsumDigitDifferences(int[]nums){intn=nums.length;longans=0;while(nums[0]>0){//遍历每一位inttol=0;//统计总个数i......
  • atc 经典dp 26题 题型总结
    题目链接稍微记录下吧。主要想发现他这个题单主人是怎么去分类dp的类型的。借鉴题目不一定要多难。但是题型的分类总结感觉很重要。某种dp的处理方式。。他是相似的。。AB数组前面往i+1,i+2.。。这样的推。C限制只能交叉继承。。不能继承pre一样位置的。他每......
  • 工作随意总结20240830
    最近被裁换工作了,面试过了一个测开岗位,正好趁着入职前的空闲时间,总结一下过去工作中的经历,想到哪写到哪吧,定期总结很重要。工作主要在一家ToB云服务厂商从事测试工作,工作内容主要涵盖了功能、自动化、渗透、性能等方方面面,覆盖到面很广,单一某方面来说深度上就有一些欠缺......
  • 代码随想录算法训练营,8月30日 | 203.移除链表元素, 707.设计链表, 206.反转链表
    链表理论基础1.单链表:数据域和指针域(指向下一个结点的位置)组成,头结点,结尾为空指针;双链表:多了一个指向前一个结点的指针;循环链表:结尾指向头结点。2.链表在内存中的存储不是顺序的,跟数组不同,要找一个数据只能通过前一个数据来找,所有这就导致链表的查询比数组麻烦,但是插入删除数据......
  • Luogu P10997 Partition 题解 [ 蓝 ] [ 轮廓 dp ]
    Partition:一道dp神题,用到了以轮廓线的轨迹来做dp的技巧,和敲砖块这题的状态设计有点相似。观察首先观察样例,发现整张图可以看作是被两条线分隔开的。同时每个颜色的四个方向上又存在一大堆奇怪的性质,很容易发现这两条线一条是从左上到右下的线,另一条是从右下到左上的线。暴......
  • 【dp力扣】买卖股票的最佳时机III
    目录审题通过动态规划固定套路思考:1、定义状态表示(关键)2、推导状态转移方程(重点)对于buy(可买入股票):回顾状态表示:第一种情况:第二种情况:联立两种情况(取两种情况的最大值):​对于own(持有股票)回顾状态表示:第一种情况:第二种情况:(最终结果)联立两种情况(还是取max):3、初......
  • zdppy_cache缓存框架升级,支持用户级别的缓存隔离,支持超级管理员管理普通用户的缓存
    启动服务importzdppy_apiasapiimportzdppy_cachekey1="admin"key2="admin"app=api.Api(routes=[*zdppy_cache.zdppy_api.cache(key1,key2,api)])if__name__=='__main__':importzdppy_uvicornzdppy_uvico......
  • 数位DP小记
    1.基础1.1.问题数位DP解决的一般都是和数字相关的计数问题,常见的有\(l\simr\)中有多少数符合某个关于数位的条件。对于这种问题,我们都是先用前缀和转化成小于等于某个数的问题。下面以P2602[ZJOI2010]数字计数为模板题。1.2记忆化搜索我们先枚举每个数码。我们......
  • 2024-08-30 error [email protected]: The engine "node" is incompatible with this m
    删掉依赖,使用yarn重新拉取,保错如下:[email protected]:Theengine"node"isincompatiblewiththismodule.Expectedversion">=18".Got"16.19.1" 错误[email protected]:引擎“节点”与此模块不兼容。预期版本“>=18”。得到“16.19.1”意思就是yarn拉取依赖过程中......
  • 基于SSM的公交车客流自动调整系统的设计与实现 毕业设计-附源码03009
    摘要随着城市公共交通需求的日益增长,公交车客流量的自动调整成为提升公交服务质量和运营效率的关键。本文提出了一种基于SSM(Spring、SpringMVC、MyBatis)框架的公交车客流自动调整系统的设计与实现方案。该系统通过实时监测公交车客流数据,结合预设的规则和策略,自动调整公交......