洛谷 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 攻击火星 排版重构的更多相关文章
- 洛谷——P1416 攻击火星
P1416 攻击火星 题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n- ...
- 洛谷 P1416 攻击火星
P1416 攻击火星 题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n- ...
- 洛谷P1755 攻击火星
题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n-1的点. 所有的点度统 ...
- 洛谷 P4585 [FJOI2015]火星商店问题 解题报告
P4585 [FJOI2015]火星商店问题 题目描述 火星上的一条商业街里按照商店的编号\(1,2,\dots,n\) ,依次排列着\(n\)个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非 ...
- [洛谷P4585] [FJOI2015] 火星商店问题
Description 火星上的一条商业街里按照商店的编号 \(1\),\(2\) ,-,\(n\) ,依次排列着 \(n\) 个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数 \(va ...
- 洛谷 P4585 [FJOI2015]火星商店问题
(勿看,仅作笔记) bzoj权限题... https://www.luogu.org/problemnew/show/P4585 对于特殊商品,直接可持久化trie处理一下即可 剩下的,想了一段时间c ...
- 洛谷$P4585\ [FJOI2015]$火星商店问题 线段树+$trie$树
正解:线段树+$trie$树 解题报告: 传送门$QwQ$ $umm$题目有点儿长我先写下题目大意趴$QwQ$,就说有$n$个初始均为空的集合和$m$次操作,每次操作为向某个集合内加入一个数$x$,或 ...
- 【洛谷】P4585 [FJOI2015]火星商店问题
题解 题目太丧,OJ太没有良心,我永远喜欢LOJ! (TLE报成RE,垃圾洛谷,我永远喜欢LOJ) 好的,平复一下我debug了一上午崩溃的心态= =,写一写这道题的题解 把所有限制去掉,给出一个值, ...
- 洛谷OJ P1196 银河英雄传说(带权并查集)
题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...
- 关于三目运算符与if语句的效率与洛谷P2704题解
题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图.在每一格平原地形上最 ...
随机推荐
- 【Python脚本】路径管理之pathlib
在Python的pathlib模块中,Path类和PurePath类是用于处理文件和目录路径的两个主要类.它们具有不同的目的和功能,以下是它们的主要异同点: 类的继承关系: Path类继承自PureP ...
- # 50 个最常被问到的 Selenium 面试问题和答案
Q #1) 什么是自动化测试? 自动化测试或测试自动化是自动化手动过程以测试被测应用程序/系统的过程.自动化测试涉及使用单独的测试工具,该工具可让您创建可以重复执行且不需要任何手动干预的测试脚本. Q ...
- 【P2】MARS使用/MIPS汇编
课上 T1 在n位数中删除N个数使剩下的(n-N)位数最大 写得似乎过于谨慎而慢了,没出现寄存器打错的问题,一遍过了 T2 拆分数字 将输入整数N拆分为几个数相加的形式,按拆分项数降序排列,每项按数字 ...
- go krotos proto编译引用外部包 was not found or had errors
前言 kratos protos 生成 pb.go 文件时,会出现引用其他 proto 文件报错 was not found or had errors,因找不到此文件而无法编译. 解决 首先我们先了 ...
- Linux下Oracle client(sqlplus)安装和配置
分类专栏: Linux 数据库 文章标签: Linux Oracle Client sqlplus 方向键版权1.下载rpm包http://www.oracle.com/technetwork/top ...
- oracle调整sga、pga大小
展开修改sga大小1-1查看当前sga大小SQL> show parameter sga1-2修改sga_max_size为24GSQL> alter system set sga_max ...
- AITCA联盟:渠道商的革命号角,产业变革的领航者!
AITCA联盟:渠道商的革命号角,产业变革的领航者! 在AI技术风起云涌的今天,一场无声的革命正在悄然酝酿.在这场革命中,渠道商们不再是被动接受的附庸,而是即将成为改写产业规则.掌握自己命运的主宰者! ...
- Efficient Scalable Multi-Party Private Set Intersection
论文学习:Efficient Scalable Multi-Party Private Set Intersection 这篇论文提出了一种基于双中心零共享(Bicentric Zero-Sharin ...
- SpringBoot 部署:外置依赖包
目录: 1.前言 2.瘦身前的Jar包 3.解决方案 一.前言 SpringBoot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编 ...
- 在 ASP.NET Core 中编写高性能 Web API 的4个小技巧
Web API 通常用来与外部模块进行通信.发送和接收数据,作为后端开发人员,应该把写出高性能的应用作为目标. 下面 4 个技巧是我在编写 Web API 的小技巧. 1 .大量数据使用分页查询 接口 ...