首页 > 其他分享 >10.18 模拟赛

10.18 模拟赛

时间:2024-10-18 18:48:11浏览次数:6  
标签:闭包 连通 le 10.18 层数 100 正数 模拟

炼石计划 10 月 04 日 NOIP 模拟赛 #8【补题】 - 比赛 - 梦熊联盟 (mna.wang)

复盘

T1 有种 div.2 B 的风格,没秒,想看题。

T2。只判是否无解?\(k \le 100\)?把 \(200\) 个关键连通块拿出来建图跑传递闭包不就做完了。

一遍过大样例?简直不可思议,但还是把 T2 关了吧。

用分析 CF 题的方式分析 T1。发现两个隔着比较远的数如果能合并就以为着它们中间隔着的数一定是奇数个。所以它们的下标一定同奇偶。

所以把奇数位置的正数取出来,或把偶数位置的正数取出来,这不就是第一问?第二问的答案难道不是固定?难道不是做完了?

细节有点多,打不是很多。开场 40 分钟切掉。

对拍启动。发现第一个点就挂。于是调暴力程序。Two Hundred years later...

T3 T4 好复杂。正解肯定不会的啦。暴力启动。

最终预期 \(100+100+20+20=240\),实际 T4 爆零了。原因未知。话说为什么比较复杂的题的爆搜总写不对呢???

总结

好的:

  • 挂分不多(这也算优点???)
  • 比较稳,前两题没有挂分。

不足:

  • 写对拍时过于不仔细,暴力程序挂了好多次,浪费了很多时间。
  • 爆搜经常写不对。

知识点

  • T1:贪心;
  • T2:搜索,图论,传递闭包;
  • T3:归并排序,线段树(正解用到线段树但我还没补出来)。

题解

A. 养蛊神器

首先判掉,如果全是负数,那么第一问的答案一定是 \(\max a_i\)。对于第二问枚举所有最大值,然后算将两边全部清空的步数即可。将长 \(x\) 的全部清空的最小步数是 \(\lfloor x / 2 \rfloor+1\)。

操作二相当于选择一个长度为 \(3\) 的区间,将其合并为两个端点的和。

注意到若区间长度为 \(5\),那么我们可以先对中间三个元素做一次操作,然后将整个区间再做一次操作,也能做到上面的效果——将整个区间合并成两个端点的和。同理,只要长度为大于 \(1\) 的奇数,都能完成这个操作。

所以我们考虑最终答案的可能的组成,即答案可能是哪些数的加和。不难发现,令最终答案为 \(a_{i_1}+a_{i_2}+\dots+a_{i_k}\)(\(i_1<i_2<\dots<i_k\)),那么这个答案合法的充要条件是 \(i_1 \equiv i_2 \equiv \dots \equiv i_k \pmod 2\)。

所以我们可以全选奇数位上的正数,或全选偶数位上的正数。这两者的较大值就是第一问。这里我们不妨将 \(0\) 也视作正数。

对于第二问,不难发现将 \([i_j+1,i_{j+1}-1]\)(\(1 \le j < k\))内的数删掉的方案是唯一的,其步数为 \((i_{j+1}-i_j)/2\)。两侧单独处理即可,与上面全是负数的特判类似。

B. 导航神器

首先 flood fill 求出每个点所在的连通块。如果有一个传送门的起点在连通块-\(x\) 内,终点在连通块-\(y\) 内,那么我们连一条边 \(x \to y\)。然后跑传递闭包即可。

但是连通块数很大,也即图中点数很大,直接跑肯定不行。注意到传送门的数量 \(\le 100\),这意味着图中度不为 \(0\) 的点至多 \(200\) 个。所以只对这 \(200\) 个点跑传递闭包,查询时分讨一下是否是关键点即可。

C. 扰乱神器

还不会,但是会了 Subtask3,即将每个块都翻转。

注意到,将这 \(2^q\) 个长 \(2^{n-q}\) 的块翻转,相当于 \(\operatorname{swap}(a_i, a_{i \oplus (2^{n-q}-1)})\),即将 \(i\) 的后 \(n-q\) 位翻转。考虑将所有的 \(i\) 都执行这样的操作后,逆序对会发生什么变化。

不妨将整个序列做一遍归并排序(或者说画一颗递归树)。例如当 \(n = 3\):

不难发现,这颗树上的第 \(d\) 层中,每一个区间所对应的点,在二进制视角下,从第 \(d\) 位到最高位都全部相同。

所以如果我们要把所有 \(i\) 的后 \(n-q\) 位都翻转,就意味着这棵树中,把所有层数 \(\le d\) 的节点的左右儿子互换。例如当 \(n - q = 2\) 时上图变为:

