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 ...
随机推荐
- lumen或者laravel安装指定版本
方法一 安装器安装:缺点不能安装指定版本 composer global require "laravel/lumen-installer" lumen new blog comp ...
- Mordern Effective C++ --auto
5. 优先使用auto而非显示类型声明 在C++之中,使用auto关键字声明类型可以将程序员从输入繁琐的类型中解放出来,编译器会自动推导出变量的实际类型. template<typename I ...
- hive 远程管理
- Centos7安装Splash
前言 最近在用Scrapy抓取一个网站数据,其中有个页面需要执行js脚本才能加载,所以需要用到Splash. 官网地址:https://splash.readthedocs.io/en/stable/ ...
- Chrome disable cache & clear memory cache
Chrome disable cache & clear memory cache disable cache
- maven编译的时候跳过test
方式1:用命令带上参数 mvn install -Dmaven.test.skip=true 方式2:在pom.xml里面配置 <plugin> <groupId>org.ap ...
- 睡前小dp-poj1276-多重背包+二进制优化
http://poj.org/problem?id=1276 简单的多重背包,不过需要优化一下才能过.网上还有暴力的做法. 二进制优化在背包九讲里讲的比较清楚.对于多重背包的每一件物品,使用二进制的形 ...
- day5 模拟购物车程序
#__author__: Administrator #__date__: 2018/7/11 print(''' ======本公司退出以下产品======= 1.bicycle---------- ...
- python3实现感知器,简单神经网络
三个输入,四个输出,四组数据 对numpy和矩阵运算还不是太熟悉,可能写的复杂了点,矩阵数组来回转换 代码请查看码云 运行结果片段
- Leetcode 268.缺失数字 By Python
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2 ...