首页 > 其他分享 >近期题解(2024.7.26)

近期题解(2024.7.26)

时间:2024-07-26 13:50:23浏览次数:14  
标签:26 log 2024.7 题解 复杂度 tag 同色 物品 dp

CF1070A Find a Number

一个朴素的想法是设 \(dp_{x,y}\) 表示模 \(d\) 为 \(x\) 且和为 \(y\) 的最小值,那么答案就是 \(dp_{0,s}\)。

自然初始状态为 \(dp_{0,0}=0\),但是我们发现这个转移关系是带环的,所以说要把这个 dp 换成最短路。

直接从 \((0,0)\) 为源跑一遍 bfs 即可,时间复杂度 \(O(sd)\)。

提交记录

CF1840G1 In Search of Truth (Easy Version)

猜环长这种东西,有个经典的类似 BSGS 的猜法。

考虑设置一个步长 \(B\),先一步一步地跳,把环的前 \(B\) 个位置给跳上,并标记好是在第几步被跳到的。

随后按照我们设置的步长 \(B\) 步一次地跳,因为余数小于除数,所以这么跳完一圈之后一定会落在前 \(B\) 个位置上,又因为我们知道前 \(B\) 个位置是环上的第几个点,所以我们可以直接算出环长。

取 \(B=\sqrt n\) 可以得到 \(2\sqrt n\) 左右的上界询问次数,可以通过 Easy Version。

提交记录

CF731E Funny Game

因为二人都选最优的决策,所以说我们的决策是跟未来有关的,考虑倒着 dp,设 \(dp_i\) 表示 \([i,n]\) 这个后缀内的最大得分。

记 \(s_i\) 表示前缀和数组,容易发现考虑 \([i,n]\) 这个后缀时 \(s_{i-1}\) 的贡献是一定要被算上的,所以我们就有转移 \(dp_i=\max_{j>i}\{-dp_j+sum_{j-1}\}\),显然维护个后缀 \(\max\) 就能快速转移,时间复杂度 \(O(n)\)。

提交记录

CF1826E Walk the Runway

视每个物品拥有 \(m\) 个属性的话,那么选择两个物品的限制其实是一种 \(m\) 维偏序。显然地,如果 \(a,b\) 能同时选且 \(b,c\) 能同时选,那么 \(a,b,c\) 也是能一块选走的。

所以如果我们能够处理出任意两个物品之间能否都选,那么我们按照任意一维排序后从前往后 dp 就能统计出答案了(因为要满足限制任意一维一定是递增的),所以就去思考怎么处理这个东西。

多维偏序本身就有经典的 bitset 解法,这里我们也可以试下。先把 \(m\) 维全都分开考虑,把所有物品按照当前考虑的这一维属性排序,然后每个物品在单独这一维下能选的物品就是它前面的物品,那我们直接把 \(m\) 维可选的物品取个并即可,可以使用 bitset 维护。

细节:排序后要对每个相同的段考虑。

时间复杂度 \(O(nm\log n+\frac{n^2m}{w}+n^2)\),分别是排序、bitset 和 dp 的复杂度。

提交记录

CF1638E Colorful Operations

这不是板子题/xk。

考虑颜色段均摊,先上一个 set 用来维护连续段,思考如何维护加法操作。

不妨采用标记的方式,令 \(tag_x\) 表示颜色 \(x\) 应该额外加上的值,对于 Add 操作直接在 \(tag\) 数组上修改。对于区间覆盖操作时,假设有一段区间 \([l,r]\) 要从颜色 \(x\) 覆盖成 \(y\),那直接为 \([l,r]\) 这段区间加上 \(tag_x-tag_y\),减去 \(tag_y\) 是因为之前给颜色 \(y\) 的加法这段区间不应该算上。输出时直接加上对应位置的 \(tag\) 即可。

上面的操作只需要一个树状数组来维护,根据经典结论总时间复杂度为 \(O(q\log n)\)。

简要说下正确性:容易发现每一次区间染色操作至多会使整个序列的连续段个数加 \(1\),同时我们可能会删除一些连续段,但是每个连续段至多只会被删除一次,每次加入/删除连续段的复杂度是 set 的 \(\log\),所以总复杂度为 \(O(q\log n)\)。

提交记录