然后考虑如何处理逆序对。我们令 \(f(d)\) 表示有多少对逆序对 \((i,j)\),使得存在一个层数为 \(d\) 的点,使得其左儿子包含 \(i\),右儿子包含 \(j\)(实际上类似 cdq 分治,考虑每个层数为 \(d\) 的点里,跨过中点的对的贡献)。\(g(d)\) 同理表示顺序对。那么将层数为 \(d\) 的所有点的左右儿子交换后,其效果等价于 \(\operatorname{swap}(f(d),g(d))\)。所以预处理 \(f,d\) 即可。显然答案为 \(\sum f(d)\)。

标签:闭包,连通,le,10.18,层数,100,正数,模拟
From: https://www.cnblogs.com/2huk/p/18474874

相关文章

  • 2024.10.18模拟赛反思
    2024.10.18模拟赛反思感觉今天状态不太好,整个人比较恍惚。早自习我都不知道在干什么,考试的时候脑子里也是一团糨糊(晚上提前到\(12\)点睡觉,结果状态更差了)。首先是\(T1\),开始我以为简单无向连通图的“简单”是指的仙人掌,所以想了一个点双的做法。写到一半发现做法复杂了,用最小......
  • [49 & 50] (多校联训) A层冲刺NOIP2024模拟赛08 | CSP-S 模拟 12
    一小孩在奶茶店玩封盖机被绞断四根手指记者:你现在感觉怎么样小孩:......
  • csp-s模拟12
    csp-s模拟12\(T1\)T2918.小h的几何\(100pts\)对于任意三角形,均有其三条边的中点、三条高的垂足、三个顶点与垂心连线的中点,这九个点在一个圆上。观察样例可知,对于单位圆上\(\triangleABC\)的三个顶点\(A(x_{a},y_{a}),B(x_{b},y_{b}),C(x_{c},y_{c})\),其九点圆......
  • csp-s模拟12
    又双叒叕垫底啦!!!rank22,T10,T220,T30,T430。逆天模拟赛,逆天题面,怕你赛场上不会打暴力真是煞费苦心出了一场暴力专场。小h的几何高斯消元求圆心精度被卡炸了,乐了。咋还考向量啊,不学文化课,输了。九点圆的圆心是外心\(O\)和垂心\(H\)的中点,且\(\overrightarrow{OH}=\overrightar......
  • 基于Java微信小程序的模拟考试系统(源码+lw+部署文档+讲解等)
    项目运行截图技术框架后端采用SpringBoot框架SpringBoot是一个用于快速开发基于Spring框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。SpringBoot通过自动化配置和约定大于......
  • CSP-J模拟赛day6——试题
    全人杯奖金Description万人瞩目的第一届“全人杯”思维挑战赛正在紧锣密鼓的进行中,比赛的类别包括数学、物理和信息。为了激励同学们踊跃参与,比赛设置了一系列的奖项。对于每个学科,分别设置了一、二、三等奖以及鼓励奖和参与奖。其中,一等奖预设x名,奖金a元,二等奖预设y名,奖......
  • 2024.10.18 test
    B\(n\)次操作,每次操作选择下面三个中的一个:令\(P\getsP+x_i+S\);\(S\getsS+y_i\);\(D\getsD+z_i\)。在每次操作后,\(S\getsS+D\)。询问\(P\)的最大值。\(n\le80,x,y,z\le1e9\)。由于不可能把\(P,S,D\)存进状态里,考虑拆贡献,即计算每个操作对后面的贡献。\(D\getsD+z_......
  • NOIP 模拟赛:2024-10-17
    挂分100pts。T1:数组不清空导致的。题意:\(n\)个物品,第\(i\)个物品花费\(2^{a_i}\),价值\(b_i\)。问获得\(k\)的价值最少花多少钱。\(n\le10^5\)。二分,求\(x\)块能买到多少价值。按花费从小到大枚举\(i=0\sim30\),维护一个"当前物品集合"\(q\),初始只存储\(a=0\)的......
  • 10.18 Linux命令(续)
    39、tar包(1)tar-cvf打包格式:tar-cvf压缩包文件1、文件2,文件3等案例:tar-cvfabc.taraabbccc打包v显示打包进度f指定文件x解包(2)解压tar-xvf格式:tar-xvf压缩包名解压tar.gz包打包:tar-zcvf压缩包名.tar.gz......
  • 10.18
    (填空题)设计者完成任务分析并识别出任务对象和动作时,可以采用()、直接操纵、表格填充、命令语言、()交互风格。我的答案:10分(1)自然语言(2)菜单选择正确答案:(1)自然语言(2)菜单选择(填空题)功能菜单采用()组织程序的多个功能,是用户交互的一种重要形式。我的答案:10分(......