洛谷 P1416 攻击火星

原题P1416

Update

20210307 修复了挂掉的图片

20210307 重构排版

Solution

understand

首先,你弄明白了什么是度吗?

一个点的度,等于与它连接的边的数量。

那这题怎么模拟鸭?50000点,邻接表都开不了耶……

接着,我们从特殊到一般来构造这道题——

special situation

n=1

只有一个点,这个点一定会被删掉,ans=0

n=2

有了两个点,但是度数相同,都会被删掉,ans=0

n=3

样例中也是三个点,使用的是一条链的构造方法。

ans=1

欸?这个会不会是一个提示?

n=4

我们试试用一条链

也是这样最优,ans=4

难道说链就是正确的构造方法吗?

再试试吧

n=5

继续使用链:

由于删去了两个末端节点后,中间的那个节点的度仍为2。所以它会在d=2时被删去!

有没有一种方法,可以避免这种悲剧的发生呢?

当然有的!我们换一种构造方法。请看好了——

以\(n=6\)为例:

选出两个末端节点------牺牲品

把两个末端节点与所有非末端节点相连

再把非末端节点与所有非末端节点相连(并标上每个点的度)

肯定是两个末端节点先被删除了

但是,当它们被删除时,其他所有的节点都会被改变!

完美的错过当前的d+1

这,就是本题的思想:

删去一些节点后,让其他节点的度都改变为那时的d

这样“其他节点”都不会狗带咯!

general situation

当有n个点时,取其中的两个节点当牺牲品。(所以\(n<2\)时 仍有ans=0

把两个末端节点与所有非末端节点相连

再把非末端节点与所有非末端节点相连

最终,

末端节点的度都等于n-2

非末端节点的度都等于n-1(除它本身以外全连)

那么末端节点会先被删除(\(d=n-2\))

同时,非末端节点的度-=2 -> n-3

这时,d++(\(d=n-1\))

非末端节点们就安全了!

如果还是不懂,欢迎评论!

Code

#include<iostream>
using namespace std;
int n;
int main()
{
cin>>n;
if(n==1) cout<<0;
else cout<<n-2;
//也可以是这样的
/*
cout<<max(n-2,0);
*/
return 0;
}

洛谷 P1416 攻击火星 排版重构的更多相关文章

  1. 洛谷——P1416 攻击火星

    P1416 攻击火星 题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n- ...

  2. 洛谷 P1416 攻击火星

    P1416 攻击火星 题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n- ...

  3. 洛谷P1755 攻击火星

    题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n-1的点. 所有的点度统 ...

  4. 洛谷 P4585 [FJOI2015]火星商店问题 解题报告

    P4585 [FJOI2015]火星商店问题 题目描述 火星上的一条商业街里按照商店的编号\(1,2,\dots,n\) ,依次排列着\(n\)个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非 ...

  5. [洛谷P4585] [FJOI2015] 火星商店问题

    Description 火星上的一条商业街里按照商店的编号 \(1\),\(2\) ,-,\(n\) ,依次排列着 \(n\) 个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数 \(va ...

  6. 洛谷 P4585 [FJOI2015]火星商店问题

    (勿看,仅作笔记) bzoj权限题... https://www.luogu.org/problemnew/show/P4585 对于特殊商品,直接可持久化trie处理一下即可 剩下的,想了一段时间c ...

  7. 洛谷$P4585\ [FJOI2015]$火星商店问题 线段树+$trie$树

    正解:线段树+$trie$树 解题报告: 传送门$QwQ$ $umm$题目有点儿长我先写下题目大意趴$QwQ$,就说有$n$个初始均为空的集合和$m$次操作,每次操作为向某个集合内加入一个数$x$,或 ...

  8. 【洛谷】P4585 [FJOI2015]火星商店问题

    题解 题目太丧,OJ太没有良心,我永远喜欢LOJ! (TLE报成RE,垃圾洛谷,我永远喜欢LOJ) 好的,平复一下我debug了一上午崩溃的心态= =,写一写这道题的题解 把所有限制去掉,给出一个值, ...

  9. 洛谷OJ P1196 银河英雄传说(带权并查集)

    题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...

  10. 关于三目运算符与if语句的效率与洛谷P2704题解

    题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图.在每一格平原地形上最 ...

随机推荐

  1. typora 标题未在大纲中显示解决方法

    解决方法:切换到源代码模式(快捷键是Ctrl +/),用鼠标选择未与前文对齐的标题和内容,按Shift+Tab,将内容对齐之后,大纲就能够正常显示了.

  2. 怎么给EXE文件加启动参数

    第一步 首先右键单击 exe 文件文件,创建 exe 文件的快捷方式. 第二步 右键单击此快捷方式--属性. 在快捷方式属性界面,点击目标后面的链接. 先打一个空格然后输入参数,然后点击应用按钮.确定 ...

  3. markdown设置目录、锚点

    目录 在编辑时正确使用标题,在段首输入[toc]即可 锚点 创建到命名锚记的链接的过程分为两步: 首先是建立一个跳转的连接: [说明文字](#jump) 然后标记要跳转到什么位置,注意id要与之前(# ...

  4. workman PHPSocket.IO文档

    安装 请使用composer集成phpsocket.io. 脚本中引用vendor中的autoload.php实现SocketIO相关类的加载.例如 require_once '/你的vendor路径 ...

  5. 基础指令:mkdir、ls、cd、pwd、touch、rm、mv、cp、echo、cat、关机与重启

    目录 1. 创建目录 2. 查看目录内容 3. 进入指定目录(传送) 4. 显示当前所在位置 5. 创建文件 6. 删除文件或目录 7. 移动文件 8. 复制文件或目录 9. echo输出信息到屏幕 ...

  6. Joker 全栈低代码智能开发平台:开启高效开发新时代

    低代码开发技术凭借其独特优势,正逐渐成为软件开发领域的关键力量.Gartner 预测,到 2025 年,全球 70% 的新应用将采用低代码 / 无代码技术.Forrester 报告显示,中国低代码市场 ...

  7. Momentum Contrast for Unsupervised Visual Representation Learning论文精读

    目录 Birth of MoCo Supervised Learning Contrastive Learning MoCo Dictionary Limits of the early learni ...

  8. Oracle chr() ascii()

    函数简介 实用函数 chr() 和 ascii() chr() 函数将ASCII码转换为字符: ASCII码 –> 字符: ascii() 函数将字符转换为ASCII码: 字符 –> AS ...

  9. Linux基本开发环境配置git,c++,nodejs,nginx

    Linux基本开发环境配置 前一篇文章配置了基本的SSH,本文来讲讲关于基本的开发环境的配置,包括git,c,c++,nodejs,nginx. 安装git和配置无密码登录github yum ins ...

  10. GIS空间索引技术

    地理信息系统(Geography Information System,简称GIS)的主要任务之一是有效地检索空间数据及快速响应不同用户的在线查询.地理空间索引技术和方法是GIS的关键技术.是快速高效 ...