Codeforces Round #170 (Div. 2)
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.