zoukankan      html  css  js  c++  java
  • 无聊的会议

    【题目描述】

       有一张正n边形的会议桌,n个干部分别坐在这个正n边形的各个顶点上。

       “完全”等腰三角形的定义是,此等腰三角形的三个顶点皆为正n边形的顶点,且三个顶点上的干部性别相同。

       现询问在此正n边形中,共有多少个“完全”等腰三角形。

    【输入描述】

       第一行输入一个数T(T <= 1000),表示共有T组数据;

       接下来T行,每行输入一个长度为n的字符串,表示正n边形上的n个顶点,1为男,0为女。

    【输出描述】

       对于第i组数据,输出“Case i: Ans”,Ans表示“完全”等腰三角形的数目。

    【样例输入】

       5

       0001

       01

       10001

       1101010

       111010

    【样例输出】

       Case 1: 1

       Case 2: 0

       Case 3: 1

       Case 4: 3

       Case 5: 2

    【数据范围及提示】

       对于40%的数据,n <= 20;

       对于100%的数据,n <= 106

     题解:
    法一:可以假设男性为黑点,女性为白点。枚举一个等腰三角形的顶点,再枚举一个底边点。这个三角形就确定下来了。求同色三角形的个数。n2做法。
    法二: 所有等腰三角形的个数-所有异色等腰三角形的个数=所有同色三角形的个数。
              枚举顶点,然后在枚举任一与他颜色不同的底边点(即为多边形上所有与它颜色不同的点的个数O(1)),求出异色边的数量。这样子有一种三角形(顶点与两底边点一个为同色,一个为异色)数了一次,有一种三角形(顶点与两底边点均为异色)数了两次。可以使其都计算两次。
             计算顶点与一底边点一个为同色,一个为异色的三角行的个数:枚举两个底端点,保证其颜色不一样。n为奇数时,任意两个点都能形成底边。n为偶数时,奇偶性相同的点能形成底边。异色边都计算了两次,除以2,就是底边异色的个数。即为三角形的个数。
     
     
     
  • 相关阅读:
    枚举enum
    C# 位运算符
    运算符&和&&以及|和||区别比较
    LINQ TO JSON
    LINQ 随机排序
    .NET Core LinQ
    CSharp笔记>>>多线程
    3D旋转
    CSharp 之CSkin的使用教程
    CSharp笔记>>>多语言,注册,模态对话框返回值
  • 原文地址:https://www.cnblogs.com/sjymj/p/6013483.html
Copyright © 2011-2022 走看看