[JoyOI1519] 博彩游戏
题目限制
| 时间限制 | 内存限制 | 评测方式 | 题目来源 |
| 1000ms | 131072KiB | 标准比较器 | Local |
题目背景
Bob最近迷上了一个博彩游戏……
题目描述
这个游戏的规则是这样的:
每花一块钱可以得到一个随机数R,花上N块钱就可以得到一个随机序列;
有M个序列,如果某个序列是产生的随机序列的子串,那么就中奖了,否则不中。
Bob会告诉你这M个序列,和身上有的钱的总数N,当然还有R的范围。
请你告诉Bob中奖的概率有多少?
输入格式
第一行三个用空格隔开的数N、M和R的范围R。
其中1<=R<=9,0<N<=60,0<M<=20000。
下面M行每行一个字符串(长度小于等于20),字符串的每一位范围在1-r之间
保证必要运算都在64位整型范围内。
输出格式
一行一个实数,表示中奖的概率(保留小数点后5位小数)。
提示
数据分布:
第1个点~第10个点,每个点5分;
第11个点~第15个点,每个点10分。
对于样例的解释:
随机序列一共有3^5=243个,其中包含"1"的个数为211个,则概率为211/243=0.86831Bob HAN
样例数据
| 输入样例 #1 | 输出样例 #1 |
|---|---|
5 1 3 1 |
0.86831 |
和Bzoj1030基本一样。
先对所有串建一个AC自动机。
然后设$f[i][j]$为写的长度为i,正在自动机的第j个节点的方案数。
设总方案数是$all$,那么答案就是(all - 不在末尾节点的方案数)/all。
记得上传结束标记,有结束标记的点不往外转移。
#include <bits/stdc++.h>
using namespace std;
#define reg register
#define int long long
#define N 400005
int n, m, r;
int nxt[N][], fail[N], end[N];
int tot;
int f[][N];
int all = , ans;
char s[]; inline void Ins()
{
int len = strlen(s);
int now = ;
for (reg int i = ; i < len ; i ++)
now = nxt[now][s[i]-''] ? nxt[now][s[i]-''] : nxt[now][s[i]-''] = ++tot;
end[now] = ;
}
inline void AC_Match()
{
queue <int> q;
for (reg int i = ; i <= ; i ++)
if (nxt[][i]) q.push(nxt[][i]);
while(!q.empty())
{
int x = q.front();q.pop();
for (reg int i = ; i <= r ; i ++)
{
if (nxt[x][i]) fail[nxt[x][i]] = nxt[fail[x]][i], q.push(nxt[x][i]);
else nxt[x][i] = nxt[fail[x]][i];
}
end[x] |= end[fail[x]];
}
} signed main()
{
scanf("%lld%lld%lld", &n, &m, &r);
for (reg int i = ; i <= m ; i ++)
{
scanf("%s", s);
Ins();
}
AC_Match();
f[][] = ;
for (reg int i = ; i < n ; i ++)
for (reg int x = ; x <= tot ; x ++)
{
if (end[x] or !f[i][x]) continue;
for (reg int j = ; j <= r ; j ++)
f[i + ][nxt[x][j]] += f[i][x];
}
for (reg int i = ; i <= n ; i ++) all *= r;
for (reg int i = ; i <= tot ; i ++)
if (!end[i]) ans += f[n][i];
printf("%.5lf\n", (double)(all - ans) / (double)all);
return ;
}
[JoyOI1519] 博彩游戏的更多相关文章
- tyvj1519博彩游戏
博彩游戏 From admin 背景 Background Bob最近迷上了一个博彩游戏…… 描述 Description 这个游戏的规则是这样的:每花一块钱可以得到一个随机数R,花上N块钱就可以得到 ...
- tyvj P1519 博彩游戏(AC自动机+DP滚动数组)
P1519 博彩游戏 背景 Bob最近迷上了一个博彩游戏…… 描述 这个游戏的规则是这样的:每花一块钱可以得到一个随机数R,花上N块钱就可以得到一个随机序列:有M个序列,如果某个序列是产生的随机序列的 ...
- 博彩游戏(tyvj 1519)
背景 Bob最近迷上了一个博彩游戏…… 描述 这个游戏的规则是这样的:每花一块钱可以得到一个随机数R,花上N块钱就可以得到一个随机序列:有M个序列,如果某个序列是产生的随机序列的子串,那么就中奖了,否 ...
- [TyvjP1519] 博彩游戏(AC自动机 + DP)
传送门 和bzoj1030一个德性 #include <queue> #include <cstdio> #include <cstring> #define N ...
- EOS博彩合约设计
集中博彩游戏合约设计 一.功能接口 1. 质押deposit 由用户发起,用户将个人账户中token质押给平台,从而可以进入平台去参与平台活动. 2. 赎回withdraw 由用户发起,在用户结束平台 ...
- h5博彩webapp项目实例|h5棋牌游戏|h5博彩app案例
html5实现的博彩webapp.h5棋牌app实例,运用h5+css3+zepto+jQ+swiper+layer等技术进行布控开发,750px最大宽度适配手机端设备,采用flex+rem布局样式. ...
- cocos 水果机,老Tiger虎机流水灯,博彩大转盘效果
原(http://www.cnblogs.com/zisou/p/cocos2d-xZhuanpan.html) 博彩大转盘,转盘抽奖的小系统,这是一个很有意思的游戏模块,游戏中增加这样一些趣味的小模 ...
- 【cocos2d-x 手游研发----博彩大转盘】
博彩大转盘,转盘抽奖的小系统,这是一个很有意思的游戏模块,游戏中增加这样一些趣味的小模块,我会附上源码: 会增进玩家的粘性,每天都想来抽两把试试手气: 我做的这个是个矩形风格的转盘,不是那种圆形的转盘 ...
- 大型博彩公司招聘 .net,DB,tester,android
大型博彩公司招聘 .net,DB,tester,android,ios等. 等拿完年终奖的朋友,可以先发简历给我,先面试,年后上班. emai:sjchen1203@126.com 要求: 1. 全职 ...
随机推荐
- 基于Arduino和Blynk平台的远程控制智能小车
/------转载请附上本文链接 https://i.cnblogs.com/EditArticles.aspx?opt=1 -------啦啦啦我是快乐的分割线- ------------/ 小车图 ...
- Java第三次作业第四题
4. [问题描述]读取一个文本文件in.txt,然后将这个文件的内容,反序写到另一个文件out.txt中. [输入形式]从文件in.txt中读信息. [输出形式]反序内容写入out.txt文件中. [ ...
- OAuth2.0 RFC 6749 中文
英文原版:https://tools.ietf.org/html/rfc6749 转自:https://github.com/jeansfish/RFC6749.zh-cn 一.简介 在传统的客户端- ...
- Docker Gitlab CI 部署 Spring Boot 项目
目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...
- [Code] 烧脑之算法模型
把博客的算法过一遍,我的天呐多得很,爱咋咋地! 未来可考虑下博弈算法. 基本的编程陷阱:[c++] 面试题之犄角旮旯 第壹章[有必要添加Python] 基本的算法思想:[Algorithm] 面试题之 ...
- Java优化策略小积累
1.尽量避免大量使用静态变量 package com.cfang.jvm; public class Test2 { private static Test1 test1 = new Test1(); ...
- 暑期——第四周总结(Ubuntu系统安装新版eclipse双击无法打开问题 【已解决】)
所花时间:7天 代码行:200(python)+3000(java) 博客量:1篇 了解到知识点 : Ubuntu安装新eclipse 在通过软件中心安装好eclipse之后,发现各种东西都不顺眼,不 ...
- 序列标注(HMM/CRF)
目录 简介 隐马尔可夫模型(HMM) 条件随机场(CRF) 马尔可夫随机场 条件随机场 条件随机场的特征函数 CRF与HMM的对比 维特比算法(Viterbi) 简介 序列标注(Sequence Ta ...
- ThinkPHP框架快速开发网站
使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助 ...
- WebGL简易教程(九):综合实例:地形的绘制
目录 1. 概述 2. 实例 2.1. TerrainViewer.html 2.2. TerrainViewer.js 3. 结果 4. 参考 1. 概述 在上一篇教程<WebGL简易教程(八 ...