Codeforces Round 113 (Div. 2)E. Tetrahedron(dp、递推)
题面

链接
题意
从一个顶点出发走过路径长度为n回到出发点的方案总数
题解
考虑dp
\(f[i][0|1|2|3]\):走了i步,现在在j点的方案总数
转移:
\(f[i][0]=f[i-1][1]+f[i-1][2]+f[i-1][3]\)
\(f[i][1]=f[i-1][0]+f[i-1][2]+f[i-1][3]\)
\(f[i][2]=f[i-1][0]+f[i-1][1]+f[i-1][3]\)
\(f[i][3]=f[i-1][0]+f[i-1][1]+f[i-1][2]\)
代码
#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back
using namespace std;
const int mod=1e9+7;
int dp[3][5];
void solve()
{
int n;
cin>>n;
dp[0][0]=1;
rep(i,1,n){
int u=i&1,v=(i-1)&1;
dp[u][0]=(dp[v][1]+dp[v][2]+dp[v][3])%mod;
dp[u][1]=(dp[v][0]+dp[v][2]+dp[v][3])%mod;
dp[u][2]=(dp[v][0]+dp[v][1]+dp[v][3])%mod;
dp[u][3]=(dp[v][0]+dp[v][1]+dp[v][2])%mod;
}
cout<<dp[n&1][0]<<endl;
}
signed main(){
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
// freopen("1.in", "r", stdin);
int _;
// cin>>_;
// while(_--)
solve();
return 0;
}
总结
一定要开long long,容易忘直接\(define long long int\)
爆空间开滚动数组优化。
Codeforces Round 113 (Div. 2)E. Tetrahedron(dp、递推)的更多相关文章
- Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)
We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we all kn ...
- Codeforces Round #113 (Div. 2)
Codeforces Round #113 (Div. 2) B. Polygons 题意 给一个\(N(N \le 10^5)\)个点的凸包 \(M(M \le 2 \cdot 10^4)\)次询问 ...
- Codeforces Round #533 (Div. 2) C.思维dp D. 多源BFS
题目链接:https://codeforces.com/contest/1105 C. Ayoub and Lost Array 题目大意:一个长度为n的数组,数组的元素都在[L,R]之间,并且数组全 ...
- Tetrahedron(Codeforces Round #113 (Div. 2) + 打表找规律 + dp计数)
题目链接: https://codeforces.com/contest/166/problem/E 题目: 题意: 给你一个三菱锥,初始时你在D点,然后你每次可以往相邻的顶点移动,问你第n步回到D点 ...
- Codeforces Round #113 (Div. 2) Tetrahedron(滚动DP)
Tetrahedron time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- Codeforces Round #131 (Div. 1) B. Numbers dp
题目链接: http://codeforces.com/problemset/problem/213/B B. Numbers time limit per test 2 secondsmemory ...
- Codeforces Round #131 (Div. 2) B. Hometask dp
题目链接: http://codeforces.com/problemset/problem/214/B Hometask time limit per test:2 secondsmemory li ...
- Codeforces Round #276 (Div. 1) D. Kindergarten dp
D. Kindergarten Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/proble ...
- Codeforces Round #260 (Div. 1) A - Boredom DP
A. Boredom Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/problem/A ...
- Codeforces Round #539 (Div. 2) 异或 + dp
https://codeforces.com/contest/1113/problem/C 题意 一个n个数字的数组a[],求有多少对l,r满足\(sum[l,mid]=sum[mid+1,r]\), ...
随机推荐
- c++基础之函数
距离上次更新又过了一周,又该更新新的读书笔记了.本次更新的主要是c++中函数部分的内容 c++ 中的函数与c语言中的函数大致用法或者语法是一样的,这里就不就这点详细展开了.需要注意的是c/c++中并没 ...
- Elasticsearch实战:常见错误及详细解决方案
Elasticsearch实战:常见错误及详细解决方案 1.read_only_allow_delete":"true" 当我们在向某个索引添加一条数据的时候,可能(极少 ...
- 机器学习算法(四): 基于支持向量机的分类预测(SVM)
机器学习算法(四): 基于支持向量机的分类预测 本项目链接:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1.相关流程 支 ...
- 2.4 Windows驱动开发:内核字符串拷贝与比较
在上一篇文章<内核字符串转换方法>中简单介绍了内核是如何使用字符串以及字符串之间的转换方法,本章将继续探索字符串的拷贝与比较,与应用层不同内核字符串拷贝与比较也需要使用内核专用的API函数 ...
- MySQL 索引与性能调优
索引用于快速找出在某个列中有一特定值的行,如果不使用索引MySQL必须从第l条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,MySQL能快速到达某 ...
- iOS 屏幕旋转的设置方法
VC上屏幕旋转的方式有2种 1.因重力导致的屏幕旋转 条件:shouldAutorotate返回true,设备开启了屏幕旋转开关. 设备发生重力旋转. 2.单页面强制旋转 条件:无. 设置设备旋转方向 ...
- .NET桌面程序如何设置任务栏图标右键菜单中的名称
右键任务栏中应用程序图标时会显示程序名称,例如: 这里显示的并不是程序文件名DingTalk,而是文件属性中详细信息选显卡下的"文件说明". 在.NET桌面程序中,是通过修改程序集 ...
- spring-cloud 配置管理
作用: 实现配置热更新 实现网关配置热部署 配置模板 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc ...
- ADG备库中某个PDB缺失temp文件
之前认为缺失的temp文件在开库时会自动创建,但其实也有不能自动创建的场景,alert会有类似如下提示: 2023-05-11T20:35:35.974983+08:00 AWR(6):******* ...
- Ubuntu20.04下的ESP8266环境
硬件说明 ESP8266使用的是3.3V供电, 和Arduino不一样, ESP8266的I/O脚是不能防5V的, 连上就烧. 其输出只有12mA, 而Arduino是20-40mA. ESP8266 ...