ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[总结]2022/1/22

2022-01-22 22:03:37  阅读:158  来源: 互联网

标签:总结 22 min T4 T2 T3 循环 2022 dp


[总结]2022/1/22

P1心路历程

赛时

开题看到T1,直接放弃。(因为恶心的题目要求导致暴力很难写)然后看T2,一开始看到觉得很疑惑:输入数据呢???然后反复读了几遍题,才发现输入数据(或者说是需要的数据)是要自己手推的。反应还算快,主要是之前见过这个类型的题。
花了一点时间,想了一下。发现可以用 \(O(n)\) 的算法,但依旧会炸。\(n \le 1e9\)。结果,旁边的同学提醒了一下,说:“长度不一定为 \(k\) ,可以为\(k-n\)的任意一个数。”好家伙,直接放弃自己的想法,打起 \(O(n^2)\) 的暴力。虽然后面发现数据会出现循环节,但是依旧没有推出来。
看到后面的T3、T4,T3完全不会,一开始还以为是拓扑排序。主要是没有审好题目,如果看见了:

上菜的顺序只能是从 \(1-n\) 。

也许就会想到DP了。
最后干T4,用了 \(\text{map+BFS}\) 来干。一下子过了样例,自信满满的认为可以拿至少50分。

赛后

***,T4才10分,我还不如直接打表。
T2的20分是在我的预料之内的,毕竟是 \(O(n^2)\) 嘛。但是如果加一个预处理就可以AC了:n=min(n,4002)。这是为什么?
T3居然又是多维dp,最近真的对dp感觉很不好,要不就是看不出来是dp,要不就是把题目误认为是dp,要不就是不会设状态、转移状态。但改题的时候又马上能听懂。
T1的插头+状压+轮廓线dp是个什么牛马?

P2比赛反思

这次没有抱着积极的心态去打比赛,更多是消极的。因为开始看到题目是在太难了。虽然后面老师过来说了一下,心态改变了一下,也想到了T2的循环节,但是已经晚了。
其他都还好,就是比赛的时候思路堵塞了,怎么想的想不出来。(建议学习Cold_Chair的上厕所大法,之前真的有用,有助于思考)

  1. 要抱着积极的心态去打比赛。
  2. 遇见难题,不要轻易放弃(赛后秒AC两题)。
  3. 对于自己的思维堵塞,尝试多想想,比如T2就差亿点想出正解。

P3感想

  1. 提升自己的思维,不要造成思维僵局。
  2. 多学点dp,比如T1讲完题之后还是不会。
  3. 保持乐观的心态。
  4. 二分是万能的、dp是万能的、搜索是万能的、暴力是万能的,其他对我来说是无能的。

P4题目总结

T1

神奇的插头dp+状压dp+轮廓线dp。

T2

是一个结论题。显然,循环节的最大长度是 \(2m+1\),然后一个循环节的值的和为0。所以我们要选择最少的循环节。\(k\) 以上的长度的最大值要不就是在一个循环节之内,要不就是两个循环节拼起来的一部分。所以我们只用求2个循环节,然后直接暴力。再看看数据范围:

\(m \le 1000\)

那么一个循环节的最长长度是 \(2m+1\),又因为至少需要两个循环节,所以就是 n=min(n,4002)

T3

简单的四维dp题。设 \(f(i,j,k,l)\) 为:第1种菜选了前i个,第2种菜选了前j个,第三种菜选了前k个,当前最后一道菜是属于第l种菜的最小花费。
那么,分类讨论,分l是1、2、3的情况讨论。对于l=1的时候,我们只能从 \(f(i-1,j,k,1),f(i-1,j,k,2),f(i-1,j,k,3)\) 来转移。为什么是 \(i-1\) 呢?因为当前要取第一种菜的一个,且从开始到现在一共取了 前 \(i\) 个第一道菜,所以要 \(i-1\)。其余的转移方程显然,下面给出。

\[\begin{cases} l=1,i \ge 1 & f(i,j,k,l)=\min \{f(i-1,j,k,1)+t(1,i),f(i-1,j,k,2)+t(1,i)+T,\\f(i-1,j,k,3)+t(1,i)+T\}\\ l=2,j \ge 1 & f(i,j,k,l)=\min \{f(i,j-1,k,1)+t(2,j)+T,f(i,j-1,k,2)+t(2,j),\\f(i,j-1,k,3)+t(2,j)+T\}\\ l=3,k \ge 1 & f(i,j,k,l)=\min \{f(i,j,k-1,1)+t(3,k)+T,f(i,j,k-1,2)+t(3,k)+T,\\f(i,j,k-1,l)+t(3,k)\}\\ \end{cases} \]

写在代码一共9个转移方程,细节还蛮多的,慢慢调吧。

T4

显然如果单纯的搜索,无论什么搜索都不行。所以要用双向BFS。但是开始节点和最终的节点以及他们的后面的转移都放在一个队列里面。
然后就是判重的问题了。如果单纯hash,你会发现可以AC,但是特别烦,因为余数有相同的情况。所以要用康托展开优化。用康托展开+hash,那么每一个排列对应的数都是固定的,所以hash不会有很多余数相同出现。即使出现,也可以用拉链法等等方法。

标签:总结,22,min,T4,T2,T3,循环,2022,dp
来源: https://www.cnblogs.com/xmtxlym/p/15835216.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有