首页 > 其他分享 >NOIP2024模拟测试赛(一)

NOIP2024模拟测试赛(一)

时间:2024-09-27 16:24:12浏览次数:1  
标签:cnt sum minx 枚举 NOIP2024 测试 Theta 复杂度 模拟

比赛链接

A. tree

当 \(\forall v_i \le 1\) 时,可以直接从下往上贪心选,一个以 \(u\) 为根的子树中联通块如果权值和 \(>k\) 那么肯定能删到恰好 \(k\)。否则的话就把这个联通块并到 \(u\) 父亲上再看就行。

当 \(\forall v_i \le 2\) 时,直接贪心可能有问题,大于 \(k\) 的权值和可能不能删掉一些点凑成 \(k\),因为 \(2\) 的存在有可能使 \(k+1\) 直接变成 \(k-1\)。我们肯定想要一个 \(1\) 的权值,那就找到一个 \(1\) 是从叶子删点删最少的 \(2\) 后可以删到这个 \(1\),记最少 \(2\) 的个数是 \(minx\),那么若当前联通块的和 \(sum-k \ge minx\),就一定存在一种删点方式使得合法。(可以先删掉这个 \(1\) 下面的 \(minx\) 个 \(2\),然后删其他的点直到变成 \(k\) 或 \(k+1\),是 \(k+1\) 的话再把这个点删了就行)否则若 \(sum-k < minx\),那么肯定不能在 \(sum\ge k\) 的情况下遇到一个 \(1\),此时若 \(sum \equiv k \pmod{2}\) 才合法。

直接 dp 记录 \(sum_u,minx_u,ans_u\) 按上面的方法贪心即可,一个联通块合法的时候要清空 \(sum,minx\)。

B. subset

设 \(kx+b=t \sube S\),那么有 \(x = \dfrac{t-b}{k}\),即要求

\(t\ge b \land t \equiv b \pmod{k} \land t \sube S\)

  • \(\Theta(T\sqrt{S\log S})\)

考虑阈值分治。

考虑当 \(k \le B\) 时,可以把 \(S\) 中的每个是 \(1\) 的位置 \(2^i\) 看成一个物品,做模 \(k\) 意义下的 \(01\) 背包。设 \(f_{i,j}\) 为 \(0 \sim i\) 位的物品和模 \(k\) 余 \(j\) 的最小值。由于还要满足 \(t \ge b\),那么枚举 \(t\) 和 \(b\) 的 lcp 的下一位,即 \(t\) 第一个大于 \(b\) 的位置 \(p\),设第 \(p \sim 31\) 位的和是 \(sum\),那么此时的答案就是 \(f_{p-1,k-sum}\)。复杂度 \(\Theta(B\log S)\)。

当 \(k > B\) 时,可以暴力枚举 \(x\) 做到 \(\Theta(\dfrac{S}{B})\) 的复杂度。

取 \(B=\sqrt{\frac{S}{\log S}}\) 复杂度就是 \(\Theta(T\sqrt{S \log S})\)。

  • \(\Theta(T\sqrt{S})\)

考虑 meet in the middle。

设 \(t = v_1 \times 2^{15} + v_2\)

考虑枚举高 \(15\) 位的值 \(v_1\),那么此时可知 \(v_2\) 的下界和模 \(k\) 的值,即 \(v_2 \ge b - v_1 \times 2^{15} \land v_2 \equiv k - v_1 \times 2^{15} \pmod{k}\)。

从小到大枚举 \(v_1\),则 \(v_2\) 的下界会不断变大,此时用个双指针来加入满足下界且属于 \(S\) 的 \(v_2\),并且用桶 \(f_i\) 表示模 \(k\) 余 \(i\) 的 \(v_2\) 最小值。对于每个合法的 \(v_1 \sube S\),去找看看桶里面是否有 \(v_2\) 即可。

复杂度 \(\Theta(T \sqrt{S})\)

C. ee

考虑怎么判断是否有四元环,假设是 \((a,b,c,d)\),那么就是存在两个点 \((u,v)\) 有两个以上公共邻居。

假设没有修改,那么直接枚举一个点 \(i\),然后枚举它的两个邻居 \(u,v\),那么把 \(cnt_{u,v} \leftarrow cnt_{u,v} +1\),表示 \((u,v)\) 多了一个 \(i\) 的公共邻居。若存在 \(cnt_{u,v} > 1\) 就有四元环了。复杂度是 \(\Theta(n^2)\),因为 \(cnt_{u,v} \le 1\),不然可以直接判断出来了。

