3689 浮云
来源:互联网 发布:mysql怎么优化sql语句 编辑:程序博客网 时间:2024/04/30 10:04
赛后a题都是浮云,就是不明白,之前怎么就连这么简单的题都不敢写。这种dp有什么,建个状态转移图不久ok了,什么时候我才不悲剧!!!!!!!!!!!
#include <iostream>
#include <cstring>
using namespace std;
struct Node{
int next[26];
double p;
} node[10];
struct Char_pro{
char c;
double p;
} cp[26];
char word[11];
int n,m,len;
inline bool ok(int s1,int s2,int a){
if(word[s1--]!=char('a'+a)) return false;
for(; s1>=0; --s1,--s2){
if(word[s1]!=word[s2])
return false;
}
return true;
}
void build_ac(){
for(int i=0; i<len; ++i){
for(int j=0; j<26; ++j){
for(int k=i; k>=0; --k){
if(ok(k,i-1,j)){
node[i].next[j]=k+1;
break;
}
}
}
}
}
int main(){
char tmp;
while(scanf("%d %d",&n,&m)){
scanf("%c",&tmp);
if(n==0&&m==0){
break;
}
memset(node,0,sizeof(node));
for(int i=0; i<n; ++i){
scanf("%c %lf/n",&cp[i].c,&cp[i].p);
}
scanf("%s",word);
// printf("%s/n",word);
len=strlen(word);
build_ac();
node[0].p=1.0;
double tmpp[10];
double ans=0.0;
for(int i=0; i<m; ++i){
memset(tmpp,0,sizeof(tmpp));
for(int j=0; j<n; ++j){
for(int k=0; k<len; ++k){
if(node[k].next[cp[j].c-'a']==len) ans+=node[k].p*cp[j].p;
tmpp[node[k].next[cp[j].c-'a']]+=node[k].p*cp[j].p;
}
}
for(int k=0; k<len; ++k){
node[k].p=tmpp[k];
}
}
printf("%.2lf%%/n",ans*100);
fflush(stdout);
}
}
- 3689 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 浮云
- 所谓浮云
- 统统浮云
- 关于浮云
- Clouds 飘忽的浮云
- 浮云与羔羊
- 神马都是浮云~~~
- awWebBrowser自动选择网页Select元素
- 使用JDK中的Proxy技术实现AOP功能
- 运动的小企鹅[思路 过程说明.]完成...
- hql处理count sum 产生别名的错误
- sturts2 输出标签
- 3689 浮云
- 真无聊啊
- 行列转换通用过程
- 有些东西从看的明到看的有感觉了,层次可能就不一样了。
- javaWEB项目session值为空
- CPUFREQ驱动使用方法说明
- http://acm.hdu.edu.cn/showproblem.php?pid=1709
- Java异常的奇怪问题
- 基于V4L2的视频驱动开发(2)