首页 > 其他分享 >9.8 模拟赛(炼石计划 11 月 11日 CSP-S 十连测 #9)

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

时间:2024-09-08 18:03:00浏览次数:3  
标签:11 二分 炼石 bmod T2 T1 枚举 9.8

炼石计划 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)

标签:11,二分,炼石,bmod,T2,T1,枚举,9.8
From: https://www.cnblogs.com/2huk/p/18403191

相关文章

  • 运用DBLINK与数据泵导数据时报错ORA-39006、ORA-39113、PLS-00352、PLS-00201、ORA-39
    问题描述:运用DBLINK与数据泵导数据时报错ORA-39006、ORA-39113、PLS-00352、PLS-00201、ORA-39097,如下所示:数据库:源端oracle12.2.0.1目标端:oracle12.2.0.11、问题重现[oracle@hisdb1scripts]$tail-500fnohup.outImport:Release12.2.0.1.0-ProductiononFriSep......
  • 20240911_190441 公共基础 栈
    什么是栈栈的特点栈的出入演练习题31习题30习题b习题b习题习题a习题c......
  • 【C++11及其特性】智能指针——shared_ptr
    大家好,这里是国中之林!❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←shared_ptr目录一.共享性智能指针二.shared_ptr的共享原理三.shared_ptr的构造函数1.普通的2.数组的3.带删除器......
  • 题解:P11020 「LAOI-6」Radiation
    我们发现一种最优策略,把石头按照斜线摆,即(1,1),......
  • C++11/14/17/20 新特性反汇编分析1
    区间for迭代类似于java中的foreach看个例子:数组的区间for迭代我们从第一行开始看,首先把数组a的地址放到eax中,再把eax的值放到[ebp-28h]中,也就是[ebp-28h]存储了元素的首地址,同理[ebp-34h]也存了a的首地址(这里猜测可能是多个变......
  • P11019 「LAOI-6」[太阳]] 请使用最新版手机 QQ 体验新功能 题解
    非常简单的模拟题。由题意得,即找出输入字符串中,用[]围起来的片段中的大写字母\(A_1,A_2,A_3...A_n\)然后将其转换为小写输出\(/a_1a_2a_3...a_n\)即可。#include<bits/stdc++.h>#defineseq(q,w,e)for(intq=w;q<=e;q++)#definelllonglongusingnamespace......
  • P11020 「LAOI-6」Radiation 题解
    一道简单的构造题,其实不用想的十分复杂的说。首先,最多发射的宇宙射线\(sum\)也最多为\(sum_{max}=min(m,n)\)也就是说,无论如何摆放石子,也只能达到这个数量。那么我们的目的便变成了如何让石子变成这一个形状。如上图,在一个\(3\times6\)的矩阵中,其实只要三颗石子即可满足......
  • 第二周周日9.8学习总结
    vj2https://vjudge.net/contest/651666#overviewhttps://www.cnblogs.com/Hamine/p/16661610.htmlC-ExpressMailTaking#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;typedeflonglongll;constintmaxn=200......
  • 【2024潇湘夜雨】WIN11_PWK_21H2.22000.3147软件选装纯净特别版9.08
    【系统简介】=============================================================1.本次更新母盘来自WIN11_PWK_21H2.22000.3147(专业工作站版).2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为2......
  • 使用 Postman(v11.11.1) 完成系统自动化测试
    1、变量Postman提供两种变量类型,一种是全局变量,一种是环境变量。使用Postman进行测试时,使用全局变量或者使用环境变量,效果是一样的,但还是建议不同用途的变量放在对应的地方。1.1全局变量全局变量在整个Postman中所有接口共享。以下数据建议放在全局变量中:对于平台所有相......