Description
给定一个有N个顶点的凸多边形,内有K个点,这N+K个点不会有三点共线,可以选择两个点连一条线段,但是线段只能在内部的点相交,问最多能连出多少个三角形。
Input
第一行T(T≤100)为测试用例个数。
然后下面的T行,每行两个数N(3≤N≤10000)和K(1≤K≤10000)
Output
每个测试用例输出一行,最多连多少三角形
Sample Input
3 3 1 3 2 3 42
Sample Output
3 5 85
题意很明确了,此处不再赘述。就我个人而言,见到这题时还纳闷什么是凸多边形(凸多边形就是边凸出来的多边形,2333)。
思路:不想复制粘贴了,大半夜的打电话问这道题也是没谁了。进传送门吧:http://blog.csdn.net/lmhacm/article/details/52606355(文中提到的那个新生就是我(⊙v⊙))
AC代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
int t, n, k;
while(~scanf("%d",&t))
{
while(t--)
{
scanf("%d%d",&n,&k);
cout <<(n - 2 + k * 2) << endl;
}
}
return 0;
}
(隔离几天又看了一会才懂,然后记下来吧:多边形向里构建n个,里面的多边形向外构建k个,里面的多边形可分成k-2个,最终结果:n+k+k-2个)