题意:
给出平面上n个点(n<=300),(都在第一象限且没有重复的,保证坐标都是整数),合法的点集满足如下要求:
1、6个点,并且有4个点在x轴上
2、这六个点可以组成两个三角形并且两个底角都是锐角
3、一个三角形被另一个完全包含
画张图:(有点丑…QAQ
分析:
我的第一想法是枚举坐标轴上的4个点…然后想想就暴复杂度了…QAQ
后来YOUSIKI童鞋讲解了大爷讲的正确做法:
显然我们应该枚举不在坐标轴上的2个点…
我们枚举PQ两个点,然后设PQ的连线交x轴于M,过Q点做QN垂直于x轴,过P点做PS垂直于x轴…
然后我们发现左边的两条边和右边的两条边是互不影响的…所以我们可以求出来左边的方案和右边的方案乘起来就好了…
先看右边的吧…
显然如果要求底角是锐角并且大三角形包含小三角形P的那条边就要在PM右边…Q的那条边只需要在QN右边就行了…
那么我们分类讨论一下…
如果PQ的边都在M右边…
for(int i=1;i<=n;i++)//n是M右边的点的个数
ans+=n-i;
如果Q的边在M左边…
ans+=m*n;//m是NM之间的点的个数
左边同理…
by >_< NeighThorn