首页 > 其他分享 >题解:P10370 「LAOI-4」Mex Tower (Hard ver.)

题解:P10370 「LAOI-4」Mex Tower (Hard ver.)

时间:2024-10-14 18:49:05浏览次数:9  
标签:ver 题解 Hard LAOI operatorname 序列 Tower Mex

Problem Link

「LAOI-4」Mex Tower (Hard ver.)

题意

给定一个长度为 $ n $ 的序列 $ a $,求序列的 $ \operatorname{Mex} $ 值是否大于等于其他所有长度为 $ n $ 的自然数序列的 $ \operatorname{Mex} $ 值。

Solution

不难发现,两个数或一个序列的 $ \operatorname{Mex} $ 一定是 $ 0 \(,\) 1 $ 或 $ 2 $。

而要使序列 $ \operatorname{Mex} $ 大于等于其他所有等长序列 $ \operatorname{Mex} $ 值,显然得使序列 $ a $ 本身 $ \operatorname{Mex} $为 $ 2 $,故原问题被转化为“判断原序列 \(\operatorname{Mex}\) 值是否为 $ 2 $”。

暴力求的时间复杂度为 $ n^2 $,显然不行。

想到一句话:“正难则反”。我们无法快速求一个序列的 $ \operatorname{Mex} $ 值。无妨,我们倒推,判断什么样的序列的 $ \operatorname{Mex} $ 值为 $ 2 $。

推导的图如下:

发现只有圈内的数要特判,其他随便填。

按奇偶分类,分别处理即可。

代码

//written by Naught
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define Maxn 3000005
#define fo(i, l, r) for (int i = l; i <= r; ++i)
#define getchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[1<<21], *p1 = buf, *p2 = buf;
inline int read(int x=0, bool f=0, char c=getchar()) {for(;!isdigit(c);c=getchar()) f^=!(c^45);for(;isdigit(c);c=getchar()) x=(x<<1)+(x<<3)+(c^48);return f?-x:x;}

int n, a[Maxn];

int main()
{
    int _ = read();
    while(_--)
    {
        n = read();
        fo(i, 1, n) a[i] = read();
        if( n == 1 )
        {
            if(a[1] == 2) puts("Yes");
            else puts("No");
            continue;
        }
        if( n == 2 )
        {
            if( (a[1] + a[2]) == 1 ) puts("Yes");
            else puts("No");
            continue;
        }
        if(n & 1)
        {
            if(a[n/2+1] < 2) {puts("No"); continue;}
            if( (a[n/2] + a[n/2+2]) != 0 && (a[n/2] * a[n/2+2]) == 0 ) puts("Yes");
            else puts("No");
        }
        else
        {
            if( (a[n/2] == 0 && a[n/2+1] == 1 && a[n/2+2] >= 1) || (a[n/2-1] >= 1 && a[n/2] == 1 && a[n/2+1] == 0) ) puts("Yes");
            else puts("No");
        }
    }
    return 0;
}

Tips

记得特判 \(n = 1\) 和 \(n = 2\) 的情况。

标签:ver,题解,Hard,LAOI,operatorname,序列,Tower,Mex
From: https://www.cnblogs.com/naughty-naught/p/18464769

相关文章

  • 题解:擬二等辺三角形
    ProblemLink擬二等辺三角形题面翻译定义一个三角形为“伪等腰三角形”需满足以下三个条件:三边长度都为自然数。三边长度各不相同。有其中两条边的长度之差为\(1\)。现在给你一个数\(n\),求周长小于等于\(n\)的“伪等腰三角形”个数,答案对\(1000000007\)取模......
  • 题解:AT_abc370_c [ABC370C] Word Ladder
    题目传送门luogu观看简要题意给两个序列\(S\)和\(T\),输出的第一个数是它能改变的总个数,后面跟着的第\(i\)个是改变\(i\)个数之后,字典序最小的结果。思路当\(S\)与\(T\)相等的话,那就无法改变了,直接输出\(0\)。对于总数只要\(T_i\neS_i\)那它就可以改,所以只......
  • 题解:P1660 数位平方和
    ProblemLinkStep1:“定义\(S(n)\)表示\(n\)个的各个数位的\(k\)次方的和。”数位的\(k\)次方,我们可以通过快速幂求出,为了节省时间,我们可以定义一个\(a\)数组,来表示\(0\sim9\)区间中各数字\(k\)次方的值。然后我们通过定义一个\(s\)数组来存储\(0\sim4\times......
  • 题解:P7356 「PMOI-1」游戏
    ProblemLink「PMOI-1」游戏题意给你一个胜利规则为黑白白白的棋类游戏,你执白,黑先行且第一步必下\((0,0)\),双方皆可放弃落子且落子坐标必须为自然数,请在4步内获胜。思路在自己与自己对下几局之后,有几个显然的发现:黑棋会尽量阻止你4步获胜。在你不会再下一步就获......
  • 题解:AT_agc027_b [AGC027B] Garbage Collector
    ProblemLink[AGC027B]GarbageCollector题意原题翻译已经很不错了,这里不再赘述。思路推论:每次取的垃圾数量应尽可能均分。证明如图,假设有\(4\)个垃圾需要被捡起,有两种取法:取一号垃圾+取二三四号垃圾。取一二号垃圾+取二三号垃圾。前者所需能量为:\(\display......
  • [2024领航杯] Pwn方向题解 babyheap
      [2024领航杯]Pwn方向题解babyheap前言:当然这个比赛我没有参加,是江苏省的一个比赛,附件是XiDP师傅在比赛结束之后发给我的,最近事情有点多,当时搁置了一天,昨天下午想起来这个事情,才开始看题目,XiDP师傅说是2.35版本的libc,确实高版本libc的却棘手,我经验太浅了调试半天,最后让我们......
  • 闯关leetcode——94. Binary Tree Inorder Traversal
    大纲题目地址内容解题代码地址题目地址https://leetcode.com/problems/binary-tree-inorder-traversal/description/内容Giventherootofabinarytree,returntheinordertraversalofitsnodes’values.Example1:Input:root=[1,null,2,3]Outpu......
  • (转)探索 Go 语言的内建函数 recover
    原文:https://blog.csdn.net/qq_35240081/article/details/140758441在Go语言中,recover是一个内建函数,用于从panic状态中恢复执行。recover只能在延迟函数(defer)中使用,如果没有panic被触发,recover返回nil。本文将详细介绍recover函数的使用场景和示例。recover函数的......
  • CF360B题解
    简述题意定一个数列\(a\),可以对其中的元素做至多\(k\)次修改,每次修改可以将数列中的一个数改成另一个。求经过修改后,\(max_{i=1}^{n}|a_i-a_{i-1}|\)思路考虑二分答案,对于check函数,我们可以利用dp进行求解。由于修改不太好想,我们可以把问题转换为让不被修改的数最多......
  • Jenkins插件:Publish over SSH
    Jenkins插件:PublishoverSSHJenkins作为一个开源的持续集成和交付工具,通过插件扩展可以实现各种功能。其中,PublishoverSSH插件是Jenkins的一个常用插件,它允许在构建过程中通过SSH协议与远程服务器进行交互,实现文件传输和远程命令执行。本文将详细介绍PublishoverSSH插件的安......