A. B.
暴力
C.
人和语言都看做点,建图后,求出图有k个联通块,答案就是k-1, 注意每个人都不会任何语言的情况,答案为n。
D.
先排除不成立的情况 m == 3 && n > 5
.抛物线的对称的一边上任取m个点必定构成凸m边形。我们可以先构造出这凸m边行, 然后再加入n-m个点,这些点的加入要不能改变凸包最多的边数m,
我们可以让这n-m个点与m个点的连接的直线倾斜角接近90度,横坐标差值小,纵坐标差值大即可。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int h = 10000000;
int main() {
ios :: sync_with_stdio(0);
int i, j, n, m;
cin >> n >> m;
if(n >= 5 && m == 3) puts("-1");
else {
for(i = 1; i <= m; i++) printf("%d %d\n", i, h+i*i);
for(i = 1; i <= n-m; i++) printf("%d %d\n", i, -h-i*i);
}
return 0;
}
E.