ICode9

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

邓明扬杂题选讲

2022-08-02 18:36:10  阅读:125  来源: 互联网

标签:星星 选讲 失配 邓明扬 位置 枚举 杂题 可以 dp


stars

一颗星星可以抽象成 \(k\) 维空间中的一个整点。称若干星星构成的集合 \(S\) 是奇妙的,当且仅当存在 \(k\) 维空间中的整点 \(p\)(\(p\) 处可以有星星也可以没有),\(p\) 与 \(S\) 中的每颗星星至少有一维坐标相同。

有一个长度为 \(n\) 的星星序列 \(A\),请你求出所有奇妙子段的长度之和。

\(n \le 10^5\),\(k \le 5\) 。

考虑如何判定一个序列是奇妙的,由于 \(k\) 很小,我们可以枚举全排列,枚举 \(p\) 的哪个位置用于解决第一个点,然后往后推看有多少点顺带被解决了,遇到下一个不能解决的点再枚举 \(p\) 的一个位置。

不难发现只需要枚举长度为 \(k\) 的所有排列就可以判定合法性,但是暴力判定还是不可行,我们考虑用 \(dp\) 来优化这个过程,由于排列非常小我们可以直接记录在状态里。设 \(dp[i][s]\) 表示后 \(i\) 个点用位置排列 \(s\) 的最远延伸距离,考虑如何转移。

从右向左转移,维护每个维度失配的位置。

\(s\) 中的第一个位置会用来解决新增的左端点,剩下的是一个子问题,我们先用剩余的长为 \(k-1\) 的序列从 \(i+1\) 开始向后匹配,对于一个失配的位置,如果它可以被原来的第一个位置所解决,那么实际上在这一位是不会失配的,我们可以将原序列的第一个维度插入这个位置得到 \(s'\),\(dp[i][s]\) 可以从 \(dp[i+1][s']\) 转移。

[PA 2021] Od deski do deski

有 \(n\) 棵树,每棵树有可能是 \(m\) 种之一。

小 \(C\) 每天可以选择连续的一段树砍掉:要求这一段的长度至少是 \(2\),并且第一棵与最后一棵种类相同。

问有多少种初始局面,使得存在一种方法通过若干天将树砍光。对 \(10^9 + 7\) 取模。

\(n <= 3000\),\(m <= 10^9\)

标签:星星,选讲,失配,邓明扬,位置,枚举,杂题,可以,dp
来源: https://www.cnblogs.com/A-Quark/p/16544801.html

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

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

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

ICode9版权所有