SP7015 CFPARTY - Party 题解

23 年 9 月 8 日 星期五
214 字
2 分钟

前言

这题不难,前提在于你想到了没。

大致题意

nn 个人,先去掉没有朋友的人,再去掉有 11 个朋友的人,以此类推。求出最后剩下多少人。

抽象题意

构造一张有 nn 个结点的图,依次删去度数为 00n1n-1 的结点,直至无法删除,求出最后最多能剩余几个结点。

思路/解析

若这 nn 个点两两相连,则有 n×(n1)÷2n\times(n-1)\div2 条边,这样每个结点的度数都为 n1n-1,都会被删去。

如果删去一条边,就有两个结点的度数变成了 n2n-2,会在别的 n2n-2 个点之前被删去,删去后剩下的结点的度数变成了 n2n-2,不会被删去。所以最优方案为剩下 n2n-2 个点。

代码

cpp
#include<bits/stdc++.h>
using namespace std;
int T,x;
int main(){
	cin>>T;
	while(T--)cin>>x,cout<<max(x-2,0)<<'\n';
}

文章标题:SP7015 CFPARTY - Party 题解

文章作者:Walter_Fang

文章链接:https://blog.walterfang.us.kg/posts/solution-sp7015[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。