DES:给出任意两点之间连线的颜色。问一共会有多少个由相同颜色的边组成的三角形。
一共有C(3, n)个三角形。考虑一每个点为顶点的三角形。颜色不同的两条边组成的三角形一定不行。所以减去。
题目链接:Neon Sign
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; int r[1100], b[1100]; int main() { int t; cin >> t; while(t--) { int n; cin >> n; memset(r, 0, sizeof(r)); memset(b, 0, sizeof(b)); //cout << n << "==" << endl; for (int i=0; i<n; ++i) { //cout << i << endl; for (int j=i+1; j<n; ++j) { int temp; cin >> temp; if (temp == 1) {r[i]++, r[j]++;} else {b[i]++, b[j]++;} } } int sum = 0; for (int i=0; i<n; ++i) { sum += r[i]*b[i]; } int ans = n*(n-1)*(n-2)/3/2-sum/2; cout << ans << endl; } return 0; }