AtCoder Beginner Contest 122 D - We Like AGC(DP)
思路自西瓜and大佬博客:https://www.cnblogs.com/henry-1202/p/10590327.html#_label3
数据范围小 可直接dp
f[i][j][a][b] 表示 i位置上是j i-1上是a i-2上是b
状态转移是由i-1转移过来的,所以就必须还要一个i-3 所以就多加上一个循环
最主要就是转移过程中要枚举每种情况 然后排除掉
大佬的博客用了map和string简化了枚举的过程
不过他说只有六种情况 我布吉岛为啥只有六种 我写出了八种qaq
map<int, string> mp;
bool check(int a, int b, int c, int d) {
if (mp[a] + mp[b] + mp[c] == "AGC") return ;
if (mp[a] + mp[c] + mp[b] == "AGC") return ;
if (mp[a] + mp[b] + mp[d] == "AGC") return ;
if (mp[a] + mp[c] + mp[d] == "AGC") return ;
if (mp[b] + mp[a] + mp[c] == "AGC") return ;
if (mp[b] + mp[c] + mp[d] == "AGC") return ;
if (mp[b] + mp[d] + mp[c] == "AGC") return ;
if (mp[c] + mp[b] + mp[d] == "AGC") return ;
return ;
}
mp[0]='E'就是来处理刚开始未到3个字符时候的情况 不过枚举j也就是第i个位置的字符就从1开始了 所以之后的不会受到mp[0]的影响了
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
using namespace std; map<int, string> mp;
long long f[][][][];
const long long mod = 1e9 + ; bool check(int a, int b, int c, int d) {
if (mp[a] + mp[b] + mp[c] == "AGC") return ;
if (mp[a] + mp[c] + mp[b] == "AGC") return ;
if (mp[a] + mp[b] + mp[d] == "AGC") return ;
if (mp[a] + mp[c] + mp[d] == "AGC") return ;
if (mp[b] + mp[a] + mp[c] == "AGC") return ;
if (mp[b] + mp[c] + mp[d] == "AGC") return ;
if (mp[b] + mp[d] + mp[c] == "AGC") return ;
if (mp[c] + mp[b] + mp[d] == "AGC") return ;
return ;
} int main() {
int n;
scanf("%d", &n);
f[][][][] = ;
mp[] = 'E', mp[] = 'A', mp[] = 'C', mp[] = 'G', mp[] = 'T';
for (int i = ; i <= n; i++)
for (int j = ; j <= ; j++)
for (int a = ; a <= ; a++)
for (int b = ; b <= ; b++)
for (int l = ; l <= ; l++)
if (check(l, b, a, j))
f[i][j][a][b] = (f[i][j][a][b] + f[i-][a][b][l]) % mod;
long long ans = ;
for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++)
for (int k = ; k <= ; k++)
ans = (ans + f[n][i][j][k]) % mod;
printf("%lld\n", ans);
return ;
}
AtCoder Beginner Contest 122 D - We Like AGC(DP)的更多相关文章
- AtCoder Beginner Contest 122 D - We Like AGC (DP)
D - We Like AGC Time Limit: 2 sec / Memory Limit: 1024 MB Score : 400400 points Problem Statement Yo ...
- AtCoder Beginner Contest 122 解题报告
手速选手成功混进rated only里面的前30名,但是总排名就到110+了... A - Double Helix #include <bits/stdc++.h> #define ll ...
- AtCoder Beginner Contest 183 E - Queen on Grid (DP)
题意:有一个\(n\)x\(m\)的棋盘,你需要从\((1,1)\)走到\((n,m)\),每次可以向右,右下,下走任意个单位,\(.\)表示可以走,#表示一堵墙,不能通过,问从\((1,1)\)走\ ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
随机推荐
- 多线程(5)async&await
.net 4.0的Task已经让我们可以非常简单地使用多线程,并且可以有返回值,也可以支持线程的取消等操作,可谓已经很强大了.但.net 4.5为我们带来了async&await,使得实现多线 ...
- 面向对象的一小步:添加ActiveRecord的Scope功能
问题场景 我们用Yii2的ActiveRecord功能非常的方便,假如我们有个Model叫Student,那么ActiveQuery可以通过这种方式轻便地获得: $query = Student::f ...
- 设计模式之代理模式(Proxy)(2)
代理模式是为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,其特征是代理类与委托类有同样的接口. ...
- jsp内置对象-out对象
1.概念:隐含对象out是javax.servlet.jsp.JspWriter类的实例,是一个带缓冲的输出流,通过out对象实现服务器端向客户端输出字符串. 缓冲区的容量是可以设置的,甚至可以关闭, ...
- CTS问题分析6
遇到一个Android P相关的问题,和原来CTS/GTS 问题分析1的表现是一样的,但是将 这个修复cp过来,发现不生效,仍然报错,因此记录一下 问题初探 测试命令: run gts -m GtsG ...
- 01-vue学习之前的准备
一.具备的基础知识 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不 ...
- 会话固定攻击 - yxcms session固定漏洞
目录 会话固定攻击 e.g. yxcms session固定攻击 分析 了解更多 会话固定攻击 Session fixation attack(会话固定攻击)是利用服务器的session不变机制,借他 ...
- Python第六天 类型转换
Python第六天 类型转换 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Python第二天 变量 运算符与表达式 input()与raw_inp ...
- BCP SQL导出EXCEL常见问题及解决方法;数据导出存储过程
一.‘xp_cmdshell’的启用 SQL Server阻止了对组件‘xp_cmdshell’的过程‘sys.xp_cmdshell’的访问.因为此组件已作为此服务嚣安全配置的一部分而被关 闭.系统 ...
- SQLServer之索引简介
索引设计基础知识 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度. 索引包含由表或视图中的一列或多列生成的键. 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速 ...