考虑假如修改,由于修改只涉及到 \(\Theta(q)\) 条边,那么把这些边都先删了,其他边不会变,先判断一次,并记录 \(cnt_{u,v}\)。再考虑加入或删除一条边,加入 \(E(u,v)\) 时,枚举 \(u\) 的每个邻居 \(i\),把 \(cnt_{i,v} \leftarrow cnt_{i,v}+1\),\(v\) 的每个邻居同理。注意此时不能 \(>1\) 就退出,因为有删边操作。用个 \(ans\) 记录 \(cnt_{i,j}>1\) 的 \((i,j)\) 数量即可,若 \(ans>0\) 就存在。每次更新是 \(\Theta(n)\) 的,所以总复杂度 \(\Theta(n(n+q))\)。

标签:cnt,sum,minx,枚举,NOIP2024,测试,Theta,复杂度,模拟
From: https://www.cnblogs.com/MiniLong/p/18435840

相关文章

  • Ubuntu20同时安装并运行ORB SLAM2 、ORB SLAM3(详细安装版)、TUM数据集测试
    简要说明:用相同版本库同时安装ORBSLAM2、ORBSLAM3,并分别测试几段TUM-RGBD单目数据ubuntu20.04Pangolin0.6Eigen3opencv3.4.5一、换源通过软件或者修改sources.list换源,推荐清华源ubuntu|镜像站使用帮助|清华大学开源软件镜像站|TsinghuaOpenSourceMirror......
  • 基于 LangChain 的自动化测试用例的生成与执行
    在前面的章节中,分别介绍了Web、App、接口自动化测试用例的生成。但是在前文中实现的效果均为在控制台打印自动化测试的用例。用例需要手动粘贴,调整之后再执行。那么其实这个手动粘贴、执行的过程,也是可以直接通过人工智能完成的。应用价值通过人工智能代替人工操作的部分,节省时间,......
  • 【性能测试】关于性能测试的各种指标
    本指标适用于使用性能测试进行性能测试项目技术质量评价依据,规范技术测试结果评价,统一性能测试技术测试质量度量。应用系统技术质量度量指标范围广泛,本文难以涵盖全部。预期读者为测试管理人员、测试实施人员、技术支持人员、项目管理人员等系统技术质量相关人员。 1.系统性......
  • 软件测试学习笔记丨curl命令发送请求
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32332一、简介cURL是一个通过URL传输数据的,功能强大的命令行工具。cURL可以与ChromeDevtool工具配合使用,把浏览器发送的真实请求还原出来,附带认证信息,脱离浏览器执行,方便开发者重放请求、修改参数调试,编写脚本。也可以单......
  • [35] (CSP 集训) CSP-S 模拟 5
    T1光Hikari好神秘这个题,我觉得我解法够神秘了结果是正解考虑到这四个数虽然不能二分答案,但是它们的和是能二分答案的因此对和做二分答案然后问题变成了check怎么写设和最小的答案为\((i_1,i_2,i_3,i_4)\)注意到\(n\)只有\(1500\),考虑直接\(n^2\)枚举前两个数那么......
  • 2024/09/26 模拟赛总结
    rk4,\(0+30+40+30=100\),T1挂惨了#A.智乃的差分分类讨论,由于\(a_i\ge0\),当\(x<0\)时,可以直接升序排列当\(x>0\)时,大部分情况下可以降序排列,但可能会出现\(a_1=x\)的情况,就可以找到第一个不为\(x\)且不为\(0\)的数,swap掉即可然后是最麻烦的\(x=0\),当出现最多的......
  • 20240926 模拟赛总结
    \(10+30+30+10=80\),有挂惨了。比赛链接:http://172.45.35.5/d/HEIGETWO/homework/66f4fec944f0ed11b057cca9或http://172.45.35.5/d/HEIGETWO/homework/66f4fec944f0ed11b057cca9A-智乃的差分题意:给定一个数列\(a_n\)(\(0\lea_i\le10^9\)),你可以重排这个数组,问是否存在一......
  • 软件测试学习笔记丨Mock的价值与实战
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32331一、Mock的价值与意义1.1简介测试过程中,对于一些不容易构造或获取的对象,用一个虚拟的对象来替代它,达到相同的效果,这个虚拟的对象即Mock。当做测试时,如果后端某些接口还不成熟,所依赖的接口不稳定,所依赖的接口为第三方......
  • 渗透测试入门
    什么是渗透测试?定义:渗透测试完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全......
  • maven 使用SNAPSHOT版本确实可以帮助开发团队更高效地迭代和测试新功能
    使用SNAPSHOT版本确实可以帮助开发团队更高效地迭代和测试新功能。下面是一个更详细的解释:快速迭代频繁构建和部署:由于SNAPSHOT版本通常与持续集成(CI)工具结合使用,因此每次提交代码后都可以触发构建和部署流程。这意味着每次有新的代码更改时,都会有一个新的SNAPSHOT版本产......