当前位置: 首页 > news >正文

国庆梦熊集训做题记录

炼石计划

  • T1:https://www.cnblogs.com/yanbinmu/articles/19122547
  • T2:https://www.cnblogs.com/yanbinmu/articles/19122718

D3 作业

A. 关于整除分块

B. 题解:ABC192F Potion

最开始的想法遍历 k 判断可行,然后再想办法把时间求出来。
判断可行是很简单的,我们只需要满足 \(\sum_{i=1}^k a_{e_i} \equiv x \pmod k\)
这个是好算的,我们做一个模 k 的可行性 01 背包。
然后去向如何找那个加起来的时间,发现可以将这个时间放到 dp 值里面存着,维护模 k 是 j 的最大加和就做完了。

C.Vanya and Treasure

显然的,我们按照开箱子的顺序,记录 \(f_{x, y, p}\) 表示我开某一个 p 类型的箱子后,我站在 \((x, y)\) 上。
这个的转移是我去枚举我下一个类型的箱子开哪个。
然后这个东西发现他的转移会被卡到 \(O(nm)\) 就烂掉了。
我们考虑一个经典的东西,我们看到这种曼哈顿距离可以考虑四个象限来想,分别维护四个象限的前缀最小值。
这个东西用二维前缀和维护不了,但是我们可以扫描线或者二位树状数组来做,注意初始化的手法,不要忘记抹去最开始写的一些东西

D.ABC134F Permutation Oddness

简单说说题面,问你 \(a\) 是一个长度为 \(n\) 的排列, 问有多少个怪异值,即 \(\sum_{i=1}^{n} |i - a_i| = k\)\(a\)
对于这种绝对值形式的东西,我们可以考虑拆贡献,其中 \(i\) 或者 \(a_i\) 是较小的时,那么贡献是 -1,否则是 +1。
那么这就是将 \(i\)\(a_i\) 配对。
考虑一个朴素的 DP,\(\displaystyle f_{i, x, y, k}\) 是遍历到第 i 对,前面有 x 个下标没配对,y 个值没配对,已经有 k 个贡献的方案数。
显然的,如果我确定一个值或者下标是向后或向前匹配了,那么他对怪异值的贡献就确定了。
然后我们推导转移时可以发现,如果互相指,那么都不变,而后分析,如果两个都向前或都向后,那么 x,y 均加一或减一,如果一个向前一个向后,x,y 是不变的。
这样 x 和 y 的值就是一样的,我们可以将状态砍掉一维。
转移就很好推了。

http://www.hskmm.com/?act=detail&tid=23631

相关文章:

  • 文件的逻辑结构
  • python 肘部法则,判点聚类分为几类,K-means聚类分析
  • AT_abc315_f [ABC315F] Shortcuts
  • 紫外UV固化太阳光模拟器的原理 - 教程
  • 每日一题
  • P5709 【深基2.习6】Apples Prologue / 苹果和虫子
  • 问题表 - microsoft
  • Leetcode 736. Lisp 语法解析
  • Day10.1
  • SolarWinds Web Help Desk远程代码执行漏洞分析
  • Aria2安装
  • 正则表达式学习
  • 深入解析:[特殊字符]函数指针:C语言的动态灵魂,嵌入式的超能力(202589)
  • 《电路基础》第八章学习笔记
  • 《电路基础》第七章学习笔记
  • LLM大模型:deepseek sparse attention是个啥?
  • Day10
  • 软著申请全流程材料模板,2025年最新模板汇总! - 实践
  • 手把手教你使用 Docker 部署 Nginx 教程
  • CF2129 CF1951 VP 记录
  • PWN-BUUCTF-test_your_nc
  • 详细介绍:计算机视觉:OpenCV+Dlib 人脸检测
  • python 老生常谈的找2个excel相同列的行,把其中一个excel行的对应的值放入到另一个excel中
  • 实用指南:淘宝团购上线:本地生活的“两种解法”
  • 【K8S】Kubernetes 调度器深度解析:原理与源码分析
  • 快速幂算法的基础和扩展
  • 堆叠集成
  • 概率与决策 - 模拟程序让你在选择中取胜
  • 题解:qoj6504 Flowers Land 2
  • Prophet