zoukankan      html  css  js  c++  java
  • 【bzoj 2467】[中山市选2010]生成树(数论--排列组合)

    题目:有一种图形叫做五角形圈。一个五角形圈的中心有1个由n个顶点和n条边组成的圈。在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形。这些五角形只在五角形圈的中心的圈上有公共的顶点。现在给定一个n五角形圈,你的任务就是求出n五角形圈的不同生成树的数目。还记得什么是图的生成树吗?一个图的生成树是保留原图的所有顶点以及顶点的数目减去一这么多条边,从而生成的一棵树。注意:在给定的n五角形圈中所有顶点均视为不同的顶点。

    解法:题目是问使这 N 五角形圈生成树的种数。而生成树就是要 N-1 条边,无环。我们的目标就是破环环,也就是各个封闭图形。
        首先,我们可以考虑中间的 N边形 一定要删一条边,C(n,1)。再是周围的 N 个五边形,有 N-1 个仍是五边形,各删一条边 C(5,1)^(n-1),有一个只剩四条边,删一条边 C(4,1)。综合起来就是 C(n,1)*C(5,1)^(n-1)*C(4,1) 。

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 using namespace std;
     5 #define N 110
     6 #define mod 2007
     7 
     8 int s[N];
     9 int main()
    10 {
    11     int x=1;
    12     for (int i=1;i<=N-10;i++)
    13     {
    14       x=(x*5)%mod;
    15       s[i]=x;
    16     }
    17     int T,n;
    18     scanf("%d",&T);
    19     while (T--)
    20     {
    21       scanf("%d",&n);
    22       printf("%d
    ",(n*4*s[n-1])%mod);
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    用 Python 脚本实现对 Linux 服务器的监控
    linux系统常用命令
    一小时学会用Python Socket 开发可并发的FTP服务器!!
    Python获取程序运行目录和脚本目录
    哪些情况会导致OOM
    如何查看端口状态
    wait(),sleep(),notify(),join()
    cookie和session的区别与会话跟踪技术
    TCP的可靠性
    OSI和TCP/IP的对比+IP地址分类
  • 原文地址:https://www.cnblogs.com/konjak/p/6071090.html
Copyright © 2011-2022 走看看