JZOJ 5878. 【NOIP2018提高组模拟9.22】电路图 A
Description
nodgd 要画一个电路图。
这是一个很简单的电路图,所有的元件都是串联关系,从整体来看就是一个环状的结构。画电路图有很多要求,nodgd 为了画得好看就又添加了一些
额外的要求。所有要求归结起来有以下几点:
1、这个环状电路上有n个双端电路元件(即每个电路元件有两个连接导线的接头),其中只有一个直流电源;为了本题方便,其他n − 1个元件都是一模一样的电阻。
2、电流在电路图中每经过一个元件,就必须拐一个90°的弯;没有经过元件时不允许拐弯。参考右图。
3、从电路图整体上观察,电流沿顺时针方向流动,且电路不能自交。参考下图。
4、如果一个符合题意的电路图,可以通过整体旋转一定的角度,再适当调整图中导线的长度,得到另外一个符合题意的电路图,则这两个电路图是相同的。参考下图。
5、如果电路环路的内部存在一个点,使得它可以“看到”电路环路内部的所有位置,就认为这个图是美观的,反之是不美观的。相同的电路图不一定都美观。参考下图。
那么问题来了,nodgd 想知道有多少种不同的电路图,以及有多少种不同的美观电路图。由于两个问题的答案都可能很大,请mod 1,000,000,007输出结果。
Input
输入文件 A.in。
输入文件第一行包含一个正整数n,表示包含电源在内的电路元件的总数量。
Output
输出文件A.out。
输出文件第一行包含一个整数,表示不同的电路图数量mod 1,000,000,007的结果。第二行包含一个整数,表示不同的美观电路图数量mod 1,000,000,007的结果。
Sample Input
【样例1】
6
【样例2&3】见下发文件
Sample Output
【样例1】
6
6
Data Constraint
对于 10%的数据,n = 12;
对于 30%的数据,n ≤ 24;
对于 60%的数据,n ≤ 5000;
对于 100%的数据,4 ≤ n ≤ 10^7,且n是个偶数。
Hint
【输入输出样例 1 说明】
可以有如下几种电路图,电路图数量是 6,所以输出文件第一行输出一个整数 6; 容易发现,这 6 个电路图都是美观的电路图,所以第二行也输出一个整数 6。
Solution
结论题。
有一个元件就会拐弯一次,我们发现 右拐次数就等于左拐次数+4 ,因为要顺时针拐一圈回来。
所以第一问的答案即为 Cnn/2−2C_{n}^{n/2-2}Cnn/2−2 ,即从 nnn 次拐弯中选 n/2−2n/2-2n/2−2 次左拐。
第二问的话我们发现不能连续两次逆时针拐弯,不然就会形成一个不美观的凹型。
所以我们把路径分成四段,可以发现每段的拐弯数都是奇数。
问题转化为将 nnn 拆分成 4 个奇数的方案数(nnn 是偶数)。
我们先考虑将 nnn 拆成 4 个偶数怎么做。将 n/2−1n/2-1n/2−1 个偶数排在一起(都小于 nnn)。
选 3 个出来(相当于挡板),将间隔作为选择的偶数(保证了和不会超过 nnn)。
于是我们就可以得出方案书为 Cn/2−13C_{n/2-1}^{3}Cn/2−13 。
类比选 4 个奇数,我们将这四个奇数都加 1 ,则和为 n+4n+4n+4 。
于是方案数为 C(n+4)/2−13=Cn/2+13C_{(n+4)/2-1}^{3}=C_{n/2+1}^{3}C(n+4)/2−13=Cn/2+13
由于电源放在哪儿都可以,所以要乘 nnn ;
又因为整体旋转后相同的电路图都是一样的,所以要除以 4 。
故第二问最终答案为 Cn/2+13∗n/4C_{n/2+1}^{3}*n/4Cn/2+13∗n/4 。
Code
#include<cstdio>
using namespace std;
typedef long long LL;
const int N=1e7+5,mo=1e9+7;
int n;
int f[N];
inline int ksm(int x,int y)
{int s=1;while(y){if(y&1) s=(LL)s*x%mo;x=(LL)x*x%mo;y>>=1;}return s;
}
inline int C(int x,int y)
{return (LL)f[x]*ksm(f[y],mo-2)%mo*ksm(f[x-y],mo-2)%mo;
}
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);scanf("%d",&n);for(int i=f[0]=1;i<=n;i++) f[i]=(LL)f[i-1]*i%mo;printf("%d\n",C(n,n/2-2));printf("%d",(LL)C(n/2+1,3)*n%mo*ksm(4,mo-2)%mo);return 0;
}
JZOJ 5878. 【NOIP2018提高组模拟9.22】电路图 A相关推荐
- NOIP2018提高组模拟题(六)
购物(shop) Description 小林来到商店中进行购物.商店里一共有 n 件物品,第 i 件物品的价格为 a[i] 元.小林总共需要购买 m 件物品,他希望他所花费的钱最少,请你计算出最小 ...
- NOIP2018提高组比赛总结
NOIP2018提高组比赛总结 前言 新赛季,依旧有很多失误. 在些许的遗憾和无奈中,NOIP2018,撒花结束 纵观今年的整一场NOIP,有许多值得总结的地方 正文 NOIP2018初赛 第二次参加 ...
- 第一届『Citric杯』NOIP提高组模拟赛 题解
[官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...
- NOIP2018提高组省一冲奖班模测训练2 T3 XYK的音游
10月22日NOIP2018提高组省一冲奖班模测训练2 T3 XYK的音游 题目描述 XYK最近入坑了一个新音游. 游戏界面上有Ñ个并排的按键,当前这首歌有米个鼓点.游戏的玩法是在鼓点的时刻移动鼠标到 ...
- NOIP2018 提高组游记
NOIP2018 提高组游记的重点不是NOIP而是游记!!! 本文分为 4 个部分: 1.关于2017, 以及自己的简介 2.noip2018游记 3.写给高一高二的学弟学妹 4.写给高三的同学和自己 ...
- NOIP2018提高组心路历程(AFO+自闭)
NOIP2018提高组历程(AFO+自闭) 在不断地考试考试考试(浪浪浪)中,不知不觉,11月9号这个出征日就到来了,再出发前还是有很多小插曲的(比如刚好正面遇到她,吃好饭后还对视了一眼).随着大巴的 ...
- P5049 [NOIP2018 提高组] 旅行
P5049 [NOIP2018 提高组] 旅行 题意: 一棵树(可能是基环树),从1出发,每到达一个新的点就记录下编号.求一种走法使得记录下来的编号字典序最小. 1≤n≤500000 m=n−1 或 ...
- 51Nod NOIP2018提高组省一冲奖班模测训练
51Nod NOIP2018提高组省一冲奖班模测训练 NOIP2018提高组省一冲奖班模测训练1 T1 珂朵莉的旅行 T2 奈芙莲的序列 T3 奈芙莲的护符 NOIP2018提高组省一冲奖班模测训练2 ...
- NOIP2017提高组模拟赛4 (总结)
NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...
最新文章
- Java并发编程71道面试题及答案
- oracle rac scan ip 用途 原理
- 【second】Flatten Binary Tree to Linked List
- php从头部添加,php如何向header头添加Authorization信息?
- delphi 解析一维条码_科普帖:一般商用条码扫描器全知道,只需三把枪
- Ubuntu安装Oracle手册(简单版)
- 冒泡排序时间复杂度计算和优化
- 计算机网络基础(一)
- 《Adams/ view从入门到提高》视频 —— ftc正青春
- 如何下载安装fireBug
- Java通过选择城市来计算运费(基础程序)
- java获取每月最后一天
- Linux man帮助文档
- iOS打包错误The operation couldn’t be completed. (AppThinning.StubError error 1.)
- 2020 第三届江西省高校网络安全技能大赛 线上赛Writeup
- vue使用lodop.js实现前端标签打印
- eclipse配置glassfish插件和密码
- 无线能量传输(WPT)中收发线圈的等效电路模型
- 技术问题收集整理汇总——持续更新中...
- 技术学院技能发展网络在线技能培训在线技能Rtaj比赛进行到一乔
热门文章
- 吴恩达 coursera AI 第一课总结+作业答案
- 随机信号通过带通滤波器
- 科大星云诗社动态20210309
- [云炬python3玩转机器学习笔记] 2-5机器学习相关的哲学思考
- [C++调试笔记]Main函数声明变量
- GitHub 新手详细教程转载,亲测可用
- GitHub 中文排行榜,高分优秀中文项目一网打尽!
- 中学计算机科学教育,计算机科学教育周 – Tsinghua International School 清华大学附属中学国际部...
- python pandas csv时间聚合_Python通过pandas操作excel常用功能
- Js提交表单的两种方法