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

10.16 模拟赛

时间:2024-10-16 19:32:52浏览次数:6  
标签:大样 复杂度 矩阵 times mathcal 1000 模拟 10.16

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

复盘

T1 有 80 的暴力。想了一会正解但不会做于是放弃了。

T2。怎么这么像双栈排序?操作 3 是什么鬼?\(n \le 5\) 爆搜不会打?不管了先跳了。

T3。一眼蒙德里安的梦想+矩阵加速。复杂度未知,说不定是正解,不是也有 65 分。先写。

写+调+卡常 2h,过了大样例!此时我以为大样例就是极限数据,我以为我过了。实际上大样例 \(len = 1000\),最后一档分 \(len = 3000\)。

T4 好像有好多部分分。但最终只拿了爆搜的 \(15\)。

然后打了 T2 的特殊性质。

预期 \(80+20+100+15=215\),实际 \(0+0+65+0=65\)。

总结

不足:

  • 挂分太多;
  • 对大样例过于信任;

知识点

  • T1:数学
  • T3:状压 DP,矩阵快速幂。

题解

A. 公约数神庙

显然可以暴力建图。复杂度 \(\mathcal O(n^2)\)。

我们考虑这张图的构成。由于 \(1000\) 内的质数只有 \(148\) 个,于是我们枚举质数 \(p\),将 \(a\) 中所有能被 \(p\) 整除的数取出来,从左往右练成一条链。那么这 \(148\) 条链的传递闭包与上面的图完全相同。

对于一条链 \((i_1,i_2,\dots,i_k)\) 而言,如果我们达到了某个 \(i_j\),那么 \(i_{j+1\dots k}\) 显然都可以到达。也就是说,我们并不关心我到了链上的哪个位置,而只需要关注哪个后缀是我将来能跳到的。

考虑设 \(f(i, j)\) 表示从 \(i\) 开始跳,最小能跳到第 \(j\) 跳链的哪个位置。

考虑如何处理查询 \(x, y\)。注意到 \(2 \times 3 \times 5 \times 7 \times 11 > 1000\),也即 \(1000\) 内的数至多只有 \(4\) 个质因子,也即一个数至多同时属于 \(4\) 条链。那么如果我们想到达 \(y\),我们可以到达 \(y\) 所在的任意一条链 \(p\),即 \(f(x, p)\)。如果 \(f(x, p) \le y\) 那么合法。

考虑如何预处理所有 \(f(i, j)\)。枚举 \(i\) 的出边即可。

\[f(i, j) = \begin{cases} i & j \mid i \\ \min_{i \to k} f(k, j) & j \not \mid i \end{cases} \]

其中 \(i \to k\) 表示一条 \(i\) 的出边,显然最多 \(4\) 条。

C. 城堡考古

显然蒙德里安的梦想。加上最朴素的矩阵快速幂优化后复杂度能做到 \(\mathcal O(\log r \times m^6)\)。

考虑优化矩阵大小。注意到对于压缩后的状态,从第一列的 \(0\) 开始搜索,最多只会访问到 \(20\) 个不同的状态,优于刚才的 \(64\)。所以矩阵大小可以改为 \(21 \times 21\),可过。

D. 生命之树

设 \(f(u, i)\) 表示 \(u\) 子树的答案,且 \(u\) 是通过 \(i\) 点亮的。注意点亮 \(u\) 的可能不止一个点,这里 \(i\) 是其中任意一个。

考虑转移。首先如果 \(dis(u, i) > d(u)\) 则 \(f(u, i) \gets +\infty\),否则初始化 \(f(u, i) \gets c_i\)。

考虑枚举 \(u\) 的儿子 \(v\)。考虑 \(v\) 的子树对 \(f(u, i)\) 的贡献。

若 \(v\) 这个点也是通过 \(i\) 点亮的,那么 \(f(v, i) - c_i \to f(u, i)\)。这里 \(-c_i\) 的原因是 \(i\) 的贡献分别在 \(u, v\) 都计算了一次。

