JSOISC2022模拟1

wonderfish / 2023-08-02 / 原文

update 2022-07-14


T1

不是很难,可以先算出编号有多少位,然后再从左边第一位开始计算每一位。但是考场上因为亿些细节问题调了很长时间(


T2

其实考场上想出了 \(60pts\) 的暴力,但是因为不会证明误以为是错的于是写了 \(20pts\) 的暴力。

\(60pts\)\(n^{2}\) 暴力,就是枚举选择的门派数量 \(i\) ,再找到 \(i\) 个门派下的最大战斗力。具体可以选择前 \(i\) 个门派最强士卒,再从剩余的士卒中选择 \(w\)\(k-i\) 大的。不用考虑这些士卒是否会增加门派数量,因为考虑一定比不考虑更优,会覆盖不考虑的最大值。(当时就没想到这些(wssb

我太蒻了

正解就是先把所有士卒按 \(w\) 从大到小排序,先选择前 \(k\) 大的士卒,再按 \(w\) 由大到小枚举剩余的士卒,如果枚举到的士卒的门派没出现过,就试着用他替换前面的战斗力最低的非门派最强士卒。如果替换过后的总战斗力大于当前的 \(ans\) ,就更新 \(ans\) 。具体实现可以用小根堆存前 \(k\) 个士卒中的非门派最强士卒,更新的士卒不需要加入堆,因为他一定是门派最强。

感觉这题主要难在贪心思路的证明。


T3

容斥原理

容斥原理

zzk布置的容斥原理补充题:

  1. \(n\) 个有标号小球,放入 \(m\) 个有标号盒子,盒子非空,求方案数
  2. \(n\) 个有标号小球,放入 \(m\) 个无标号盒子,盒子非空,求方案数
  3. bzoj 2839(现在 bzoj 炸了,可以用 darkbzoj)
  4. \(n\) 个元素的排列恰好有 \(k\) 个位置错排的方案数

解题思路大概是仿照错位排列,可以钦定排列有 \(l\) 个位置恰好满足 \(|p_{i}-i| = k\) ,这样的排列数量记录为 \(f(n,l)\)

对于 \(60pts\) 可以直接暴力求解 \(f(n,l)\)

对于正解我先把前置知识学完再写(咕咕咕


T4

写不出来怎么办(wssb

(先学习前置知识吧(((

虚树

P2495 题解

洛谷日报:浅谈虚树

线段树相关

线段树相关寄巧总结

线段树分治

线段树分治总结

P5787 题解


后寄

好多坑啊填不完了填不完了qwq