zoukankan      html  css  js  c++  java
  • 一道公式题——数三角形

    数三角形(count)

                             时限:10s 内存:512M

    刚刚上大学的洁洁在学习组合数学的过程中遇到一道麻烦的题目,她希望你能帮助她解决。给定一张无向完全图G,其中大部分边被染成蓝色,但也有一些边被染成红色或者绿色。现在,洁洁需要给这张图的多样性进行打分。一张图的多样性取决于它的同色和异色三角形的个数。具体来说,G中每有一个三边颜色不同的三角形可以得3分,每有一个三边颜色相同的三角形则要被扣掉6分,其它三角形不得分也不扣分。

    现在,请你写一个程序来计算G的多样性分数。

    输入数据:

    第一行两个正整数n和m其中n表示G中顶点的个数,m表示G中红色或者绿色的边的条数。

    接下来m行每行包括三个整数a b c,代表连接顶点a和顶点b的边颜色为红色(c=1)或者绿色(c=2)

    输出数据:  

    一行,G的多样性得分 mod 9973 的值。

     

    样例输入1

    4 3

    1 2 1

    1 3 1

    2 3 1

    样例输出1

    9967

    样例输入2:

    4 4

    1 2 1

    1 3 1

    2 3 1

    1 4 2

    样例输出2

    0

    数据范围:

    对于20%的数据,n<=500

    对于40%的数据,n<=2000

    对于100%的数据,n<=50000,m<=200000。

     

    本题考查组合计数方法,算两次。本题的关键是计算∠的个数。一个角由一个顶点和两条边组成。

    用A1,A2,A3分别表示两边为红绿,红蓝和绿蓝的∠的个数。

    用B1,B2,B3分别表示两边都是红,绿和蓝的∠的个数。

    用S表示异色三角形的个数。

    用T表示三边同色三角形的个数。

    用L表示其它三角形的个数,即只有两种颜色的三角形的个数。

    用算两次的方法,我们可以得到,

    3S+2L=A1+A2+A3

    L+3T=B1+B2+B3

    这样一来,总得分为

    3S-6T=A1+A2+A3-2B1-2B2-2B3

    注意到所有Ai和Bi都可以简单地通过算出每个节点连出的不同颜色的边的条数算出。

    这样一来就可以在线性时间完成计算。

    【代码不给】

  • 相关阅读:
    DMA+USART重定义打印接口
    FTP初探
    ESP8266-lua开发
    GPIO常见问题分析
    新装系统简介
    java四个元注解的作用
    Linux常用操作指令
    @Autowired 与@Resource的区别(详细)
    内存溢出的几种原因和解决办法
    什么是NIO2
  • 原文地址:https://www.cnblogs.com/ZDHYXZ/p/8724308.html
Copyright © 2011-2022 走看看