中山大学选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述

1.2问题分析

本题主要考查图论中生成树及组合数学的求法。通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点。通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉。那么我们可以思考:

如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义。所以我们可以得出如下结论:

(1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边。根据生成树的定义,我们可以发现该生成树一共有4n-1条边。那么我们需要删去n+1条边。

(2)对于每一个五角形而言,我们需要删除至少一条边,因为如果不删除那么我们可以发现对于五角形的任意两个点我们都能找到至少两条路径相互可达。所以我们需要对n-1个五角形只需要删除一条边(此时一共有5种方法)。对于最后一个五角形需要删除两条边。

(3)对于需要删除两条边的五角形而言,我们可以思考,如果删除的都是非回圈边,那么最后一定会导致部分点不在生成树中,因此我们可以从此得出,删除的两条边其中一条是非回圈边,另一条是回圈边。那么此时删除的方法有4种。

分析到此,我们可以得出,所有的方法一共有:种类的方法。

1.3AC代码

#include<iostream>
using namespace std;
#define mod 2007
int main()
{
    int n ;
    while(cin>>n)
    {
        int sum=0;
        sum=4*n%mod;
        for(int i=1;i<=n-1;i++)
            sum=sum*5%mod;
        cout<<sum%mod<<endl;
    }
    return 0;
}
补充:
对于询问次数较多但是不同的询问数较少的情况下,可以先进行预处理(打表)。
这样更加快速高效,那么我们可以写如下一个函数,然后直接调用结果就好:
int ans[maxn];
void process()
{
    for(int i=2;i<=maxn;i++)
    {
        ans[i]=4*i%mod;
        for(int j=1;i<i;j++)
            ans[i]=ans[i]*5%mod;
    }
}
时间: 2024-07-28 12:48:55

中山大学选拔赛第一章题1【计算生成树】------2015年1月23日的相关文章

第一章 部署虚拟环境linux系统 2019年7月15日星期一 第二课

第一章 部署虚拟环境linux系统 2019年7月15日星期一  第二课 1.1 准备的工具 VmawareWorkSation 12.0   虚拟机 RadHatEnterpriseLinux[RHEL]7.0   红帽操作系统 1.2 安装配置VM虚拟机 略…… 1.3 安装配置VM虚拟机 VM配置要开启BIOS里的inte-TV  虚拟化服务 1.4 配置root用户密码 红帽RHCSA考前辅导视频 1.5 Rpm红帽软件包 (1)源代码安装弊端:1.难度高,安装困难. 2.需要自己解决依

Oyk的ACM刷题记录(始于2015年2月29日,可能含剧透)

Online Judge 题目序号/题目 简单大意/题解 犯2情况 2月29日 SPOJ GSS1  不带更新区间最大子段和. 线段树维护 区间从左/右开始的最大值.区间最大值.区间和. 1.输出忘了换行. 2.打错了一个字母. SPOJ GSS2 区间不重复最大子段和. 离线维护s[i..now],线段树维护 区间历史最大值.区间历史最大更新值.区间现在最大值.区间现在更新值. 询问输出区间历史最大值. 1.线段树询问忘记写pushdown了. SPOJ TEST 输出所有42前的数. 1.不

中山大学校队选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述 1.2问题分析 本题主要考查图论中生成树及组合数学的求法.通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点.通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉.那么我们可以思考: 如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义.所以我们可以得出如下结论: (1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边.根据生成树

中山大学校队选拔赛第一章题4【简单数迷Simple Kakuro】-------2015年1月28日

一:题意描述 本题就是给定一个迷宫,其中第一行和第一列都给定了数值.现在我们的任务就是需要把剩余的空格用1-9的数字把它填满,并且每行每列数值之和需要和行列标定的值相等.问最后是否可行,如果有多种方案需要输出一种方案. 二 :题目分析 本题主要考查DFS当中剪枝技巧的利用以及DFS的方向规划问题. 首先我们可以根据题目已知信息得出行之和必须等于列之和.(第一次剪枝) 然后我们可以根据每一个数字不能在同一行或者同一列重复出现[设定标记]进行剪枝(第二次剪枝) 对于如果某一行(一列)数值还没有填满但

中山大学校队选拔赛第一章题1【紧急逃离Emergent escape】----2015年1月26日

一: 题意描述 二:题目分析 本题的大致意思是讲:在给定的一个大圆上挖去很多圆(这些圆有的在大圆里面,有的在大圆外面,有的与圆相加),凡是被圆占据的部分则不能通行. 现在给定两个点,(lifeship和controlling room)如果两者能够到达的话表示能够Escape,否则就只有Die hard. 本题的主要考查图论知识和计算几何方面的知识.首先我们对于这个问题需要建模.我们首先可以把这个大圆看成单独的一个区域.现在的问题就是在整个大圆内找不到一条线可以让lifeship和control

中山大学校队内部选拔赛3.5【Horse Racing】------2015年2月10日

一:题目大意 给定A和B两人各自n条马,每一条马的能力值不同,现在由裁判C主持比赛.每一次比赛A和B各自出一条马,能力值大的一方会获胜.现在规定如果当进行到最后时A和B打成平手的话我们就说C赢.现在问怎样才能保证C赢? 二:题目分析 本题主要考查贪心(不太好想)策略.我们首先可以得到一个起码的规律那就是如果n是奇数,那么这个肯定不会赢.当n时偶数时: 我们要想C赢,那么A和B需要各自赢一半.现在我们对于A的输入的马能力值定义为:a1,a2,a3······an.B的输的能力值定义为:b1,b2,

老男孩教育每日一题-2017年05月23日-一个100M的分区,写入0.5K的,或写入1M的,可以写多少?

1.题目 老男孩教育每日一题-2017年05月23日-一个100M的磁盘分区,写入0.5K的文件,或写入1M的文件,分别可以写多少个?为什么? 2.参考答案 一个100M的磁盘分区,写入0.5K的文件,或写入1M的文件,分别可以写多少个?为什么?错误解答:很容易计算1K的个数:100*1000=100000个,1M文件的个数:100/1=100个 解答思想:先答几点知识 a.上面的考试题考察的是文件系统inode和block知识.b.inode是存放文件属性信息的(也包含指向文件实体的指针),默

第一金早评 - 2015年01月07日-晨早快訊

每日金市速遞 (2015年01月07日) 谢权东 先生 上日9999 金粒賣出價每両 HKD 12590 金粒賣出價資料參考周生生,周大福 即日投資策略: 黃金日線圖上分析,日線收3連陽,K線沿布林帶中軌和上軌之間運行,金價日內大漲,布林帶有向上開口跡象,布林中軌向上翹頭,短週期均線指標金叉向上,MACD快慢線死叉於0軸下方金叉,有上穿0軸趨勢,紅柱放量. 從4小時來看,布林帶向上開口,金價處於布林上軌1220與MA5-1215之間震盪往上,短週期均線指標金叉向上,MACD快慢線於0軸附近形成金

我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算是有一点基础.但在这里我要保持空杯心态,一切从头开始.好了不多说,Let's Python!!!! 一.Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.目前Python已经成为实际上除了中国最流行的开发语