首页 > 其他分享 >「赛后总结」暑假 CSP 模拟赛系列

「赛后总结」暑假 CSP 模拟赛系列

时间:2023-08-02 15:55:43浏览次数:55  
标签:T4 top T3 CSP 暑假 ans 考虑 round 赛后

「赛后总结」暑假 CSP 模拟赛系列

点击查看目录

目录

啥也不会。

对于我这种低水平选手来说补完所有题是比较困难的,写完所有题解更是困难,所以打算只写个人认为比较有意义的题。

都是校内题库的链接。

有 CF/AT 的 submission 的话会考虑直接放提交记录以减少文章长度。

20230728(fengwu round)

感谢彭师傅不斩之恩,做了一圈就彭师傅的最简单。

T3 Count Multiset

题解通道关了

但是:

image

洛谷题解

赛时爆标了。

首先为了方便,先不考虑相同元素出现次数的限制。

我们设 \(f_{i, j}\) 表示当前填了 \(i\) 个数,总和为 \(j\) 的方案数。

考虑一种奇妙的转移方式:

  • 向当前序列里加上一个 \(0\),即从 \(f_{i - 1, j}\) 转移过来。
  • 将当前序列全部加 \(1\),即从 \(f_{i, j - i}\) 转移过来。

第一种操作的例子是序列 2 2 3 加上一个 0 得到 0 2 2 3,由 \(f_{3, 7}\) 转移到 \(f_{4, 7}\);第二种操作的例子是 0 0 1 2 整体加 \(1\) 变为 1 1 2 3,由 \(f_{4, 3}\) 转移到 \(f_{4, 7}\)。

接下来开始考虑相同元素出现次数的限制。

既然有限制就不能随意加零,那么第一种操作贡献就应该是 \(\sum_{k = 1}^{m}f_{i - k, j}\),但是我们不知道之前的 \(f_{i - k, j}\) 有几个零,这样就不能直接转移。

考虑设一个辅助的 \(g_{i, j}\) 表示当前填了 \(i\) 个数,总和为 \(j\) 且 序列里不含有 \(0\) 的方案数。

\(g_{i, j}\) 很好转移,就是整体加一的情况,从 \(f_{i, j - i}\) 转移过来。

用这个可以很方便地转移 \(f_{i, j}\) 的第一种操作,即 \(\sum_{k = 1}^{m}g_{i - k, j}\)。

总结一下转移方程:

\[\begin{aligned} f_{i, j} &= f_{i, j - i} + \sum_{k = 1}^{m}g_{i - k, j}\\ g_{i, j} &= f_{i, j - i} \end{aligned} \]

考虑前缀和优化,\(O(n^2)\) 解决。

AT Submission.

T4 Julia the snail

有空写一下吉司机线段树学习笔记。

离线。我们设 \(ans_i\) 表示当前以 \(i\) 为左端点的区间的答案,不断移动右端点。

考虑将右端点从 \(r - 1\) 移动到 \(r\) 会有什么影响。

假设 \(l\) 是以 \(r\) 为右端点的线段的左端点,影响显然是对于 \([1, l]\) 中所有满足 \(a_i \ge l\) 的 \(i\),令其 \(a_i = r\)。

发现是比较后赋值。吉司机线段树,启动!

CF Submission.

20230730(ZZ作者 round)

T3 数组

观察欧拉函数式子:

\[\phi(n) = n\prod_{p\in\mathbb{P}, p|n}\frac{p - 1}{p} \]

那么我们要维护的就是区间积和区间积的质因数。前者随便维护,考虑后者。

观察数据范围,值域在 300 以内,300 以内恰好有 62 个质因数,考虑状压到一个 long long 里边即可。

预处理逆元和每个数的质因数状态会跑的飞快。

CF Submission.

T4 树

根号分治典中典!但是我还没补完!

20230731(Max_QAQ round)

image

什么 Cu 的教训。

T3 U

Rolling_star 好强,/bx

观察发现对于 \(k > 2\) 的期望相当于 \(k = 2\) 的期望乘上 \(\dbinom{n-2}{k-2}\),于是只考虑计算 \(k = 2\) 的情况。

首先我们使用经典 trick 边权化点权,然后考虑经过一个点 \(u\) 产生的贡献。

约定 \(a_u\) 表示 \(u\) 的点权,\(sz_u\) 表示 \(u\) 子树大小,\(top_u\) 表示 \(u\) 到根,\(ans_u\) 表示 \(u\) 子树内可以选的点的个数(即到 \(u\) 的路径上没有点权与 \(u\) 相同的点)。

\(a_u, sz_u, top_u\) 比较好算,\(ans_u\) 初始为 \(sz_u\),然后对于每个 \(v\) 都会对 \(ans_{top_v}\) 产生 \(-sz_v\) 的贡献。

预处理完后发现 \(\sum_{u = 1}^n ans_{u}ans_{top_u}\) 即是答案,但是发现根没有权值,所以对于 \(top_u = 0\) 这种情况无法计算。

考虑设 \(w_x\) 表示当根权值为 \(x\) 时的 \(ans\),那么 \(top_u = 0\) 的点 \(u\) 来说,其贡献为 \(ans_{u}w_{a_u}\)。

好了。

T4 E

?什么离谱题?

你观察数据范围发现数据随机,于是你考虑瞎写。

线段树维护,每个节点维护其代表的区间的宝石能组成的每种价值,考虑使用 vectorpair 维护每个区间。

查询/向父亲合并时遍历两个 vector,对原有的价值区间和新组合出来的价值区间去重。

