前言:团队内部举行的一个二分专题小测试。题目来源都是CodeForces,在写题解之前,先把二分法的核心部分写出来。
int binarySearch()
{
int Max = INF,Min = 0, Mid;
while(Min < Max)
{
Mid = (Max + Min) >> 1;
if(C(Mid)) // 二分的条件C
{
Max = Mid;
}
else
{
Min = Mid + 1;
}
}
return Min; //有别的写法,但是这么写的结果应该是Min;
}
// 二分法用到的STL, 其实直接看例子更好理解。
int a[] = {1, 2, 2, 3, 4}
int l = lower_bound(a, a + 5, 2) - a; // l = 1, 即返回a[i] >= 2的第一个下标;
int u = upper_bound(a, a + 5, 2) - a; // u = 3, 即返回a[i] > 2的第一个下标;
Problem A: Tennis Game
Problem B: Vasya and Basketball
Problem C: Vanya and Lanterns
Problem D: Maximum Value
Problem E: Fight the Monster
Problem F: Friends and Presents
Problem G: Long Jumps