AtCoder Regular Contest 059 F Unhappy Hacking
2018-07-15 10:55
507 查看
Description
题面
Solution
我们发现如果一个位置需要被退掉,那么是 \(0\) 或 \(1\) 都没有关系于是我们想到把 \(0,1\) 归为一类
问题转化为每一次可以添加和删除一个 \(?\),求 \(n\) 次操作后最后长度变为 \(|S|\) 的方案数
我们最后可以把 \(?\) 对应成 \(S\),只需要把方案数除以一个 \(2^{|S|}\) 就行了
#include<bits/stdc++.h> using namespace std; const int N=5005,mod=1e9+7; int n,f ,m;char s ; int main(){ freopen("pp.in","r",stdin); freopen("pp.out","w",stdout); scanf("%d%s",&n,s+1);m=strlen(s+1); f[0][0]=1; for(int i=0;i<n;i++) for(int j=0;j<=i;j++){ if(j)f[i+1][j-1]=(f[i+1][j-1]+f[i][j])%mod; else f[i+1][j]=(f[i+1][j]+f[i][j])%mod; f[i+1][j+1]=(f[i+1][j+1]+1ll*f[i][j]*2)%mod; } for(int i=1;i<=m;i++)f [m]=1ll*f [m]*500000004%mod; printf("%d\n",f [m]); return 0; }
相关文章推荐
- AtCoder Regular Contest 075 E - Meaningful Mean(树状数组)
- AtCoder Regular Contest 078 C
- AtCoder Regular Contest 090
- AtCoder Regular Contest 079-C - Cat Snuke and a Voyage
- AtCoder Regular Contest 080 F - Prime Flip 线性筛+匈牙利算法
- AtCoder Regular Contest 077 E - guruguru 二阶差分
- [AtCoder Regular Contest 077] F: SS (arc077F)
- 【AtCoder Regular Contest 092】D - Two Sequences(按位统计,归并)
- 【杂题】[AtCoder Regular Contest 092 E]Both Sides Merger
- AtCoder Regular Contest 093 D - Grid Components
- Atcoder Regular Contest 081 总结
- AtCoder Regular Contest 081 E - Don't Be a Subsequence(字符串DP)
- AtCoder Regular Contest 073 D - Simple Knapsack(贪心)
- AtCoder Regular Contest 074 瞎打记
- AtCoder Regular Contest 078 D
- AtCoder Regular Contest 089
- AtCoder Regular Contest 090 D People on a Line【dfs + bfs】
- AtCoder Regular Contest 089 C - Traveling
- Atcoder Regular Contest 089D Checker
- AtCoder Regular Contest 074 E - RGB Sequence 动态规划