首页 > 其他分享 >做题笔记(二)

做题笔记(二)

时间:2024-08-11 19:16:34浏览次数:8  
标签:对于 pos 笔记 3k mathcal SG mathrm

30 mins 还没想法的题或者值得记录的题目:

CF1566F - Points Movement *2600

自己只会 \(\mathcal{O}(nm^2)\) 的 DP,当时以为 DP 没有前途,转而去想其他做法,但是实际上正解就是 DP。

首先要把题目简化,不要让没用的东西影响思考,这一步虽然是简单的,但是确确实实能优化算法。

对于已经被点覆盖到的线段和包含其他线段的线段,可以去掉。

CF1498D - Bananas in a Microwave *2200

这题提供了 另一种求解可行性多重背包 的方法,将物品个数的看作是对转移次数的限制。

设 \(f_i\) 表示之前凑出 \(i\) 最早在哪里,然后 \(g_i\) 表示 这一轮 凑出 \(i\) 所需的最小步数,一开始 \(g_i = [f_i = \inf] \times \inf\)。

对于加法我们有 \(g_{i + a} = \min(g_{i + a}, g_i + 1)\),对于乘法可以 \(g_{p} = \min(g_{p}, g_i + 1)\),一个转移合法,当且仅当 \(g_i \le y\),那么更新 \(f\) 数组即可。

相似题:POJ 1742 Coins。

这东西可扩展性非常广,对于不能保证 \(k\) 和 \(\mathrm{op}(k)\) 大小关系的,可以利用桶优化 Dijkstra 一样做到 \(\mathcal{O}(V)\)。

upd on 8.11:假了,可能会出现先超出值域再变回来的情况。

CF1863G - Swaps *2800

想到了 \(i \to a_i\) 连边,每个连通块独立,这个的交换两点等于交换出边。

然后不清楚贡献怎么算,实际上遇到这样的问题首先考虑树的做法,再考虑加上一个环的解法。

发现了 \(u \to v, v \to v\) 的结构,对于 \(u\) 操作是没用的。

模拟一下发现了操作一下 \(u \to v\),就会让 \(v\) 变成一个自环。

但是自己没有结合起来考虑,也就是每个点的入边最多选一条。

那么对于树的答案就是 \(\prod (\mathrm{ind}_i + 1)\),加一是因为可以不选,这样进一步发现所有的树上的点都独立了。

考虑环上:

首先去思考对树的解法放到环上有什么影响,答案是算重了。

一个环有 \(n\) 个点 \(n\) 条边,但是发现我们选择 \(n - 1\) 条边就已经将所有的点变成自环了。

那么对于这种情况,实际上就是有 \(\sum_{i \in \text{cycle}} d_i\),对于 \(i \to a_i\) 这条边钦定不选,那么其他 \(x \to a_x(x \not= i \and x\in \text{cycle})\) 都选上了,这个点还可以在剩下 \(d_i - 1\) 条边中选或不选,有 \(d\) 种方案。

那么环的答案就是 \(\prod (\mathrm{ind}_i + 1) - \sum_{i \in \text{cycle}} d_i\)。

对于不同的部分显然是独立的,那么直接乘起来。

CF1327F - AND Segments *2500

首先每一位是独立的,限制形如区间均为 \(1\) 和区间存在 \(0\)。

然后卡住了,没有什么解题方向,实际上这时候应该先去考虑暴力的 DP。

设 \(f(i, j)\) 表示填了前 \(i\) 个位置,最后一个 \(0\) 的位置为 \(j\) 的方案,预处理出一个 \(\mathrm{pos}(i)\) 表示 \(i\) 之前(不含 \(i\))的 \(0\) 能放到的最前的位置。

对于一个限制 \(\exists i \in [l, r], a_i = 0\),我们令 \(\mathrm{pos}(r + 1) = \max(\mathrm{pos}(r + 1), l)\)。

然后考虑 \(f(i, j)\) 暴力的转移:

若 \(j < \mathrm{pos}(i)\),\(f(i, j) = 0\),这个,直接维护前缀为 \(0\) 的位置即可。

若 \(\mathrm{pos}(i) \le j < i\),\(f(i, j) = f(i, j - 1)\),这个相当于不用转移。

若 \(j = i\),如果限制了 \(a_i = 1\),那么答案为 \(0\),否则答案为 \(\sum\limits_{k = \mathrm{pos}(i)}^{s} f(i - 1, k)\),此时相当于是整个数组的和,维护这个即可。

于是转移均摊 \(\mathcal{O}(1)\),总复杂度 \(\mathcal{O}(k(n + m))\)。

以这题为基准,还有许多应用:P6773,P4229,ABC262Ex。

CF1218G - Alpha planetary system *3000

首先我想到了第一步:将三组数分为 \(3k,3k + 1,3k + 2\) 的形式。

当时我认为这个很难直接构造,先思考了二分图的情况,实际上这也是重要的,但是突破口有问题,直接在 DFS 树上构造就至多会有一个不合法!

启发:图的问题先思考树的情况。

对于这一个不合法的,自然是想办法调整。

发现图中有奇环的情况,我们可以 \(+1, +2, +1, \dots\) 来使得这个点的权值加 \(1\),其他点不变。

否则,说明图是一个二分图。

转而思考将图分成 \(3k + 1, 3k + 2\) 的情况,不妨令根 \(r\) 的目标为 \(3k + 1\)。

