首页 > 其他分享 >多校 A 层冲刺 NOIP2024 模拟赛 17

多校 A 层冲刺 NOIP2024 模拟赛 17

时间:2024-11-02 08:57:40浏览次数:4  
标签:frac 17 hs s1 多校 贡献 枚举 复杂度 NOIP2024

多校A层冲刺NOIP2024模拟赛17

T1 网格

签到题

注意到 \(+\) 与 \(\times\) 由于优先级其实是分开的,所以可以考虑每到达一个 \(+\) 计算一次贡献(乘上一个组合数),然后将前置贡献重新赋值为方案数,DP 只需考虑连续 \(\times\) 段即可。

时间复杂度 \(O(nm)\)。

T2 矩形

根号分治

发现不管怎么枚举总会出现一些特殊情况使得复杂度存在瓶颈,并且虽然值域是 \([1,n]\) 但总共只有 \(O(n)\) 个点,图是很稀疏的。

这启发我们把特殊的拿出来分讨去做,考虑以列为单位,并设置阈值 \(B\),一列中点数大于 B 的记为大段,小于的记为小段,则只需要考虑 \(3\) 种情况的贡献。

  • 大段与小段之间的贡献
    注意到大段的个数不会超过 \(O(\frac{n}{B})\) 个,考虑枚举每一个大段,然后去计算所有小段对它的贡献。具体的当枚举到一个大段时,在值域上标记它所拥有的点,然后枚举小段,查询每个有多少个相同纵坐标,记为 tot,则一个小段的贡献为 \(\binom{tot}{2}\)。
    这一部分的时间复杂度为 \(O(\frac{n^2}{B})\)。

  • 大段与大段之间的贡献
    有两种做法
    第一种同上即可解决。
    第二种可以使用 \(bitset\) 优化,具体的枚举任意两个,然后用 \(bitset\) 按位与计算相同个数,然后同上组合数计算贡献,时间复杂度为 \(O(B^2\frac{n}{w})\)

  • 小段与小段之间的贡献
    注意到小段只有至多 \(O(B)\) 个元素,可以考虑每个点枚举 \(O(B)\) 次去做。
    具体的,可以在值域上枚举下端点,然后对于所有包含这个点的段进行计算,即将所有在下端点上方的点加入到值域 \(cnt\) 数组中,由于钦定了下端点,所以 \(cnt\) 中直接就是答案。
    考虑时间复杂度,发现每个点至多会被枚举 \(O(B)\),而总共有 \(O(n)\) 个点,这一部分的时间复杂度为 \(O(nB)\) 的。

当 \(B\) 取 \(\sqrt n\) 时总复杂度最优,为 \(O(n\sqrt n)\),由于本题特殊数据很难造,并且就算强度高也远远达不到这个上界所以跑的飞快。

双倍经验 [Ynoi Easy Round 2024] TEST_132

T3 集合

不会

T4 倒水

概率期望,数据结构优化DP,线段树

注意到一个性质

只要有一次向前倒就结束了,证明显然。

那么有一个推论

记 \(b_i\) 为 \(i\) 当前的量,\(i\) 倒出去的水的量为 \(\min(a_j,b_i)\),证明考虑分讨,当 \(j\) 中没有水时显然,而有水时 \(i\) 中的水一定是从 \(j\) 中来的,所以一定达不到 \(j\) 的上界。

那么可以设计状态进行 DP,设 \(f_{i,j}\) 表示当到 \(i\) 要倒水时 \(i\) 有 \(j\) 单位体积的水的概率。

根据上述结论,发现向前转移能直接计算贡献即可,而向后转移则转移到 \(f_{k,\min(a_k,j)}\)(此时仍需计算自己的贡献)。

现在就得到一个 \(O(n^3)\) 的做法。

显然能前缀和优化,将刷表改为填表,等转移完后再计算贡献即可优化至 \(O(n^2)\),这一部分比较重要,下面具体讲讲。

