空间中有n个点,任意3个点不共线。每两个点用红线或者蓝线连接,如果一个三角形的三边颜色相同,那么称为同色三角形。给你一组数据,计算同色三角形的总数。
标签:opened one ns2 接下来 mem inpu ble bsp put
题面:
第一行是整数n, 3 <= n <= 1000,点的个数。
一个整数,单色三角形的数目。
数据已加强
O(n^3)的暴力会超时(扯淡!!!)。
但是我们还是有显而易见的结论$ans=C_{3}^{n}-\sum_{i=1}^{n}\frac{(n-1-D[i])*D[i]}{2}$
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <algorithm> 5 using namespace std; 6 inline int read() 7 { 8 int s=0,f=1; 9 char ch=getchar(); 10 while(ch<‘0‘||ch>‘9‘) 11 { 12 if(ch==‘-‘) 13 f=-1; 14 ch=getchar(); 15 } 16 while(ch>=‘0‘&&ch<=‘9‘) 17 s=(s<<1)+(s<<3)+ch-‘0‘,ch=getchar(); 18 return s*f; 19 } 20 int n,m; 21 int d[1001]; 22 int ans1,ans2; 23 int main() 24 { 25 n=read(); 26 m=read(); 27 ans1=n*(n-1)*(n-2)/6; 28 for(int i=1;i<=m;i++) 29 { 30 ++d[read()]; 31 ++d[read()]; 32 } 33 for(int i=1;i<=n;i++) 34 ans2+=(n-1-d[i])*d[i]; 35 printf("%d",ans1-(ans2>>1)); 36 }
BZOJ 2916[Poi1997]Monochromatic Triangles
标签:opened one ns2 接下来 mem inpu ble bsp put
原文地址:http://www.cnblogs.com/radioteletscope/p/7436425.html