题意:
现在有一个由n个点组成的凸多边形,然后从点1开始按照顺序朝各个点发射射线,当射线遇到一个点或是一条射线时,它就会停止。然后问你这样子整个图形总共被划分成了多少个区间。
思路:
一开始题意没有读清楚,这题只要画几个图形找规律就好了。
一开始肯定是1点出发的线把整个图形划分成了n-2块,然后剩下的射线就只能在那些已经划分好的区域内进行了。注意首尾那两个矩形和中间那个不同,然后再找一下规律就好了。
#include<stdio.h>
#include<string.h>
#include<map>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<iostream>
using namespace std;
typedef __int64 ll;
typedef unsigned __int64 ULL;
#define inf 99999999
#define maxn 10
int main(){
int n;
scanf("%d",&n);
ll ans=0;
if(n==3){
printf("1\n");
}
else{
ans=2*(n-2);
ans+=(ll)(n-2)*(n-4); //注意这里会爆int!!
printf("%I64d\n",ans);
}
return 0;
}
/*
54321
*/
凸多边形区间划分
本文探讨了通过从凸多边形的一个顶点向其余各顶点发射射线来划分多边形的问题,并给出了计算划分后形成的区间总数的算法。
1328

被折叠的 条评论
为什么被折叠?