设辅助数组 \(s1_{i,j}=\sum_{a\le i,b\le j}f_{a,b},s2_{i,j}=\sum_{a\le i,b\le j}bf_{a,b},hs_i=\sum_{1\le j\le n}\max(0,i-a_j)\),即 \(s1,s2\) 分别是概率、期望的前缀和。

  • 转移

\[\begin{cases} f_{i,j}=(s1_{i-1,j}-s1_{i-1,j-1})\frac{1}{n-1}\quad &j< a_i \\ f_{i,j}=(s1_{i-1,n}-s1_{i-1,j-1})\frac{1}{n-1}\quad &j=a_i \end{cases} \]

  • 计算贡献
    设 \(res_i\) 表示 \(i\) 的期望(答案),下面为了方便就直接写等号了,实际上为两部分之和。

    • 向前倒以及向后倒剩下的

      \(res_i=\sum_{j=1}^{a_i} hs_jf_{i,j}\frac{1}{n-1}\)

    • 别的向前倒,倒给它的

      把 \(\min\) 去掉,所以得分讨。

      • 从大于 \(a_i\) 倒来

        \(res_i=(s1_{n,n}-s1_{i,n}-s1_{n,a_i}+s1_{i,a_i})a_i\frac{1}{n-1}\)

      • 从小于 \(a_i\) 倒来

        \(res_i=(s2_{n,a_i}-s2_{i,a_i})\frac{1}{n-1}\)

\(O(n^2)\) 比较平凡。

考虑优化

只需考虑 \(O(n^2)\) 的瓶颈部分。

即求解 \(hs,s1,s2\) 数组,以及(用 \(hs\) 数组)计算倒剩下的贡献。

对于求解 \(hs\) 数组可以对 \(a\) 数组排序后求解,就将这一部分复杂度降低到 \(O(nlogn)\)。

如果只维护高度值域的前缀和(即 \(s_{i,j}=\sum_{k\le j}f_{i,k}\) )会发现一些很好的性质!

\[\begin{aligned} &\begin{cases} f_{i,j}=\frac{1}{n-1}s_{i-1,j}\quad &j< a_i \\ f_{i,j}=\frac{1}{n-1}\sum_{k\ge j}s_{i-1,k}\quad &j=a_i \end{cases} \\ &\begin{cases} s_{i,j}=(1+\frac{1}{n-1})s_{i-1,j}\quad &j< a_i \\ s_{i,j}=s_{i-1,j}+\frac{1}{n-1}f_{i,j}\quad &j=a_i \end{cases} \end{aligned} \]

如果用线段树去维护值域的话( 扫描线 )则 \(j< a_i\) 在只需要区间乘即可,而 \(j=a_i\) 则需区间求和,单调修改。

考虑怎么计算贡献

  • \(hs\)

    将 \(hs_i\) 作为系数放在线段树上,扫描到 \(i\) 时区间求和即可。

  • \(s1\)

    发现只有 \(4\) 个值 ( 矩形面积 ) ,按第一维处理,扫描到 \(i\) 时处理一次( 扫描线的套路 ),扫描结束处理一次。

  • \(s2\)

    只需结合一下 \(hs,s1\) 的做法即可,即在线段树上每一个位置,将位置作为系数,然后扫描线求矩形面积。

这样就只需要维护一个支持区间乘法,单点修改,区间求和的线段树即可。

时间复杂度 \(O(nlogn)\),常数很小,能轻松爆标。

p

标签:frac,17,hs,s1,多校,贡献,枚举,复杂度,NOIP2024
From: https://www.cnblogs.com/07Qyun/p/18521580

