洛谷 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. FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 🚀

    title: FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 date: 2025/3/7 updated: 2025/3/7 author: cmdragon e ...

  2. 百万架构师第四十八课:并发编程的原理(三)|JavaGuide

    原文链接 JavaGuide 并发编程的原理 目标: Lock 的使用 AQS 原理分析 Condition CountDownLatch . Semaphore 线程池分析 J.U.C = java ...

  3. 【练习回顾】dfs迷宫+路径打印

    很直接的dfs.递归+栈--不知道以后会不会生疏 进入一次dfs,相当于走一步,入栈:结束一次dfs,相当于这一步考虑结束,出栈 笑死,y1竟然是一个函数 突然发现写的有点槽,可以把dfs形式化为&q ...

  4. StarRocks 升级注意事项

    前段时间升级了生产环境的 StarRocks,从 3.3.3 升级到了 3.3.9,期间还是踩了不少坑所以在这里记录下. 因为我们的集群使用的是存算分离的版本,也是使用官方提供的 operator 部 ...

  5. langchain0.3教程:从0到1打造一个智能聊天机器人

    在上一篇文章<大模型开发之langchain0.3(一):入门篇> 中已经介绍了langchain开发框架的搭建,最后使用langchain实现了HelloWorld的代码案例,本篇文章将 ...

  6. 2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装;第二种:docker 容器安装)

    2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装:第二种:docker 容器安装) @ 目录 2. RabbitMQ 的详细安装步骤(两种方式,第一种:yum 安装:第二种:do ...

  7. 学习EXTJS6(9)面向对象的基础框架-1

    Ext创造一套精细的对象模型与API,用这套API,可以快速实现对象的定义.创建.继承和扩展:1. 1.创建新类 Ext.define('demo.Demo',{ name: 'usegear', h ...

  8. AI时代:大模型开发framework之langchain和huggingface

    langchain: 提供了大模型相关应用开发的所有便利. https://python.langchain.com/docs/get_started/introduction Build your ...

  9. Unity性能优化-降低功耗,发热量,耗电量之OnDemandRendering篇

    公司游戏项目,手机运行严重发烫,耗电量飞快.在暂时无法做其他美术性和技术性优化的情况下,我写了这个公司内部文档,并做了个实验,今天干脆公布出来,希望对大家有用. --官方文档: Unity - Scr ...

  10. Rider搭建C#开发环境

    1.安装DotNet-SDK 下载链接:https://dotnet.microsoft.com/download 安装完成后配置环境变量,然后在cmd窗口运行:dotnet --info命令显示当前 ...