首页 > 其他分享 >NOIP模拟赛 #11

NOIP模拟赛 #11

时间:2024-11-15 15:40:15浏览次数:1  
标签:11 10 le NOIP dif 条狗 ans 任意 模拟

A

一个 \(R\times C\) 的矩阵 \(A\),有 \(N\) 个位置已知,第 \(i\) 个为 \(A_{r_i, c_i} = a_i\)。求是否存在一种填写剩下数字的方案,满足每个数字都非负且对于任意 \(i, j (1\le i\le R - 1, 1\le j\le C - 1)\) 都有 \(A_{i, j} + A_{i + 1, j + 1} = A_{i, j + 1} + A_{i + 1, j}\),不需要构造方案。

\(2\le R, C\le 10^5, \ 1\le N\le 10^5\)

考虑化为 \(A_{i, j + 1} - A_{i, j} = A_{i + 1, j + 1} - A_{i + 1, j}\),即每行的差分数组都相同,进而表示成 \(A_{i, j} = x_i + y_j\)。

令 \(y'_j = -y_j\),那么 \(A_{r, c} = a\) 的条件可以表示为 \(x_r - y'_c = a\),可以用带权并查集维护。

每个位置上的数非负相当于 \(\min x_i \ge \max y'_j\),相当于对于并查集每个集合中,每个行权都不小于每个列权,这是容易的。

B

有 \(n\) 个位置,每个位置可能有狗或骨头,或者为空。你可以给每条狗指定向左或向右的行走方向,且所有狗的行走速度相同。求最多有多少个骨头至少被一条狗经过,以及达成目标的最小步数。

\(1\le n\le 10^6\)

一条狗特判,两条或以上的狗一定可以经过所有骨头。

考虑二分步数,相当于给每条狗定向并覆盖一段位置。考虑 dp,设 \(f_i\) 表示前 \(i\) 条狗能覆盖最多能覆盖第 \(1\sim f_i\) 个骨头,转移:

  • 第 \(i\) 条狗向右。

  • 第 \(i\) 条狗向左。

  • 第 \(i\) 条狗向左,第 \(i - 1\) 条狗向右。

  • 启示:根据不同情况设计不同 DP,莫思维定式。

C

给出 \(n\) 个长度为 \(m\) 的由小写字母组成的字符串 \(s_{1\dots n}\),构造任意一个字符串 \(ans\) 满足 \(\forall i \in[1, n] , \ \sum\limits_{j = 1} ^ m [ans_j \not = s_{i, j}]\le d\),或者报告无解。

\(1\le n\le 1000, \ 1\le m\le 2\times 10^4, \ 0\le d\le 6\)

先令 \(ans = s_1\),在此基础上至多修改 \(d\) 个字符得到最终答案。

考虑爆搜修改 \(ans\),设当前已经修改了 \(x(0\le x\le d - 1)\) 个字符,设 \(s_i\) 与 \(ans\) 有 \(dif_i\) 个位置上的字符不同,如果 \(dif_i + x > 2d\) 则后续无论如何修改都不合法,可以直接 return。

否则找到任意一个满足 \(d < dif_i\le 2d - x\) 的字符串 \(s_i\),提取出其所有与 \(ans\) 字符不同的位置,并枚举当前修改的是其中哪个位置上的字符。

理论时间复杂度为 \(\mathcal O(n \cdot (d + 1) \cdot (d + 2) \cdots (2d))\),但每次可以选择 \(dif_i\) 最小的字符串,远远跑不满。

  • 启示:调整法爆搜。

D

一张 \(n\) 个点和 \(m\) 条边的图,满足一条从 任意一个编号比其连向的点都大的点 到 任意一个编号比其连向的点都小的点 的路径长度都被 \(k\) 整除,构造将 \(n\) 个点划分为 \(k\) 个独立集的方案。

\(1\le n, m, k\le 10^6\)

编号小的点连向大的点,这张图就是一张 DAG。从特殊条件出发,考虑从任意一个起点到点 \(u\) 的路径长度 \(\bmod k\) 一定覆盖不了 \(0\sim k - 1\) 所有余数,我们可以令 \(u\) 的颜色 \(d_u\) 为某一个起点到 \(u\) 的路径长度 \(\bmod k\),这样一定合法。

具体的,用桶存下所有从 \(v\) 连到 \(u\) 的 \(d_v\),然后找到任意一个 \(d_v\) 满足 \(d_v + 1\) 没有存到桶中,令 \(d_u \gets d_v + 1\)。

  • 启示:特殊条件入手;令构造方案契合特殊条件,从而为构造创造条件。

标签:11,10,le,NOIP,dif,条狗,ans,任意,模拟
From: https://www.cnblogs.com/Sktn0089/p/18548099

相关文章

  • P11276 第一首歌 题解
    P11276第一首歌题解一道简单的字符串题目。题目解释说求一个最短的字符串\(t\),使其满足对于给定的字符串\(s\):\(s\)为\(t\)的前缀。\(s\)为\(t\)的后缀。\(s\)不为\(t\)。仔细思考一下,则易得\(t\)的最短长度的最大值为\(s\)的两倍。即当\(s\)......
  • [2024.11.15]NOIP 模拟赛
    赛后的思路永远比赛时清晰。赛时T1玩了一会发现\(a_3\sima_7\)一定是相邻的,所以只需要考虑两个数字即可。答案显然有单调性,所以考虑先二分\(a_2\),再二分\(a_1\)。两个二分的思路都很简单,第二个二分用lower_bound即可。第一个的话其实就是模拟lower_bound内置,赛时调......
  • 深入探索 C++11 第一弹:现代 C++ 编程的基石与革新
    1、C++的发展历史C++11是C++的第⼆个主要版本,并且是从C++98起的最重要更新。C++11对C++语言的发展具有深远的影响,它使C++语言更加现代化、高效、灵活和易于使用,为开发者提供了更强大的工具和更好的编程体验,推动了C++在各个领域的广泛应用和持续发展。话不多说,下......
  • 1159. 市场分析 II
    目录题目链接(无VIP请直接看下面的需求)题目和题目代码1.读题(建议使用这种表结构和数据对比看阅读)2.答案代码以及图表解释题目链接(无VIP请直接看下面的需求)链接:15分钟没思路建议直接看答案题目和题目代码表:Users+----------------+---------+|Colu......
  • 11.15
    实验二:逻辑回归算法实现与测试 一、实验目的深入理解对数几率回归(即逻辑回归的)的算法原理,能够使用Python语言实现对数几率回归的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样......
  • 11/15
    #include<stdio.h>intmain(){ intN,i,j,M,count; unsignedintarr[1000],times[10]={0},maxvalue[10]; scanf("%d",&N); for(i=0;i<N;i++){ scanf("%d",&arr[i]); }// times[10]={0}; for(i=0;i<N;i++){ ......
  • c11智能指针
      普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu......
  • YOLOv11改进,YOLOv11结合DynamicConv(动态卷积),CVPR2024,二次创新C3k2结构
    摘要大规模视觉预训练显著提高了大规模视觉模型的性能。现有的低FLOPs模型无法从大规模预训练中受益。在本文中,作者提出了一种新的设计原则,称为ParameterNet,旨在通过最小化FLOPs的增加来增加大规模视觉预训练模型中的参数数量。利用DynamicConv动态卷积将额外的参......
  • ssm118亿互游在线平台设计与开发+vue(论文+源码)_kaic
    毕业设计(论文)  亿互游在线平台的设计与开发学生姓名   XXX                        学    号   XXXXXXXX          分院名称   XXXXXXXX          专业班级   XXXXX   ......
  • CW 11.15 模拟赛记录
    看到说不按题目难度排序,先读下题初看\(\rm{T1}\)没什么思路\(\rm{T2}\)感觉像是\(\rm{dp}\),可能能多骗点?\(\rm{T3}\)又是计数\(\rm{T4}\)没思路感觉要寄,\(\rm{lhs}\)多半又要\(\rm{AK}\)\(\rm{T2}\)观察到这个类型的题比较熟,先开\(\rm{T2}\)简化题意......