相关文章

  • E74 树形DP P4657 [CEOI2017] Chase
    视频链接:E74树形DPP4657[CEOI2017]Chase_哔哩哔哩_bilibili  P4657[CEOI2017]Chase-洛谷|计算机科学教育新生态(luogu.com.cn)//树形DPO(n*m)#include<bits/stdc++.h>#defineLLlonglongusingnamespacestd;constintN=100010,M=110;intidx,he......
  • CF2026 (Educational round 171) vp记录
    EducationalCodeforcesRound171vp记录A.PerpendicularSegments4min+0唐题。一眼限制紧的边必然连对角线,因为最小长度的限制是相同的所以另一条边也连对角线即可。B.BlackCells9min+0唐题。显然最优策略是相邻的点匹配,$n$为奇数的情况有一个孤立点随便连,为......
  • 【考试题解】多校A层冲刺NOIP2024模拟赛17
    A.网格(grid)题目内容给你一个\(n\timesm\)的字符网格\(s\),\(s_{i,j}\in[1,9]\cup\{+,*\}\),从\((1,1)\)开始,仅向下或向右走并最终到达\((n,m)\)的路径被称为合法路径,求所有合法路径对应的表达式的运算结果之和,答案对\(998244353\)取模。部分分44pts爆搜,枚举路径,......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛17
    Rank一般A.网络签不上的签到题。首先考虑枚举路径的做法,如果先枚举再计算的话复杂度会是\(\mathcal{O(\binom{n+m-2}{n-1}(n+m))}\)的,稍微优化一点的过程中可以去掉后面的\((n+m)\)。考虑此时我们要记什么,首先遇到加号其前面的值\(z\)就确定了,若上个符号为乘号那么......
  • NOIP2024 模拟赛 #12
    学长出的模拟赛,风格挺好。赛时8:00T1会了一个\(O(n^2\logn)\)的做法,先写一下,看看能不能过样例。8:20过了小样例,大样例跑得慢但是是对的。8:40发现一个好的做法,可以枚举\(c_i\)最小的那一天选了哪个,再枚举\(k\)天,这样纯枚举复杂度是\(O(k)\)的。但是有些细节不太......
  • Navicat 17下载与安装
    1、安装包 Navicat17:链接:https://pan.quark.cn/s/c75e892c4705提取码:YvyFNavicat16:链接:https://pan.quark.cn/s/63c07b20ea7b提取码:B9ij2、安装教程(这里以安装Navicat17为例)1)       如之前已安装的需卸载当前Navicat,如未安装,直接双击无限试用Navicat.bat脚......
  • 2024.10.7 模拟赛 多校3
    模拟赛水题场。T1colorful签。感觉题挺好,正难则反,找出四角都相同的。在这两排有6个四角相同的矩形对于两排来说,我们只需要记录相同的列的个数,然后能直接算出个数。发现桶排每次清空复杂度太高,考虑每次只开一排的桶,只会有\(n\)个。code#include<bits/stdc++.h>u......
  • CesiumJS 案例 P17:添加文本、文本样式、删除文本、移动文本
    CesiumJSCesiumJSAPI:https://cesium.com/learn/cesiumjs/ref-doc/index.htmlCesiumJS是一个开源的JavaScript库,它用于在网页中创建和控制3D地球仪(地图)一、添加文本<!DOCTYPEhtml><htmllang="en"> <head> <metacharset="UTF-8"/> &l......
  • Unity6 URP17使用初探
    1.简介随着Unity6的发布,URP17也已经可以上手使用,相对旧的版本改动较大的是加入了RenderGraph、STP、Foveatedrendering、GPUResidentDrawer等功能,部分功能只需要开关参数即可使用,而GRD更像是Gpudriven管线下的SRPBatches升级,RenderGraph相较于HDRP之前使用的版本换了一套A......
  • COCI 17/18 Contest 6 Vrtić
    傻逼题。首先经典的结论是有很多个环,让每个环最小。显然将数组从小到大排序,然后每个环都是取连续一段一定最优,交换法容易证明。然后对于每个环内如何最优呢?假设我们有从小到大排序的数组\(a_{\{1,n\}}\),最优一定是这样的:\[a_1,a_3,a_5,a_7...a_8,a_6,a_4,a_2\]就是左右填......