否则,若 \(v\) 不是通过 \(i\) 点亮的,那么 \(\min_{j \in [1, n]} f(v, j) \to f(u, i)\)。边转移边维护 \(g(v) = \min_{j\in [1, n]} f(v,j)\) 即可做到 \(\mathcal O(1)\) 转移。

总复杂度 \(\mathcal O(n^2)\)。

标签:大样,复杂度,矩阵,times,mathcal,1000,模拟,10.16
From: https://www.cnblogs.com/2huk/p/18470607

相关文章

  • Linux命令(10.16)
    linux命令ifconfig查看IP地址serviceiptablesstop关闭防火墙serviceiptablesstart开启防火墙serviceiptablesrestart重启防火墙serviceiptablesstatus查看防火墙状态ssh+ip地址链接虚拟机su切换用户名su+root切换超级用户cat/etc......
  • 20241016 模拟赛总结
    期望得分:100+100+55(?)+0=255实际得分:100+100+0+0=200迷迷糊糊睡了好一会才起来打……感觉打的还行,除了T3时间太紧了,有的错误没检查出来挂分了。。T1简单线性DP。\(f_i\)表示前i个数的答案,\(g_i\)有点抽象,先假设当前在\(p\),\(a_p=i\),\(g_i\)表示的是如果\(p\)......
  • 24.10.16
    A算一个区间选两端点的贡献,可以二分出从哪里往左,哪里往右,然后前缀和后缀和搞一下。然后得到了\(O(n^2k)\)的做法。然后猜一下决策单调性,打表发现每一层真的有决策单调性。然后人类智慧维护决策点每次往后取随机数\(\bmod200\)个更新决策点就过了。然后经典二分+单调队列......
  • 10.16
    好的,让我们逐句解析这段代码,并分析其总体功能。逐句解析#include<bits/stdc++.h>usingnamespacestd;引入标准库,bits/stdc++.h是一个包含常用C++标头文件的头文件,简化了包含过程。constintmod=1e9+7;定义常量mod,值为(10^9+7),用于取模运算,防止大数溢出。......
  • [赛记] csp-s模拟11 && 多校A层冲刺NOIP2024模拟赛07
    玩水(water)100pts一道结论题,考场一眼出,结果认为不对,然后被硬控了2h结果打出了个抽象DP然后过了;赛后发现,这DP和那个结论是等价的。。。;首先考虑只有两个人怎么做,那么我们只需找出一个位置$(i,j)$满足$a_{i+1,j}=a_{i,j+1}$即可;那么三个人呢?设现在有两个满......
  • 10.16测试分类
    软件测试之测试分类一、按开发阶段划分1、单元测试2、集成测试3、系统测试4、验收测试二、按查看代码划分1、黑盒测试定义:黑盒测试也是功能测试,测试中把被测试的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据和输出数据比如:计算器当作黑盒子:输入1+......
  • 10.16
    一.单选题(共8题,16分)1. (单选题,2分) 下列传统并行计算框架,说法错误的是哪一项? A刀片服务器、高速网、SAN,价格贵,扩展性差上B共享式(共享内存/共享存储),容错性好C编程难度高D实时、细粒度计算、计算密集型2. (单选题,2分) 下列关于MapReduce模......
  • 10.16
    A判断完是决策单调性之后决定回来写(埋下伏笔),B的题面不好看直接跳了,发现C是小清新数据结构,一个小时内会了,又断断续续写了三个小时,最后剩20min急忙码完A的暴力。60+0+90鉴定为菜就多练。A.共享单车决策单调性板题,\(O(n^2k)\)暴力,打个表,发现决策单调性,套上来就行了。B.......
  • 10.16
    java完成栈回文操作importjava.util.Stack;importjava.util.Scanner;publicclassMain{publicstaticbooleanisPalindrome(Stringstr){//使用栈存储字符串的字符Stack<Character>stack=newStack<>();//将字符串的每个字符压入栈中for(char......
  • DevEco Studio:模拟器的更多扩展能力
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......