Codeforces 404D [DP]
/*
我是一个习惯后悔,但是没办法忍受内疚感的二货== 这题是个无脑dp,但是比赛大概20min没出...其实最后5min我好好想想简单化边界条件,可以出的。
题意:
给你一个长度为1e6的由?*01四种字符组成的字符串,类似扫雷,?代表当前不确定,0代表当前无雷,并且
两边无雷,1代表当前五雷且两边有一个雷,2同样的,问当所有格子已知以后一共有多少种可能的局面。
思路:
首先想到的是,这个问题无后效性,而当前位置的合法方式只与它之前的两位有关。
所以dp的思路也是显而易见的,即dp[i][j]代表前i个最后两位的情况是j的时候的方案数。
其实最后两位的一共16种组合合法的方式只有9种。 注意:
也是我比赛被坑的地方,处理边界条件。
首先对于最后的两位是有要求的,例如最后一位不可能是2...(还有其他的情况),答案即把最后两位合法的情况加起来。
然后dp一开始的第一位该如何办...
我比赛的时候想暴力写前两位的情况,然后dp后来发现这么写代码量...然后崩了....
然后刚想了想,其实我枚举第一位所有可能的情况就好。
因为合法的9种情况中有许多是等价的,我只需在其中选择一项使得dp[1][i]=1即可 ...
然后WA6...因为最后累加答案的时候忘记取模了...傻逼错误简直了== */ #include<bits/stdc++.h>
#define N 1000050
using namespace std;
long long dp[N][];
long long mod=1e9+;
char jilu[N];
inline void z(int a,int b,int i){
dp[i][a]+=dp[i-][b];
dp[i][a]%=mod;
}
long long ans=;
void ggg(int len)
{
for(int i=;i<=len;i++){
if(jilu[i]=='?'){
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
}
else if(jilu[i]==''){
z(,,i);
z(,,i);
z(,,i);
}
else if(jilu[i]==''){
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
}
else if(jilu[i]==''){
z(,,i);
z(,,i);
z(,,i);
}
else{
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
}
}
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
}
int main()
{
scanf("%s",jilu+);
int len=strlen(jilu+);
if(len<){
if(jilu[]==''||jilu[]==''){
cout << <<endl;
}
else if(jilu[]=='?'){
cout << <<endl;
}
else{
cout << <<endl;
}
return ;
}
switch (jilu[]){
case '?':
dp[][]=;
dp[][]=;
dp[][]=;
break;
case '':
dp[][]=;
break;
case '':
dp[][]=;
break;
case '*':
dp[][]=;
}
ggg(len);
cout << ans <<endl;
}
Codeforces 404D [DP]的更多相关文章
- CodeForces 404D Minesweeper 1D (DP)
题意:给定一个序列,*表示雷,1表示它旁边有一个雷,2表示它旁边有两个雷,0表示旁边没有雷,?表示未知,求有多少情况. 析:dp[i][j] 表示第 i 个放 j 状态,有多少种情况,然后很简单的DP ...
- codeforces的dp专题
1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...
- Two Melodies CodeForces - 813D (DP,技巧)
https://codeforces.com/problemset/problem/813/D dp[i][j] = 一条链以i结尾, 另一条链以j结尾的最大值 关键要保证转移时两条链不能相交 #in ...
- Consecutive Subsequence CodeForces - 977F(dp)
Consecutive Subsequence CodeForces - 977F 题目大意:输出一序列中的最大的连续数列的长度和与其对应的下标(连续是指 7 8 9这样的数列) 解题思路: 状态:把 ...
- 【codeforces 404D】Minesweeper 1D
[题目链接]:http://codeforces.com/problemset/problem/404/D [题意] 让你玩一个1维的扫雷游戏; 游戏的描述由数字0..2以及符号*表示; 分别表示这个 ...
- Codeforces 721C [dp][拓扑排序]
/* 题意:给你一个有向无环图.给一个限定t. 问从1点到n点,在不超过t的情况下,最多可以拜访几个点. 保证至少有一条路时限不超过t. 思路: 1.由无后向性我们可以知道(取决于该图是一个DAG), ...
- CodeForces 607C (DP) Hard problem
题目:这里 题意:给定n个字符串,每个字符串可以进行一项操作,就是将这个字符串交换,就是该字符串的第一个和最后一个交换,第二个和倒数第二个交换,以此类推,当然可以选择对于 该字符串进行或不进行这项操作 ...
- Codeforces 611d [DP][字符串]
/* 题意:给一个长度不超过5000的字符串,每个字符都是0到9的数字. 要求将整个字符串划分成严格递增的几个数字,并且不允许前导零. 思路: 1.很开心得发现,当我在前i个区间以后再加一个区间的时候 ...
- Codeforces 119C DP
题意: 有n天,m门课和常数k; 每天上一门课,每门课程有两个属性,最少作业量a,最多作业量b,和难度c. 1<=a<=b<=1e16 c<=100 1<=n<=m ...
随机推荐
- ajax同步,异步
传输数据 同步:第一条传过去,对方接收到反馈以后,再传第二条; 异步:第一条传过去,不管对方有没有收到,继续传第二条. ajax(默认异步 async:true) 同步:执行完ajax内部代码,才执行 ...
- 试用fastJSON
实体类 User.java package com.test.fastjson.entity; import java.util.Date; public class User { private L ...
- IOS开发-视频,音频,录音简单总结
/***** * 1. 视频播放 * * @格式:mp4 mov m4v m2v 3gp 3g2 * * @系统框架使用:#import <MediaPlayer/MediaPlayer.h ...
- SSH_框架整合2—查询显示
4. 完成功能. (1)com.atguigu.ssh.actions包下新建EmployeeAction.java package com.atguigu.ssh.actions; import j ...
- Linux From Scratch [2]
1. gcc需要的一些lib GMP:A free library for arbitrary precision arithmetic, operating on signed integers, ...
- Mysql分区技术
注:分区的语法可以看手册中有详细的写法和例子: show plugins; 此命令查看可有partition这个选项,有则mysql支持分区,没有的话,就可以升级一下mysql 实时监控一个命令执行情 ...
- (C/C++) Interview in English - Basic concepts.
Question Key words Anwser A assignment operator abstract class It is a class that has one or more pu ...
- git(5) windows下 pycharm + git(github) ,在本地方便管理
本篇博客讲解一下,windows下如何在pycharm下使用git(使用github设置和git一样),在本地进行commit,push,pull等操作 优点:简单,方便 pycharm版本:5.0. ...
- html_
============= 博客大全: 脚本之家:http://www.jb51.net/list/list_233_104.htm 红黑联盟: http://www.2cto.com/kf/yid ...
- 关于Switch结构利用
三大流程结构,循环.分支.if ,循环与条件选择结构用的比较多,而swicth用的比较少,swicth可以用if代替,只不过麻烦,最终都能实现输入和输出的条件对应 Swicth利用 ...