若 \(w(r) \not= 2 \pmod 3\),那么直接合法,因为下一层的点的 \(w = 2\)。

若根的度数为 \(1\),那么也无妨,因为题目保证了 \(n \ge 3\),所以下面的点的权值一定大于 \(r\) 的权值。

否则考虑 \((r, x), (r, y)\) 这两条边,令其都加一,最后得到 \(w(r) = 1, w(x) = w(y) = 0\)。

因为 \(x,y\) 不相邻(否则存在奇环),并且其他位置没有 \(w = 0\) 的情况,所以这是合法的。

CF1312F - Attack on Red Kingdom *2500

博弈论好题。

对博弈论方面不够敏感,花了 30mins 才往每个游戏组合起来和 SG 函数上去考虑,然后问题就在于 \(a_i\) 过大,无法暴力求解 SG 函数。

这题的关键在于寻找 SG 函数的循环节。

将连续 \(5\) 个 SG 函数(共 \(15\) 个数字作为一个组合),暴力查找循环节,理论上的最劣情况是 \(4^{15}\),但是实际上这个值不会超过 36。

那么我们可以快速算 SG 函数,问题也就迎刃而解。

标签:对于,pos,笔记,3k,mathcal,SG,mathrm
From: https://www.cnblogs.com/z-t-rui/p/18353762/note2

相关文章

  • Datawhale X 魔搭 AI夏令营-AIGC文生图-task1-笔记
    目录1赛题解读2文生图的历史3文生图基础知识介绍3.1提示词3.2 Lora3.3 ComfyUI3.4 参考图控制4实践-通过代码完成模型微调&AI生图-Test4.1 体验baseline4.2上传至魔搭社区4.3尝试baseline-改了prompt很幸运能够发现这样一个宝藏!“从零入门AI生图原......
  • GOT & PLT 易于理解的个人笔记
    为什么我们用动态链接和GOT表我们知道静态链接就没那么多事,直接把全部要用的函数都绑定在一起,各个变量和函数之间的偏移量当然能算出来。但是这也恰恰是静态链接的缺点,相同的代码段反复调用真是太臃肿了!于是我们决定把常用的库单独拿出来给大家用,我们还知道,.text是不可修改的,......
  • PointNet++笔记
    pointnet++论文题目为:PointNet++:DeepHierarchicalFeatureLearningonPointSetsinaMetricSpace。在这篇文章中,作者对pointnet进行了一些改进,因为原始的pointnet对于规模较大的点云时,性能就显得不够了。在论文的摘要开头也指出了这一点:“However,bydesignPointNetdo......
  • 【学习笔记】Matlab和python双语言的学习(图论最短路径)
    文章目录前言一、图论基本概念示例二、代码实现----Matlab三、代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1EK41187QF?p=36&vd_source=67471d3a1b4f517b7a7964093e62f7e6一、图论图论(G......
  • 【C++学习笔记 16】构造函数初始化列表
    当编写类并向其中添加成员时,通常需要某种方式对这些成员进行初始化。常见的方法,如写一个构造函数赋初值classEntity{private: std::stringm_Name;public: Entity(){ m_Name="UnKnow"; } Entity(conststd::string&name){ m_Name=name; } constst......
  • 算法笔记|Day22回溯算法IV
    算法笔记|Day22回溯算法IV☆☆☆☆☆leetcode491.递增子序列题目分析代码☆☆☆☆☆leetcode46.全排列题目分析代码☆☆☆☆☆leetcode47.全排列II题目分析代码☆☆☆☆☆leetcode332.重新安排行程(待补充)题目分析代码☆☆☆☆☆leetcode51.N皇后(待补充)题目分析......
  • 论文笔记:GeoShapley: A Game Theory Approach toMeasuring Spatial Effects in Machin
    (GeoShapley:机器学习模型中测量空间效应的博弈论方法)话题点:geoshapley、XAI、空间效应、非线性一、引言机器学习和人工智能(AI)越来越多地用于模拟地理空间现象,在各个领域都有很好的表现。可解释人工智能(XAI)领域的最新进展为解释黑箱机器学习提供了一种解决方案。排列特征......
  • 高等数学学习笔记(一)
    高等数学学习笔记最近入门了高等数学,特此记录一下学习到的重点。Chapter1实数与实数集这部分内容高中已经接触过很多了,仅补充一些未曾了解过的。1.完备性实数集不仅对加减乘除开方运算封闭,并且对于极限运算也封闭,这个性质被称为“完备性”。实数中的集合通常称为数集。2.......
  • 李宏毅-机器学习-笔记-P1
    P1机器学习基本概念(一)一、机器学习是什么?        MachineLearning≈Lookingforfunction、函数太过复杂,让机器来找比如:SpeechRecognition(语音识别):声音信号通过函数转化为文字,输入到输出      ImageRecognition(图像识别)、PlayingGo二、着重关......
  • 深入浅出!这份阿里内传的“Spring-MVC源码分析与实践笔记”带你看透Spring-MVC源码!太牛
    第二章常见协议和标准DNS协议TCP/IP协议与SocketHTTP协议Servlet与JavaWeb开发第三章DNS的设置DNS解析Windows7设置DNS服务器Windows设置本机域名和IP的对应关系第四章Java中Socket的用法普通Socket的用法NioSocket的用法第五章自己动手实现HTTP协议第六......