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. ntpdate[31915]: the NTP socket is in use, exiting

    [root@master local]# ntpdate cn.pool.ntp.org 10 Oct 13:24:36 ntpdate[31915]: the NTP socket is in us ...

  2. codeforces580C

    Kefa and Park CodeForces - 580C 一棵以1为根的树,树上有些点是红的.一个叶子是合法的当且仅当从根到它的路径上出现的连续红点个数不超过m.求有多少个叶子是合法的.Inpu ...

  3. SpringCloud基础篇AOP之拦截优先级详解

    前面两篇分别介绍了AOP的基本使用姿势和一些高级特性,当时还遗留了一个问题没有说明,即不同的advice,拦截同一个目标方法时,优先级是怎样的,本篇博文将进行详细分析 同一个切面中,不同类型的advi ...

  4. Hdoj 1064 Financial Management

    题目描述 Problem Description Larry graduated this year and finally has a job. He's making a lot of money ...

  5. 【BZOJ2281】[SDOI2011]黑白棋(博弈论,动态规划)

    [BZOJ2281][SDOI2011]黑白棋(博弈论,动态规划) 题面 BZOJ 洛谷 题解 先看懂这题目在干什么. 首先BZOJ上面的题面没有图,换到洛谷看题就有图了. 不难发现都相邻的两个异色棋 ...

  6. bzoj2989&&4170数列——二进制分组+主席树

    题意的转化挺巧妙的 可以联想到曼哈顿距离! 并且,所谓的修改还要查询历史版本,并且修改之间不动只算一次,不就是给平面上加一个点吗? 看成(x,a[x])的点 就是一个菱形区域 转切比雪夫距离,变成矩形 ...

  7. A1048. Find Coins

    Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ...

  8. 【洛谷P5020】货币系统 完全背包

    题目大意:给定 N 个数,求在这 N 个数中至少选出几个数能表示出所有数字,输出最少的个数. 题解:由于只有小的数字可以表示大的数字,因此首先需要对这 N 个数字进行从小到大排序.排序之后就变成一道不 ...

  9. 【模板】spfa

    代码如下 #include <bits/stdc++.h> using namespace std; const int maxv=1e4+10; const int maxe=5e5+1 ...

  10. typescript函数(笔记非干货)

    函数类型 Function Type 为函数定义类型 Define types for functions 我们可以给每个参数添加类型之后再为函数本身添加返回值类型. TypeScript能够根据返回 ...