CF1697E Coloring

考虑对于每个点求出来到其它点的最短距离,然后再向达到最短距离的点连一条单向边。

我们取出所有的极大的双向联通子图,如果这个子图是完全图那么其所有点要么同色要么互不相同,否则全都互不相同。

对于可以染成同色的点集我们称之为同色点集,那我们先对所有同色点集做一个背包,设 \(dp_i\) 表示使用 \(i\) 种颜色的方案数,每个同色点集可以贡献的颜色数为 \(1\) 或点集大小。

答案即为 \(\sum_{i=1}^n\binom{n}{i}i!dp_i\),也就是选出来 \(i\) 种颜色再考虑染色顺序。

时间复杂度 \(O(n^2)\)。

提交记录

标签:26,log,2024.7,题解,复杂度,tag,同色,物品,dp
From: https://www.cnblogs.com/los114514/p/18325211

相关文章

  • 题解:Codeforces Round 961 (Div. 2) C
    C.Squaringtimelimitpertest:2secondsmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputikrpprppfoundanarray\(a\)consistingofintegers.Helikesjustice,sohewantstomake\(a\)fair —thatis,makeitnon......
  • 魔术上网导致Github push 443 问题解决方法
    问题描述使用“kexue上网”工具后,在IDEA中push代码到github时,报错:Failedtoconnecttogithub.comport443:Operationtimedout。同时,使用浏览器访问github也会出现无法访问,偶尔能访问的情况。解决办法gitconfig--globalhttp.proxyhttp://127.0.0.1:1087git......
  • 【题解】「CSP模拟赛」雨天 rain
    雨天rain考场上打了一个动态开点线段树,但是被卡空间了......
  • 最小循环节——题解
    最小循环节题目链接题意简述我们需要找到一个字符\(s\)的最短的循环节,对循环节的定义为,当一个字符串\(t\)能够通过若干次自己加自己得到字符串\(s\),我们就称\(t\)是\(s\)的一个循环节。思路简述根据题意,字符串\(s\)本身就是自己的一个循环节。所以,当我们找不到更......
  • 使用React脚手架时npx速度慢的问题解决
    React作为目前最流行的前端框架之一,其开发效率和组件化特性受到了开发者的广泛欢迎。然而在使用React脚手架工具,如create-react-app进行项目初始化时,有时会遇到npx命令执行速度非常慢的问题。本文将探讨这一问题的原因,并提供一些有效的解决方案。问题分析npx是Node.js包管......
  • P9304 「DTOI-5」3-1题解,c++树的遍历例题
    题意给定以n(1≤n≤1......
  • 力扣3226 使两个整数相等的位更改次数
    写的代码:classSolution{public:stringcc(intnum){stringres="";while(num>0){intr=num%2;res=static_cast<char>(48+r)+res;num/=2;}returnres;}int......
  • 题解:P10570 [JRKSJ R8] 网球(未成功)
    题目链接博客食用更佳:Myblog。这道题不是很难。提交记录分析:\(A\)每转\(a\)圈,\(B\)就转\(b\)圈,不考虑\(c\)的前提下,可知每个齿轮转了\([a,b]\)个齿,\(A\)有\([a,b]\diva\)个齿,\(B\)有\([a,b]\divb\)个齿,接着扩倍扩到都大于\(c\)。拓展:\[[a,b]=......
  • Windosw下Visual Studio2022编译FFmpeg(支持x264、x265、fdk-acc)
            FFmpeg 7.0版本移除了6.0之前已弃用的API,无法向下兼容。所以编译的版本选择FFmpeg6.1.1。一、安装VisualStudio2022可参考另外一篇文章:Windows安装VisualStudio2022+QT5.15开发环境_qt5.15.2vs2022-CSDN博客 二、安装MSYS2下载地址:https://www......
  • 题解:P10721 [GESP202406 六级] 计算得分(未成功)
    博客食用更佳:Myblog题目传送门分析:这道题是一个标准的dp。我们可以先预处理多个\(\texttt{abc}\)连成的字符串的最大值,之后可以按最长平台的方法处理。步骤:初值:这题不需要赋值,因为题目保证得分是正的,故初值为\(0\)。状态:\(dp_i\)表示连续\(i\)个\(\texttt{abc......