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的更多相关文章

  1. 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 ...

  2. 【codeforces 229C】Triangles

    [题目链接]:http://codeforces.com/problemset/problem/229/C [题意] 给你一张完全图; 然后1个人从中选择m条边; 然后另外一个人从中选择剩余的n*(n ...

  3. Codeforces 553C Love Triangles(图论)

    Solution: 比较好的图论的题. 要做这一题,首先要分析love关系和hate关系中,love关系具有传递性.更关键的一点,hate关系是不能成奇环的. 看到没有奇环很自然想到二分图的特性. 那 ...

  4. [CodeForces]CodeForces - 1025F Disjoint Triangles

    题意: 给出平面上n个点,问能在其中选出6个点,组成两个三角形,使得其互不相交 问有多少种选法 大致思路  考虑枚举一条直线,将所有得点分为左右两部分,其中有两个点在直线上, 以这两个点为顶点,分别统 ...

  5. CodeForces 52B Right Triangles 矩阵上的计数

    题目链接:点击打开链接 题意: 问有多少个与矩阵边平行的直角三角形.且三角形的3个顶点都是* 对于 L形 或者_| 形的三角形.我们仅仅须要知道在_ 上方有多少个*就可以,下底边则任取2个 所以用l[ ...

  6. Codeforces Gym 100015F Fighting for Triangles 状压DP

    Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. Laravel route ---- resoure

    Laravel 路由--资源路由 Route::resource('blog', 'BlogController'); 上面代码将等同于: Route::get('/blog', 'BlogContr ...

  2. TFS2018 连接 K8S集群的方法

    这一块自己没做测试,与平台樊娟娟沟通后,直接从history命令里面找到的相关命令,感谢原作者以及提供帮助的同事网友.如果有问题后续再改. 1. 在服务里面增加endpoint 见图 创建 连接名称随 ...

  3. ubuntu更改分辨率

    1. 输入:$cvt 1920 1080 2 输入: $xrandr 3 输入: $sudo xrandr --newmode "1920x1080_60.00" 173.00 1 ...

  4. 转《trackingjs人脸检测》

    tracking.js是一个开源(BSD协议)的计算机视觉插件,在不同的浏览器中有不同的计算机视觉算法和技术,通过使用现代HTML5规范,能够实现实时颜色跟踪.人脸检测等功能,界面直观.核心文件轻量. ...

  5. jquery添加刪除

    創建元素的方法:jquery.javascript/dom,html/text var txt1="<p>Text.</p>";               ...

  6. 为Bootstrap模态对话框添加拖拽移动功能

    请自行下载使用到的Bootstrap库及jQuery库 <!DOCTYPE html> <html> <head lang="en"> < ...

  7. 简单易懂的博弈论讲解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)

    博弈论入门: 巴什博弈: 两个顶尖聪明的人在玩游戏,有一堆$n$个石子,每次每个人能取$[1,m]$个石子,不能拿的人输,请问先手与后手谁必败? 我们分类讨论一下这个问题: 当$n\le m$时,这时 ...

  8. linux screen 命令 :离线运行程序

    screen工具是linux下虚拟终端的一个常用工具.在 发现这个工具之前,笔者经常在远程ssh中运行需要长时间处理数据的命令,比如远程编译安装软件,如果在编译的过程中网络断开,那这个编译进程就会停止 ...

  9. 【转】IAR IDE for MSP430、8051、ARM等平台的结合使用

    IAR IDE for MSP430.8051.ARM等平台的结合使用 以前很长一段时间使用IAR作为MSP430的开发平台,前几天一个无线监控的项目用到了Zigbee(CC2530),于是开始使用I ...

  10. 洛谷 P2057 [SHOI2007]善意的投票 解题报告

    P2057 [SHOI2007]善意的投票 题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照 ...