构造——洛谷 P1416 攻击火星
2017-06-20 11:44
232 查看
https://www.luogu.org/problem/show?pid=1416
太屌了;
By tinylic
经过找规律可以发现答案为n-2.
以下是证明:
令d[i]为i 的度数。
考虑一个点i 不被删去的条件,必然是前面与i 相邻的点j(可以是多个)被删去,导致d[i]
减小至小于等于d[j].
1)易知ans!=n。
2)考虑ans能否是n-1,也就是只删一个点,设这个点为i。
因为i 是唯一被删去的点,所以d[i]一定不是最大的,即d[i] < n-1。
其次删去i 导致其余点的d[]均发生改变,从而无法被删去。
即i 和其余点都相连,d[i]=n-1,矛盾。
所以ans!=n-1.
3)我们可以构造出ans=n-2的情况:
构造完全图G,删去一条边(i,j)。这样d[i]=d[j]=n-2,其余d[]均为n-1.
首先删去VI,Vj,这样其余点各少两条边,d[]均变成n-3,不用被删去。
由此n-2是合法的解,也是最大的解,所以答案就是n-2.
太屌了;
By tinylic
经过找规律可以发现答案为n-2.
以下是证明:
令d[i]为i 的度数。
考虑一个点i 不被删去的条件,必然是前面与i 相邻的点j(可以是多个)被删去,导致d[i]
减小至小于等于d[j].
1)易知ans!=n。
2)考虑ans能否是n-1,也就是只删一个点,设这个点为i。
因为i 是唯一被删去的点,所以d[i]一定不是最大的,即d[i] < n-1。
其次删去i 导致其余点的d[]均发生改变,从而无法被删去。
即i 和其余点都相连,d[i]=n-1,矛盾。
所以ans!=n-1.
3)我们可以构造出ans=n-2的情况:
构造完全图G,删去一条边(i,j)。这样d[i]=d[j]=n-2,其余d[]均为n-1.
首先删去VI,Vj,这样其余点各少两条边,d[]均变成n-3,不用被删去。
由此n-2是合法的解,也是最大的解,所以答案就是n-2.
#include<bits/stdc++.h> #define Ll long long using namespace std; const int N=10005; int n; int main() { scanf("%d",&n); if(n==1)cout<<0;else if(n==2)cout<<1;else cout<<n-2; }
相关文章推荐
- 洛谷 P1416 攻击火星
- 洛谷 P1416 攻击火星
- P1416 攻击火星
- C 洛谷 P3599 Koishi Loves Construction [构造 打表观察]
- 攻击方法:谈php+mysql注射语句构造
- 洛谷 P1640 BZOJ 1854 [SCOI2010]连续攻击游戏
- 洛谷P1755 攻击火星
- php 攻击方法之谈php+mysql注射语句构造
- 【洛谷】P4585 [FJOI2015]火星商店问题
- 攻击方法:谈php+mysql注入语句构造
- 攻击方法:谈php+mysql注射语句构造
- 洛谷P1268 树的重量 【构造 + 枚举】
- 【洛谷1640】[SCOI2010]连续攻击游戏
- 【洛谷1640】[SCOI2010]连续攻击游戏
- php 攻击方法之谈php+mysql注射语句构造
- 洛谷P1268 树的重量 【构造 + 枚举】
- 洛谷P1640 [SCOI2010]连续攻击游戏(二分图)
- [洛谷1268] 树的重量 构造+思维
- 【SSL】POODLE 漏洞细节分析与攻击构造
- 洛谷P1640 [SCOI2010]连续攻击游戏