Codeforces 15 E. Triangles
http://codeforces.com/problemset/problem/15/E
题意:
从H点走下去,再走回H点,不能走重复路径,且路径不能把黑色三角形包围的方案数
中间的黑色三角形把整张图分成两部分
即如果想要走回H点,除了只第一行的路径,必经过上面的蓝色点
否则一定会包围黑色的三角形
设从H往左下走,又回到蓝色点的方案数为S
那么 ans=(S*S+1)* 2
S*S 是因为左右两边是等价的
加1是不经过蓝色点的那一条路径
再乘2是先向左和先向右是两种方案
如何求S?
将两行看做一层
设f[i] 表示最远到第i层,回到蓝点的方案数,那么S= 6 + Σ f[i],i∈[3,n/2]
6是前两层的方案数,因为前两层不需要考虑向内凹进的部分,所以单独计算
从第三层开始,要考虑向内凹的白色三角形
假设现在是算f[x]
那么 从H到第x层的方案数只有一种,就是沿着最左边一路往下
凹进的白色三角形每三个斜着的看做一组
设g[i] 表示凹进的白色三角形有i组,走进去在出来的方案数
必经上图中的紫色点
想要到第i组,那么前i-1组在进去的时候,可以水平向右,也可以向右下
到第i组要拐弯的时候,可以先水平向右或右下,再向左上或右上
拐完弯出去的时候,只能一直水平向左走
所以g[i]=g[i-1]+2^(i+1)
第x层的白色三角形有x-2组
推式子可以得到 g[x]=2^x - 4
再加上不走进去的一种方案,对于第x层的凹进去的白色三角形一共有2^x-4+1中方案
在第x层拐弯的时候,有4中方案,如上图中的粉色路径
所以f[x] = 4* π (2^k-3) k∈[3,x]
所以答案为
- #include<cstdio>
- using namespace std;
- const int mod=;
- int main()
- {
- int n;
- scanf("%d",&n);
- if(n==)
- {
- printf("");
- return ;
- }
- long long xigema=,pai=,pow=;
- int m=n/;
- for(int i=;i<=m;++i)
- {
- (pow*=)%=mod;
- (pai*=pow-+)%=mod;
- (xigema+=pai)%=mod;
- }
- xigema*=;
- xigema+=;
- xigema%=mod;
- (xigema*=xigema)%=mod;
- xigema++;
- (xigema*=)%=mod;
- printf("%I64d",xigema);
- }
Codeforces 15 E. Triangles的更多相关文章
- CodeForces - 13D :Triangles(向量法:问多少个蓝点三角形内部无红点)
Little Petya likes to draw. He drew N red and M blue points on the plane in such a way that no three ...
- 【codeforces 229C】Triangles
[题目链接]:http://codeforces.com/problemset/problem/229/C [题意] 给你一张完全图; 然后1个人从中选择m条边; 然后另外一个人从中选择剩余的n*(n ...
- Codeforces 553C Love Triangles(图论)
Solution: 比较好的图论的题. 要做这一题,首先要分析love关系和hate关系中,love关系具有传递性.更关键的一点,hate关系是不能成奇环的. 看到没有奇环很自然想到二分图的特性. 那 ...
- [CodeForces]CodeForces - 1025F Disjoint Triangles
题意: 给出平面上n个点,问能在其中选出6个点,组成两个三角形,使得其互不相交 问有多少种选法 大致思路 考虑枚举一条直线,将所有得点分为左右两部分,其中有两个点在直线上, 以这两个点为顶点,分别统 ...
- CodeForces 52B Right Triangles 矩阵上的计数
题目链接:点击打开链接 题意: 问有多少个与矩阵边平行的直角三角形.且三角形的3个顶点都是* 对于 L形 或者_| 形的三角形.我们仅仅须要知道在_ 上方有多少个*就可以,下底边则任取2个 所以用l[ ...
- Codeforces Gym 100015F Fighting for Triangles 状压DP
Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph ...
- Codeforces Educational Codeforces Round 15 C. Cellular Network
C. Cellular Network time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #309 (Div. 1) C. Love Triangles dfs
C. Love Triangles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/553/pro ...
- Codeforces Round #308 (Div. 2) D. Vanya and Triangles 水题
D. Vanya and Triangles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55 ...
随机推荐
- Linux: HowTo See Directory Tree Structure
https://www.cyberciti.biz/faq/linux-show-directory-structure-command-line/ Linux: HowTo See Director ...
- 记Git报错-refusing to merge unrelated histories
记Git报错-refusing to merge unrelated histories 系统:win7 git版本: 2.16.2.windows.1 问题 1.本地初始化了git仓库,放了一些 ...
- VSCODE安装以及使用Python运行调试代码的简单记录
1. VScode安装 官网下载VSCODE https://code.visualstudio.com/ 下载呢windows的x64安装包,安装stable的版本 当前日期 2018.01.15 ...
- CIO知识储备
1.IT安全和法规知识是CIO的首要 2.IT项目管理专业知识是CIO的必备 3.合作伙伴管理和供应商管理对成功也很关键 4.企业数据管理技能对CIO越来越重要 5.企业财务技能是CIO的一种必备 6 ...
- 网页性能优化之异步加载js文件
一个网页的有很多地方可以进行性能优化,比较常见的一种方式就是异步加载js脚本文件.在谈异步加载之前,先来看看浏览器加载js文件的原理. 浏览器加载 JavaScript 脚本,主要通过<scri ...
- BBS论坛项目
一.表结构设计: 1.帖子: class Article(models.Model): title = models.CharField(max_length=255,unique=True) cat ...
- MT【60】几个不常见的函数图像
此讲部分内容属于课外阅读拓展,学有余力的可以看看. [We need to know, and we will know.]----大卫·希尔伯特(1862-1943) $y=sin\frac{1}{ ...
- 【ZOJ2276】Lara Croft(bfs)
BUPT2017 wintertraining(16) #4 D ZOJ - 2276 题意 n个数字绕成环,有两个指示数字的方块,每次可以顺时针或逆时针移动其中一个,步数是它当前位置的数字a[i], ...
- WebSocket安卓客户端实现详解(三)–服务端主动通知
WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...
- BZOJ 4552 [Tjoi2016&Heoi2016]排序 | 二分答案 线段树
题目链接 题面 题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...