理论上随便卡卡就会 TLE/MLE,但是出题人的随机数据成功把复杂度降到了 \(O(可过)\)。

20230801(letitdown round)

蚌。

image

image

整活大师叉哥,/bx

T2 神(eldenring

考虑 AC 自动机,删去/加入字符串可以直接在其结尾处节点打标记,查询直接在自动机上跑,不断跳 \(\text{fail}\)。

考虑优化。我们发现删去/加入字符串只影响其结尾处节点 \(\text{fail}\) 子树,考虑对 \(\text{fail}\) 树建出 DFS 序列然后树状数组处理,区间修改,单点查询,使用差分。

CF Submission.

T4 动(genshin

考虑设 \(f_u\) 表示从 \(u\) 节点逃离最小代价。转移方程:

\[f_u = \min_{v\text{ is in the subtree of }u} a_ub_v + f_v \]

你发现这玩意就是求一堆直线 \(y = b_vx + f_v\) 在 \(x = a_u\) 时的最小值。考虑李超线段树,支持插入查询与合并。

20230802(Max_QAQ round)

四个题三个概率期望,鉴定为:不可做场。

T1 随

假期望典中典!每一位是可以独立计算的,所以你只考虑每一位不在原位的概率。发现每一位概率相等

考虑设 \(f_{i, 0/1}\) 表示交换了 \(i\) 次,\(1\) 是否在原位的概率。

T2 便

T3 A

T4 C

标签:T4,top,T3,CSP,暑假,ans,考虑,round,赛后
From: https://www.cnblogs.com/Keven-He/p/contest-2023summer.html

相关文章

  • 牛客暑假多校 2023 第五场
    目录写在前面GDHCEI写在最后写在前面战犯在此。我宣布二周年这首是神。以下按个人向难度排序。G尺取法,右端点单调右移过程中右移调整左端点,使区间内每种数都至少出现1次,4出现至少\(k\)次即可。///*By:Luckyblock*/#include<cmath>#include<cstdio>#include<......
  • CSP2021 游记
    前言这个人是蒟蒻,初二,在机房属于是垫底。今年是第一次参加CSP-S,第二次参加CSP-J。Day-1颓。Day0学校搞运动会,上午一边看运动会,一边复(摸)习(鱼)。中午\(1:00\)出发,在车上又看了会儿算法。全车的人都在颓。回了酒店后继续颓,感觉明天要凉。Day1早晨\(6:30\)起床,吃早饭......
  • CSP2022 游寄
    前言话不多说,考得太烂了。差点退役。Butthereisalongerwaytogo.It'snottheend.初赛J组91.5,学校排名第一,S组76,学校排名第三。今年学校去了好多人,\(pj\)有二十几个,\(tg\)十几个。离谱的,宇宙射线。Day-3JS通知CSP取消,哭了一晚上。(现在想想为什么哭,不考......
  • CSP模拟11
    看到题目就绷不住了。今天事故挺多的,心里活动也很复杂。在一道题上浪费太多时间了……明知道做不出来还挺不甘……挺怪的。虽然中场改题面但T3其实依旧水但被T1绑住了,不知是不是对当时摆烂的后悔或弥补.果然时间是守恒的原数位DP.数位DP刚好要做原题,但摆了没做。发现这一事实......
  • 暑假集训D8 2023.8.1 补题
    C.P3029[USACO11NOV]CowLineupS有\(n\)只牛,他们各自有自己的编号(不同牛的编号可能是相同的).这些牛站在不同的位置.现在需要给这些牛拍一张照.有如下要求选定一个范围内的牛拍照,这些牛需要包含所有出现过的编号照片的成本是这个范围,因此范围越小越好已经给定所有......
  • 暑假第五周
    目录re5-packed-movement法一法二flagreverse-for-the-holy-grail-350expflagre5-packed-movement先脱壳ida打开全是mov指令,movfuscator混淆法一shift+F12搜索字符串找到'WrongFlag!',交叉引用可以看到有70多处引用,可能就是逐字符比较随便点一个看看,从每一个'WrongF......
  • 【暑假例题】20230727 矩阵基本运算(C++)
    题目请使用C++实现矩阵的各种运算矩阵创建矩阵相加矩阵相减矩阵相乘数字乘矩阵矩阵上叠加矩阵左右叠加矩阵转置矩阵旋转矩阵求逆矩阵输出题目分析矩阵创建这里只需注意由于我们需要通过不同的函数对数组进行操作,所以我们需要将数组存储在容器或者使用指针防止数......
  • 暑假生活第三周
    这周我致力于深入学习SQLServer,并掌握一些更具挑战性的知识。作为一个学生,我充分利用家里的学习环境,花费了大量时间和精力来探索SQLServer的高级概念和技术。首先,我将重点放在了存储过程和触发器上。我对存储过程的概念进行了深入研究,并学会了如何编写、调用和管理它们。我了解......
  • 暑假周记(7.30)
    Date类Date:精确到毫秒,代表特定的瞬间SimpleDateFormat:格式和解析日期的类案例演示Dated1=newDate();//获取当前系统时间System.out.println("当前日期="+d1);Dated2=newDate(9234567);//通过指定毫秒数得到时间System.out.println("d2="+d2);//获取某个时间对......
  • 暑假周记(7.31)
    SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日hh:mm:ssE");Stringformat=sdf.format(d1);//format:将日期转换成指定格式的字符串System.out.println("当前日期="+format);/*1.可以把一个格式化的String转成对应的Date2.得到Date仍然在输出......