比赛时候好像被自己带入了一个深坑.
“空项链要如何处理?”
“好像并不满足好友关系条件,算作敌人?恩”
“那岂不是每个人都可能打造一条空项链?那岂不是所有答案都是T?”
真是为我的智商堪忧~
直至看到知乎一位大神的具体解释,瞬间恍然大悟.
可将该题抽象为m个顶点的完全图,有
m⋅(m−1)2
条边,将其染色,蓝色代表两点为朋友,红色代表两点为敌人,每个点上有一个整数集合
A[i]
,其中集合
A[i]
为
{1,2,3,⋅⋅⋅,n}
全集的子集,可以为空集,如果两点蓝色相连,那么他们的交集非空,反之交集为空格.问对于任意的染边方案,是否都有解?(即是最坏的情况下).
模拟m为1,2,3,4,5,6的情况的满足任意染边方案的n最小值,然后丢给OEIS.
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
LL m,n;
while (~scanf("%lld%lld",&m,&n)){
puts(m*m/4<=n?"T":"F");
}
}