zoukankan      html  css  js  c++  java
  • LA 5846 (计数) Neon Sign

    从反面考虑,统计非单色三角形的个数。

    如果从一个点出发两条不同颜色的边,那么这三个点一定构成一个非单色三角形。

    枚举一个顶点,统计从这个点出发的红边的个数a[i]和蓝边的个数n - 1 - a[i],这样以该点为顶点的非单色三角形的数目为a[i] * (n - 1 - a[i])

    由于每个单色三角形计数了两次,所以总单色三角形的个数为sum{ a[i] * (n - 1 - a[i]) | 1 ≤ i ≤ n } / 2

    最后一共有C(n, 3)个三角形,用总的减去所求就是答案。

     1 #include <cstdio>
     2 
     3 const int maxn = 1000 + 10;
     4 int a[maxn][maxn];
     5 
     6 int main()
     7 {
     8     //freopen("in.txt", "r", stdin);
     9 
    10     int T;
    11     scanf("%d", &T);
    12     while(T--)
    13     {
    14         int n;
    15         scanf("%d", &n);
    16         for(int i = 1; i < n; i++)
    17             for(int j = i + 1; j <= n; j++)
    18             {
    19                 int x;
    20                 scanf("%d", &x);
    21                 a[i][j] = a[j][i] = x;
    22             }
    23         long long ans1 = 0;
    24         for(int i = 1; i <= n; i++)
    25         {
    26             int t = 0;
    27             for(int j = 1; j <= n; j++) if(i != j) t += a[i][j];
    28             ans1 += (long long)t * (n - 1 - t);
    29         }
    30         long long ans2 = n * (n-1) / 2 * (n-2) / 3;
    31         printf("%lld
    ", ans2 - ans1 / 2);
    32     }
    33 
    34     return 0;
    35 }
    代码君
  • 相关阅读:
    AJAX跨域JS访问
    dd
    学习java,搭建一个英文名著轻松阅读网站
    超载问题求解!!!
    nginx + uwsgi 部署Django项目
    一种算法问题,求指点!
    js除法余数
    button捕捉回车键
    为SQL表添加全文索引范例
    .Net刷新页面的小结
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4367066.html
Copyright © 2011-2022 走看看