CodeForces Round #179 (296B) - Yaroslav and Two Strings
来源:互联网 发布:唐山盘古网络 编辑:程序博客网 时间:2024/06/09 22:08
直接求incomparable很复杂...反过来算..先算情况总数sum,和comparable的总数...sum-comparable=incomparable
求comparable用动态规划....dp[a][b] .....b为0代表0~a..上下关系为全等的方法数..
b为1代表0~a..上面的大于下面的方法数..
b为2代表0~a..上面的小于下面的方法数..
Program:
#include<iostream>#include<stdio.h>#include<string.h>#include<cmath>#include<algorithm>#define ll long long#define oo (ll)1000000007using namespace std; ll n,dp[2][3],sum;char s1[100005],s2[100005];int main(){ // freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); int i,k,x,p1,p2; scanf("%I64d%s%s",&n,&s1,&s2); memset(dp,0,sizeof(dp)); k=0; sum=1; dp[0][0]=1; // 0上下等 1上大下小 2上小下大 for (x=0;x<n;x++) { k=1-k; memset(dp[k],0,sizeof(dp[k])); if (s1[x]=='?') { if (s2[x]=='?') { sum=(sum*100)%oo; dp[k][0]=(dp[1-k][0]*10)%oo; dp[k][1]=(dp[1-k][0]*45+dp[1-k][1]*55)%oo; dp[k][2]=(dp[1-k][0]*45+dp[1-k][2]*55)%oo; }else { sum=(sum*10)%oo; p2=s2[x]-'0'; dp[k][0]=dp[1-k][0]; dp[k][2]=(dp[1-k][0]*p2+dp[1-k][2]*(p2+1))%oo; p2=9-p2; dp[k][1]=(dp[1-k][0]*p2+dp[1-k][1]*(p2+1))%oo; } }else if (s2[x]=='?') { sum=(sum*10)%oo; p1=s1[x]-'0'; dp[k][0]=dp[1-k][0]; dp[k][1]=(dp[1-k][0]*p1+dp[1-k][1]*(p1+1))%oo; p1=9-p1; dp[k][2]=(dp[1-k][0]*p1+dp[1-k][2]*(p1+1))%oo; } else { if (s1[x]==s2[x]) { dp[k][0]=dp[1-k][0]; dp[k][1]=dp[1-k][1]; dp[k][2]=dp[1-k][2]; }else if (s1[x]>s2[x]) dp[k][1]=(dp[1-k][0]+dp[1-k][1])%oo; else dp[k][2]=(dp[1-k][0]+dp[1-k][2])%oo; } } sum=(3*oo+sum-dp[k][0]-dp[k][1]-dp[k][2])%oo; printf("%I64d\n",sum); return 0;}
- CodeForces Round #179 (296B) - Yaroslav and Two Strings
- Codeforces Round #179 (Div. 2) B. Yaroslav and Two Strings
- Codeforces Round #179 (Div. 2) B (codeforces 296b) Yaroslav and Two Strings
- CodeForces 296B Yaroslav and Two Strings (容斥)
- Codeforces 296B Yaroslav and Two Strings dp+容斥(入门
- codeforces 301B. Yaroslav and Time
- Yaroslav and Time - CodeForces 301B Dijkstra
- CodeForces 301B Yaroslav and Time
- Codeforces Round #138 (Div. 1), problem: (B) Two Strings
- Codeforces Round #226 (Div. 2) B. Bear and Strings
- Codeforces Round #226 (Div. 2)B. Bear and Strings
- Codeforces Round #226 (Div. 2)B. Bear and Strings
- Mike and strings-codeforces-Round 410-Div2-B
- codeforces 223B Two strings
- codeforces-223B-Two Strings
- Codeforces Round #182 (Div. 1) D. Yaroslav and Divisors
- Codeforces Round #182 (Div. 1)D. Yaroslav and Divisors
- CodeForces 296A Yaroslav and Permutations
- 空间2点间的距离公式
- [Python—英文]Requests --有用的python模块
- HDU 1455 Sticks
- paip.C#.NET多线程访问 toolStripStatusLabel VC421
- Jsp : tag 文件操作数据库 (用户注册程序)
- CodeForces Round #179 (296B) - Yaroslav and Two Strings
- 用U盘装win 7操作系统 [李园7舍_404]
- 1.4.3---Arithmetic Progressions
- NeHe OpenGL教程(中英文版附带VC++源码)中英文系列
- uva 10730 - Antiarithmetic?
- 你不懂我,我不怪你 余秋雨
- 视频通话最新谍报
- Arctic Network
- 移植mjpg