CF908D 【New Year and Arbitrary Arrangement】
蒟蒻渣渣禹小心翼翼发布题解。。。。
这道题,嗯,期望,dp,好,我们有思路了。。。。
however,
主要问题在于字符串无限延伸,so,我们需要考虑记录前缀的关键量来为DP设置终止状态。
我们不妨设f[i][j]表示前缀中有i个a和j个ab停止后的期望长度,设 A = pa / (pa + pb),B = pb / (pa + pb)。这样推方程就容易很多。
状态转移方程:f[i][j] = A * f[i + 1][j] + B * f[i][i + j]
接下来只用解决两个问题:
1.终止状态:
当i+j>=k时,再加一个b就会终止,期望为i+j+c,其中:
c=0B+1AB+2A^2B+...+∞A^∞*B
这是等差×等比数列,运用高中数学的错位相减法(特别的,A^∞=0),可以得到:
c=pa/pb
故有终止状态f[i][j]=i+j+pa/pb,i+j>=k。
2.初始状态:
初始空字符串为f[0][0],但是会发现f[0][0]会从f[0][0]本身转移。
其原因是没有a时会无限加b,解决办法是初始状态设为f[1][0]。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#define LL long long
const int m = 1e9 + 7,N = 1005;
void gcd(int a,int b,int&x,int &y){
if(!b){
x = 1;
y = 0;
}
else{
gcd(b,a % b,y,x);
y -= x * (a / b);
}
}
int inv(int a){
int x,y;
gcd(a,m,x,y);
return (x % m + m) % m;
}
LL f[N][N],k,pa,pb,A,B,C;
int main(){
scanf("%d %d %d",&k,&pa,&pb);
A = (pa * inv(pa + pb) % m);
B = (1 - A + m) % m;
C = (pa * inv(pb) % m);
for(int i = k;i >= 1;i--)
for(int j = k;j >= 0;j--)
f[i][j] = i + j >= k ? (i + j + C) % m : (A * f[i + 1][j] + B * f[i][i + j]) % m;
printf("%d",f[1][0]);
return 0;
}
CF908D 【New Year and Arbitrary Arrangement】的更多相关文章
- 【CodeForces】908 D. New Year and Arbitrary Arrangement
[题目]Good Bye 2017 D. New Year and Arbitrary Arrangement [题意]给定正整数k,pa,pb,初始有空字符串,每次有pa/(pa+pb)的可能在字符 ...
- 【小梅哥FPGA进阶教程】MC8051软核在FPGA上的使用
十.MC8051软核在FPGA上的使用 本教程内容力求以详细的步骤和讲解让读者以最快的方式学会 MC8051 IP core 的应用以及相关设计软件的使用,并激起读者对 SOPC 技术的兴趣.本实验重 ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 【Python五篇慢慢弹】数据结构看python
数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...
- 【十大经典数据挖掘算法】PageRank
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 我特地把PageRank作为[十大经 ...
- 【十大经典数据挖掘算法】EM
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 极大似然 极大似然(Maxim ...
- 【十大经典数据挖掘算法】AdaBoost
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 集成学习 集成学习(ensem ...
- 【十大经典数据挖掘算法】SVM
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART SVM(Support Vector ...
- 【ASP.NET程序员福利】打造一款人见人爱的ORM(二)
上一篇我已经给大家介绍AntORM的框架[ASP.NET程序员福利]打造一款人见人爱的ORM(一),今天就来着重介绍一下如何使用这套框架 1>AntORM 所有成员 如果你只想操作一种数据库,可 ...
随机推荐
- 每天进步一点点------Allegro 布线时显示延迟以及相对延迟信息
PROPAGATION_DELAYPROPAGATION_DELAY这个设定主要用来对Net绝对长度的设定,如要求设定一组Net的长度要在Min Mil到 Max Mil之间的话,就可以用这种设定来完 ...
- 画图软件gliffy
网上的资源真是海量丫: https://segmentfault.com/q/1010000000310976 gliffy软件在线网址:https://chrome.google.com/webst ...
- MySQL 避免使用字符串类型作为标识列
避免使用字符串类型作为标识列: 消耗空间. 比数字类型慢(MyISAM 中对字符串使用压缩索引,查询会慢). 对于 MD5().UUID() 生成的随机字符串,这些值会分布在很大的空间内,导致 ins ...
- Qt QQuickView设置成无边框无标题栏
#include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQuickView> ...
- 本地mongodb数据库导出到远程数据库中
把本地Mongodb中的数据导入(批量插入)到服务器的数据库中 1.导出数据: mongoexport -d admin -c users -o outdatafile.dat 选项解释: -d 指明 ...
- 最大m段子段和 Day9 - E - Max Sum Plus Plus HDU - 1024
Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we ...
- 三大查找算法(Java实现)
三大查找算法 1.二分查找(Binary Search) public class BinarySearch { public static void main(String[] args) { in ...
- uni-app 去除顶部导航栏
自学uni-app第一天,因为有一点点的小程序和vue的基础所以感觉对uni-app有一点点的亲切感,从今天呢开始着手从登录页学习uni-app,记录一些用到的知识点,欢迎大家一起学习. 启动页隐藏顶 ...
- Django框架之图书管理系统(二)
该篇文章介绍多对多的关系介绍 一.数据库设计 一个作者对应多个书籍 一个书籍对应多个作者 总结也就是多对多之间的关系 通过模型类创建多对多之间的关系表的时候,Django框架通过ORM创建三个表,分别 ...
- Spring Boot框架 - 数据访问 - JDBC&自动配置
一.新建Spring Boot 工程 特殊勾选数据库相关两个依赖 Mysql Driver — 数据库驱动 Spring Data JDBC 二.配置文件application.properties ...