首页 > 其他分享 >P7078 做题笔记

P7078 做题笔记

时间:2024-11-06 14:10:43浏览次数:1  
标签:吃掉 青蛙 笔记 最弱 P7078 如果 变成 天鹅

显然的贪心题。

首先,如果一条蛇吃了蛇之后自己不是最弱的,一定会吃。

证明:假设蛇的实力数组 \(a\) 单调递增,一共还剩 \(k\) 条蛇。

显然有 \(a_{k-1}-a_2<a_k-a_1\),也就是说,无论如何吃了之后都不会变成最弱蛇,所以一定吃。

然后考虑吃了之后会变成最弱蛇的情况。

首先来看 2023 年天元公学邀请赛的一道初赛题:

有 \(n\) 只青蛙,\(1\) 只天鹅,每只青蛙按编号依次选择吃或不吃天鹅,如果吃了,自己将变成天鹅,否则无事发生,游戏结束。假设青蛙足够聪明,问当 \(n\) 为下列选项中哪一个数时,天鹅会被吃掉。

A.4 B.6 C.9 D.12

我们发现这道题和吃了之后会变成最弱蛇的情况有异曲同工之处。我们不妨用归纳法来做一做这道初赛题。

首先,如果只有一只青蛙,肯定吃。

如果有两只青蛙,第一只青蛙吃了之后就变成了一只青蛙的状态,就导致第一只青蛙会被吃掉,所以第一只青蛙不会吃。

如果有三只青蛙,第一只青蛙会吃,因为如果吃了之后,第二只青蛙不会选择吃掉天鹅(因为如果选择吃自己会被吃掉),所以第一只青蛙会吃。

至此,我们的结论就出来了,当 \(n \equiv 1 \pmod 2\) 时,天鹅会被吃掉,否则不会被吃。并且最多只吃一轮。

那么我们只要模拟一下,就能决定吃或不吃了。

现在的问题是,如何维护数组有序。

用堆复杂度太高,无法获得满分。于是我们用双端队列进行构造,会发现可以简单的维护有序性。然后就变成了线性,可以通过。

标签:吃掉,青蛙,笔记,最弱,P7078,如果,变成,天鹅
From: https://www.cnblogs.com/CEFqwq/p/18530091

相关文章

  • P4528 做题笔记
    神题。记\(f_{a,b,c,d}\)表示四个数排名依次为\(a,b,c,d\)的子序列的方案数(最小的排名为\(1\),以此类推)。闪电图腾就是\(f_{1,3,2,4}\),山峰图腾A为\(f_{1,2,4,3}\),B为\(f_{1,4,3,2}\)。我们所求的式子是\(f_{1,3,2,4}-f_{1,2,4,3}-f_{1,4,3,2}\)。\(=(f_{1,x,2,x}-......
  • 笔记--(网络1)、网络参考模型,数值转换
    常见术语术语说明数据载荷最终想要传递的信息报文网络重交换与传输的数据单元头部在数据载荷的前面添加的信息段尾部在数据载荷的后面添加信息段封装对数据载荷添加头部和尾部,形成新的报文的过程解封装去掉报文的头部和尾部,获取数据载荷的过程网关提供协议转换、路由选择、......
  • 笔记--(网络4)、路由
    路由条目包含以下信息目的网络:目的网段的网络号掩码:目的网段的掩码出接口:数据包从本路由器发出的接口下一跳:到达目的网段的下一跳的设备地址路由表路由器通过各种方式发现路由路由器选择最优的路由条目放入路由表中路由表指导设备对IP报文的转发路由器通过对路......
  • LiteOS学习笔记[01]-weharmonyos-基础知识
    双向链表为什么LOS_ListHeadInsert的实现是从头部节点的后面也就是第二个节点的位置插入新节点,而不是直接将头部节点更新为插入的节点?头部节点的作用:在双向链表中,头部节点(通常称为头结点或哑结点)通常不存储实际的数据,而是作为链表的起始点和操作的辅助节点。它使得链表的操作......
  • CefSharp开发笔记
    应用开发过程有时候需要用到内嵌浏览器来显示HTML文件或网页。WPF本身提供了一个WebBrowser控件,可以实现基本的浏览器功能。另外还有CefSharp控件,相当于是基于谷歌的开源浏览器封装的,也可以实现内嵌浏览器的功能。安装WPF使用时,如果是.NETFramework安装:Install-PackageCefS......
  • 单调栈笔记
    单调栈笔记单调栈,顾名思义,就是把元素按照严格单调的顺序存在栈中(从「栈顶」到「栈底」)可以加速查找数组中满足特定条件的数的过程,例如:寻找左侧第一个比当前元素大的元素寻找左侧第一个比当前元素小的元素寻找右侧第一个比当前元素大的元素寻找右侧第一个比当前元素小的元素......
  • 归龙潮程序逆向笔记 (不定期更新)
    Unity游戏啊,先分析一下文件,Unity2021.3,AB包没加密,Lua看着像异或加密,还有HybridCLR的dll应该是AES之类的看到了libNetHTProtect.so和libmsaoaidsec.so两位老朋友,上frida一把梭!果不其然一开frida就闪退,看闪退的时机大概率在il2cpp前就已经检测了…搜一下msaoaidsec,果然在java层有......
  • JS学习笔记(1)
    目录1.前言2.JavaScript介绍3.JavaScript书写位置4.注释5.输入与输出语法6.变量7.小知识8.总结(其实是我个人的一点扯皮)前言博主的csdn地址:https://blog.csdn.net/2403_87169202今后会两边同时更新,程序员红中,一个努力分享编程干货的全栈开发者,欢迎各位一起讨论学习Ja......
  • 学习笔记(二十五):ArkUi-栅格布局 (GridRow/GridCol)
    概述:栅格布局是一种通用的辅助定位工具,对移动设备的界面设计有较好的借鉴作用。主要优势包括:提供可循的规律:栅格布局可以为布局提供规律性的结构,解决多尺寸多设备的动态布局问题。通过将页面划分为等宽的列数和行数,可以方便地对页面元素进行定位和排版。统一的定位标注:栅格......
  • 学习笔记(二十四):ArkUi-网格 (Grid/GridItem)
    概述:网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器等。ArkUI提供了Grid容器组件和子组件GridItem,用于构建......