9.8 模拟赛(炼石计划 11 月 11日 CSP-S 十连测 #9)

news/2025/1/15 15:44:52/文章来源:https://www.cnblogs.com/2huk/p/18403191

炼石计划 11 月 11 日 CSP-S 十连测 #9【补题】 - 比赛 - 梦熊联盟 (mna.wang)

\(100+60+20+15 = 195\)

复盘

顺序开题。T1 是二分板子。写之前思考好了所有代码细节直接写代码。一遍过了所有大样例。

T2。题意好麻烦。

\(35\) 分是极易的。跳过 \(25\) 分部分分,直接想正解。

有三个变量 \(a, b, c\) 肯定要枚举一个。那当然是先尝试枚举 \(a\)。此时 \(N_1 = N_0 \bmod a = (N^2 + 1) \bmod a\) 确定了,剩下的就比较好做。

中间尝试推了很长时间的式子,都是基于同余的,不知道怎么推到歪成那样的。数学式子变形还要多练。

剩下的是 \((N_1+b) \bmod c = N_3\)。感觉正解不太好做,先尝试 \(35+25=60\) 分吧。

最终化简到了一个形如 \((b + c) \bmod c = k\) 的形式。发现暴力枚举的复杂度是调和级数。直接写!

最终大样例都过了。手造数据 1 1 2000 跑了三秒多,不太妙。将 std::sort 改成桶拍后仅 0.1 秒。放心了。

T3 田忌赛马。我不是孙膑所以我不会。写了阶乘的 \(20\) 分就跑路了。

T4 神迷题。变量很多。顺好题意后发现 我 连 \(n = 2\) 的 15 分 都 不 会。

大悲。我不想在 T4 爆零。于是骗分启动。

最初尝试输出 \(\min a_i\),但是小数据正确性极低大数据正确性为 \(0\)。遂放弃。

脑中突然闪过一个想法:我可以强制让同一棵珠子每次都减小相同的高度。感觉 \(n = 2\) 的正确概率挺大(我也不知道为什么,只是感觉)。然后就写了。

手造了两组 \(n = 2\) 的样例都正确。我发现这个骗分策略可以不仅局限于 \(n \le 2\)。具体的我写了个 dfs,思路与上面相同,过了 \(n = 3\) 的样例 1。

虽然我只给它测了三组数据,但是我猜测这个程序能拿不少分。至少 \(n = 1\) 的能过吧。

然后写了 T1 + T2 60 的对拍。

赛后发现 T4 的 \(n \le 2\) 全过了,其余的全 T 了。原因是 dfs 复杂度不对。喜+悲。

所以应该是一分没挂???

做的好的及不足

  • 没有在 T1 的二分细节上浪费时间。

  • T4 猜结论猜中了(虽然这样做一定是错误的但是有分)。

  • T2 推式子时因为正负号错了浪费了很长时间。

知识点

T1:二分。

T2:数学。

题解

T1. 查询

如果没有重复,那么 \(x\) 是序列中的第 \(k\) 小,等价于序列中存在恰好 \(k - 1\) 个数 \(< x\)

有重复后,如果 \(x\) 是序列中的第 \(k\) 小,那么序列中 \(< x\) 的数的数量应 \(< k\),且 \(x\) 最大。于是可以二分。

问题转化成求有多少 \((i, j)\) 满足 \(a_j + b_jc_i < mid\)

枚举 \(j\)。那么 \(c_i < \lceil \frac{mid-a_j}{b_j} \rceil\)。二分即可。

T2. 枚举

\(N\) 没用。可以一步直接求 \(N_0 = N^2 + 1\)。此时:

\[N_1 = N_0 \bmod a \\ N_2 = N_1 + b \\ N_3 = N_2 \bmod c \]

注意到当 \(N_3\) 确定时,满足条件的对 \((N_2, c)\) 的数量是调和级数。我们将这些对预处理。

考虑计算答案。枚举 \(a\),这样就能求出 \(N_1\)

根据条件二,不难发现如果确定了 \(N_1, N_2\),那么 \(b\) 是唯一确定的。如果 \(b\) 存在则需要满足 \(0 \le N_2 - N_1 \le P\)

所以我们可以在预处理的 \((N_2, c)\) 对序列里二分。

看代码理解更好:提交记录 #607099 - 梦熊联盟 (mna.wang)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794109.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个小例子,给你讲透典型的 Go 并发操作

一个小例子,给你讲透典型的 Go 并发操作 原创 訢亮 程序员新亮2024年09月08日 16:57 天津 听全文程序员新亮 GitHub 9K+ Star | 技术交流分享 206篇原创内容公众号如果你有一个任务可以分解成多个子任务进行处理,同时每个子任务没有先后执行顺序的限制,等到全部子任务执行完…

LeetCode 刷题—树

不会做简单题目的小菜菜!一:树 1、树描述的是一个父子关系;有节点;根节点;叶子节点三个相关的概念 2、树的高度;深度;层 3、二叉树:每个节点最多只有两个孩子 4、完全二叉树:除了叶子节点;每个孩子并不要求都为两个孩子(从上到下,从左到右依次填满节点) 5、满二叉…

软件安装——STM32开发

安装Keil5 MDK 安装器件支持包 软件注册 安装STLINK驱动 安装USB转串口驱动安装Keil5 MDK 下载链接(来自B站江协科技) 通过百度网盘分享的文件:STM32入门教程资料 链接:https://pan.baidu.com/s/17_sbwMXU-xBVFA2sK0smrg?pwd=cgn6 提取码:cgn6 解压并安装Keil5MDK安装包中…

findbi测试连接失败

导入的jar包没问题,然后装一个隔离包如下名字。因为没重启

A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs

目录概METISCoarseningPartitioning phaseUncoarsening phaseKarypis G. and Kumar V. A fast and high quality multilevel scheme for partitioning irregular graphs. SIAM, 1998.概 本文提出了一种 multilevel graph partitioning 方法. METISMETIS 的思想比较简单:首先对原…

小猪佩奇学英语——第五天——hide and seek

例句hide and seek,捉迷藏seek,寻找 find,找到了It is Georges turn to hide.Its our turn.用 is 是因为虽然我们是2个以上的人,但是我们是一组,轮到我们的只有一轮,所以是单数。 Its your turn.轮到你们了 Its theri turn.轮到他们了。Its sbs turn to .... 轮到某人做某…

小猪佩奇学英语——第六天——The Playgroup

第六天——The Playgroup 例句George,are you looking forward to the playgroup?乔治,你现在是不是正期待去托儿所。 look forward to sth 期待某物 look forward to doing...期待做某事 用looking表示正期待....maybe George is too small to go to my playgroup?too +形容…

实现人形角色的攀爬

在Unity实现角色攀爬 前言 开放世界类型的游戏近年也热门起来了,自由攀爬也成了这一类游戏的一大特色。攀爬给了玩家更多探索路径的选择,也让地图设计有了更多思路。这次,我们就来尝试在Unity中制作一个人形角色的攀爬。注:攀爬是一个角色完整动作系统的一部分,本文暂且抛…

LVDS(FPGA)

差分输入时钟缓冲器(IBUFDS)点击查看代码// IBUFDS: Differential Input Buffer// 7 Series// Xilinx HDL Language Template, version 2024.1IBUFDS #(.DIFF_TERM("FALSE"), // Differential Termination.IBUF_LOW_PWR("TRUE"), // L…

51nod 石子分配

可以发现步数限制把数轴变为了环。环之间不可以交换,环内相邻两点可以交换,然后我们只需要对每个环操作,最后累加。 对于环上的每个石子堆,我们需要将其石子数调整到均值 \(avg\)。因此,我们首先计算每个堆石子相对于 \(avg\) 的偏差,即 \(nowa[i] - avg\)。 因为相邻节点…

马哥教育C10网络安全课第四周作业2024_0831

网络安全C10-2024.8.31 作业: 1、安装burp并实现抓取HTTP站点的数据包(HTTPS站点暂时不要求) (1)安装Java 1.8.144; 设定操作系统环境变量 - JAVA_HOME jdk文件夹的绝对路径 例: JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144 - CLASSPATH CLASSJPATH=.;%JAVA_HOME%\lib…