无聊的会议
【题目描述】
有一张正n边形的会议桌,n个干部分别坐在这个正n边形的各个顶点上。
“完全”等腰三角形的定义是,此等腰三角形的三个顶点皆为正n边形的顶点,且三个顶点上的干部性别相同。
现询问在此正n边形中,共有多少个“完全”等腰三角形。
【输入描述】
第一行输入一个数T(T <= 1000),表示共有T组数据;
接下来T行,每行输入一个长度为n的字符串,表示正n边形上的n个顶点,1为男,0为女。
【输出描述】
对于第i组数据,输出“Case i: Ans”,Ans表示“完全”等腰三角形的数目。
【样例输入】
5
0001
01
10001
1101010
111010
【样例输出】
Case 1: 1
Case 2: 0
Case 3: 1
Case 4: 3
Case 5: 2
【数据范围及提示】
对于40%的数据,n <= 20;
对于100%的数据,n <= 106。
题解:
法一:可以假设男性为黑点,女性为白点。枚举一个等腰三角形的顶点,再枚举一个底边点。这个三角形就确定下来了。求同色三角形的个数。n2做法。
法二: 所有等腰三角形的个数-所有异色等腰三角形的个数=所有同色三角形的个数。
枚举顶点,然后在枚举任一与他颜色不同的底边点(即为多边形上所有与它颜色不同的点的个数O(1)),求出异色边的数量。这样子有一种三角形(顶点与两底边点一个为同色,一个为异色)数了一次,有一种三角形(顶点与两底边点均为异色)数了两次。可以使其都计算两次。
计算顶点与一底边点一个为同色,一个为异色的三角行的个数:枚举两个底端点,保证其颜色不一样。n为奇数时,任意两个点都能形成底边。n为偶数时,奇偶性相同的点能形成底边。异色边都计算了两次,除以2,就是底边异色的个数。即为三角形的个数。
I'm so lost but not afraid ,I've been broken and raise again