2025/7/10模拟赛总结

2025/7/10\(\mathbf{} \begin{Bmatrix} \frac{{\Large TEST} }{{\color{Yellow}\Large Record} }\mathbf{} {No.3} \end{Bmatrix}\times{}\) NeeDna

难度主观估计:${\color{Orange} t1} <{\color{Blue} t3} <{\color{Blue} t2} <{\color{Purple} t4} $

换成了模拟NOIP的提交系统,有点意思。

t1

题意:给定一个正整数 \(S\),现在要求你选出若干个互不相同的正整数,使得它们的和不大于 \(S\),而且每个数的因数 (不包括本身) 之和最大。

一眼预处理每个数(类似埃氏筛)然后就是一个01背包问题。 (11min)

t2

题意:给出 \(m\),\(n\)\(m\) 为质数),以及一个长度为 \(n\) 的数列 {\(a_{n}\)​}。请你任意重排 ai​ 的顺序,使得 ai​ 是一个 mod m 意义下的等差数列。

即,存在非负整数 \(0≤x\)\(d<m\) 使得对于 \(1≤i≤n\) 都满足 \(a_{i}​= x+(i−1)\times d \pmod{m}\)

如果可行,输出任意一组 \(x\)\(d\) 的值;否则输出 \(−1\)

分析:我打的暴力是 \(O(n^2)\) 的直接枚举一个固定点到其他每个点的所有可能,有50tps,赛后卡出了100tps,xtr的随机优化可以稳定ac,%%%。

写了2h。

正解:

t3

这道题我写的纯暴力+HASH,预处理所有的区间,\(O(T26log26\times n^2)\),可以拿到60-70tps。(40min)

考虑优化:

  • 可以不用处理所有区间,可以询问一次过一遍,把 \(n^2\) -> \(n\times q\)

  • 可以用一个经典的两个桶(一个放颜色个数,一个放颜色个数的个数),就可以快速统计区间内颜色个数和每个个数的大小,\(26log26\) -> \(log26\)

  • 因为是排好序的所以可以直接比较差值不用排序再hash \(log26\) -> \(1\)

最终就是 \(O(nq)\)

t4

正解有点难,可以用回滚莫队线段树神秘操作贪心+floyd直接检验贡献……

这里说一下60tps部分分。

\(K=1\) 的时候就是一条链,中间断开了一些点,那么我们做前缀和 \(O(n)\)

\(n,q<1000\) 时,暴力做dfs即可。

个人认为这题部分分很简单 写了20min。

Conclusion:

估分 实际分 实际做的分 实际会的分
270 280-270 260 300?

个人反思:

做的好的地方:

  • 每道题都打了暴力,分还能看。

做的不好的地方:

  • 时间分配有点不合理,t2想了2h结果分最少。

  • 时间复杂度没有估算正确。

  • 没有检查代码的小错误(虽然运气好没有)

  • 改错和听讲解时不认真,有些地方没听懂(t4)

posted @ 2025-07-10 19:08  NeeDna  阅读(10)  评论(0)    收藏  举报