CodeForces 23B Party (思维题)

题意:

n个人要去参加聚会,刚开始所有人都在Party,后来一个朋友都没有的人会离开,接着是只有一个朋友的人也会离开,以此类推直到有n-1个朋友的人离开  问你最佳情况下最后这个Party将剩余多少人?




---------------------------------------------------------------思路剧透警戒线---------------------------------------------------------------









思路:

如果你刚开始是找了一些比较小的数字来试图推出规律的话那恭喜你掉进了一个思路陷阱~~     我刚开始是在一到六的范围里找规律 还以为是输出n/2然后特判下2就好  但是后来发现这个规律对于比较大的数字不适用  真正的规律是酱紫的    首先你可以让所有的人和其他任意的人之间都是朋友关系  这样Party上所有的人之间都互相认识了,然后让断开一号和N号的朋友关系  这样的话在一到n-3的回合中没有一个人会离开 然而在n-2的回合中一号和最后一号会离开  然后到n-1回合的时候没有人会离开 因为这时候其他人因为一号和最后一号的离开朋友的数量变成了n-2  就酱紫~~


#include
#include
#include
using namespace std;
char p[10000];
int main()
{
    int t;
    cin >> t;

    while (t--) {
       int n;
       cin >> n;
       if(n == 1){
            cout << 0 << endl;continue;
       }
       cout << n - 2 << endl;
    }
}

 
  

你可能感兴趣的:(CodeForces)