【BZOJ4832】抵制克苏恩(矩阵快速幂,动态规划)

题面

BZOJ

题解

一模一样

#include<iostream>
#include<cstdio>
using namespace std;
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int m,K,n;
int bh[9][9][9],tot,lim[5];
double P[6][170][170];
double tmp[170],Ans[170];
void dfs(int a,int b,int c)
{
if(a>lim[1]||b>lim[2]||c>lim[3])return;
if(bh[a][b][c]||a+b+c>K)return;
bh[a][b][c]=++tot;
dfs(a+1,b,c);dfs(a,b+1,c);dfs(a,b,c+1);
}
void Plus(int &A,int &B,int &C){if(m==1)++A;if(m==2)++B;if(m==3)++C;}
void pre()
{
for(int a=0;a<=K&&a<=lim[1];++a)
for(int b=0;a+b<=K&&b<=lim[2];++b)
for(int c=0;a+b+c<=K&&c<=lim[3];++c)
{
int s=a+b+c+1,p=bh[a][b][c];
P[0][p][tot+1]+=1.0/s;P[0][p][p]+=1.0/s;
if(a)P[0][p][bh[a-1][b][c]]+=1.0*a/s;
if(b)
{
int A=a+1,B=b-1,C=c;if(s<=K)Plus(A,B,C);
P[0][p][bh[A][B][C]]+=1.0*b/s;
}
if(c)
{
int A=a,B=b+1,C=c-1;if(s<=K)Plus(A,B,C);
P[0][p][bh[A][B][C]]+=1.0*c/s;
}
}
P[0][tot+1][tot+1]+=1;
for(int p=1;p<=5;++p)
for(int i=1;i<=tot+1;++i)
for(int k=1;k<=tot+1;++k)
for(int j=1;j<=tot+1;++j)
P[p][i][j]+=P[p-1][i][k]*P[p-1][k][j];
}
int main()
{
int T=read();m=3;K=7;
for(int i=1;i<=m;++i)lim[i]=K;
dfs(0,0,0);pre();
while(T--)
{
n=read();int A=read(),B=read(),C=read(),p=0;
for(int i=1;i<=tot+1;++i)Ans[i]=0;Ans[bh[A][B][C]]=1;
while(n)
{
if(n&1)
{
for(int i=1;i<=tot+1;++i)tmp[i]=Ans[i],Ans[i]=0;
for(int k=1;k<=tot+1;++k)
for(int j=1;j<=tot+1;++j)
Ans[j]+=tmp[k]*P[p][k][j];
}
++p;n>>=1;
}
printf("%.2lf\n",Ans[tot+1]);
}
return 0;
}

最新文章

  1. 用&quot;hosting.json&quot;配置ASP.NET Core站点的Hosting环境
  2. 数据集转换为Json
  3. Jquery-下拉列表设置默认选择
  4. 9.12 其他样式;JS
  5. svn Error: post-commit hook failed (exit code 127) with output
  6. HTML5,CSS3 与 Javascript 制作视频播放器
  7. nginx处理静态资源的配置
  8. swift 关于delegate
  9. AndroidManifest:VersionCode和VersionName
  10. 企业证书APP发布流程 分类: ios相关 app相关 2015-06-10 11:01 212人阅读 评论(0) 收藏
  11. 在代码中控制UI界面
  12. Diary of Codeforces Round #402 (Div. 2)
  13. JAVA多线程---volatile关键字
  14. openvpn部署之快速入门实战+一键部署openvpn脚本
  15. Http系列笔记
  16. python列表的切片操作允许索引超出范围
  17. 浅谈jQuery的promise
  18. Uva LA 3177 - Beijing Guards 贪心,特例分析,判断器+二分,记录区间内状态数目来染色 难度: 3
  19. 巧用foxmail同步qq邮箱的通讯录
  20. 如何在LSI MegaRAID BIOS里设定RAID 10与Hot Spare

热门文章

  1. 05Hadoop 概论
  2. PhpStorm的注册激活方法
  3. Vector源码分析
  4. ShowDoc上手
  5. centOS 7下无法启动网络(service network start)错误解决办法
  6. Hadoop2.0 Namenode HA实现方案
  7. spring-01
  8. 使用Guava cache构建本地缓存
  9. JS--bom对象:borswer object model浏览器对象模型
  10. C-LODOP设置同一页面 手机电脑都打印