zoukankan      html  css  js  c++  java
  • 题解 LA5846

    题目大意 多组数据,每组数据给定一个有 (n) 个点的圆,每两点之间连一条线段,每条线段只能为红蓝两色。给定线段的颜色,求单色三角形的个数。

    分析 不难想到找出不单色三角形的个数。考虑一个不单色三角形,则其有且仅有两个顶点连出了两条不同颜色的线段。那么可以枚举每个顶点,由该顶点组成的不单色三角形个数为该顶点连出的红边个数乘以蓝边个数。将答案累加后除以二,再用总个数去减它即为答案。

    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1005;
    
    int T, n, ans;
    int red[maxn];
    
    inline int Read()
    {
    	int x = 0, op = 1;
    	char ch = getchar();
    	while(ch < '0' || ch > '9') {
    		if(ch == '-') op = -1;
    		ch = getchar();
    	}
    	while(ch >= '0' && ch <= '9') {
    		x = (x << 3) + (x << 1) + (ch - '0');
    		ch = getchar();
    	}
    	return x * op;
    }
    
    int main()
    {
    	T= Read();
    	while(T--) {
    		memset(red, 0, sizeof red);
    		
    		n = Read(), ans = 0;
    		for(int i = 1; i <= n; ++i) {
    			for(int j = i + 1; j <= n; ++j)
    				if(Read()) ++red[i], ++red[j];
    			ans += red[i] * (n - red[i] - 1);
    		}
    		printf("%d
    ", n * (n - 1) * (n - 2) / 6 - ans / 2);
    	}
    }
    
  • 相关阅读:
    js 原生ajax实现
    layer 查看图片
    c# 操作XML
    C# 扩展方法
    c# 依赖注入
    visual studio 快捷键
    HIS系统结算后,没有更新单据状态为“已结算”
    网络流四·最小路径覆盖 HihoCoder
    飞行员配对(二分图最大匹配) 51Nod
    开心的小Q 51Nod
  • 原文地址:https://www.cnblogs.com/whx1003/p/12199014.html
Copyright © 2011-2022 走看看