codeforces party
题目意思:
n个人要去参加聚会,刚开始所有人都在Party,后来一个朋友都没有的人会离开,接着是只有一个朋友的人也会离开,以此类推直到有n-1个朋友的人离开 问你最佳情况下最后这个Party将剩余多少人?
思路:
如果你刚开始是找了一些比较小的数字来试图推出规律的话那恭喜你掉进了一个思路陷阱~ 我刚开始是在一到六的范围里找规律 还以为是输出n/2然后特判下2就好 但是后来发现这个规律对于比较大的数字不适用 真正的规律是酱紫的 首先你可以让所有的人和其他任意的人之间都是朋友关系 这样Party上所有的人之间都互相认识了,然后让断开一号和N号的朋友关系 这样的话在一到n-3的回合中没有一个人会离开 然而在n-2的回合中一号和最后一号会离开 然后到n-1回合的时候没有人会离开 因为这时候其他人因为一号和最后一号的离开朋友的数量变成了n-2 就酱紫
————————————————
版权声明:本文为CSDN博主「Tdyh_NY」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tdyh_ny/article/details/71156209
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
typedef long long LL;
const int MAXN = 1e2 + 10;
int main() {
int t;
scanf("%d", &t);
while(t--) {
int n;
scanf("%d", &n);
if(n == 1) printf("0\n");
else printf("%d\n", n-2);
}
return 0;
}
查看2道真题和解析