我定义的状态数组存的是概率,而且是正推

达哥存的是期望,还逆推,然后我就懵比了

$f_{i,j,k}$ 第i关 j条命 连胜k次

$$f_{i+1,min(j+1,Q),min(k+1,R)}+=f_{i,j,k}*p$$

$$f_{i+1,j-1,0}+=f{i,j,k}*(1.0-p)$$

$$ans=\sum_{i=1}^n\sum_{j=0}^Q\sum_{k=1}^R f_{i,j,k}*j$$

然后暴力dp会了,考虑矩阵乘优化

首先两维压成一维

剪枝:

1.命数!=Q&&命数<连胜数 就不用压

然后还可以再加一个位置,用来存期望

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <cmath>
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define rint register int
#define dd double
#define esp 0.0000001
using namespace std;
inline void read(int &x)
{x=0; char q=getchar();while(q<'0'||q>'9') q=getchar();while(q>='0'&&q<='9') x=x*10+q-'0',q=getchar();
}int n,R,Q,S;
dd f[2][7][10006];dd dp(dd p)
{rint i,j,k; int nx,t1,t2,now=0;dd ans=0;for(j=0;j<7;++j)for(k=0;k<10006;++k)f[1][j][k]=0;f[1][Q][0]=1;for(i=0;i<n;++i){now^=1; nx=now^1;for(j=0;j<=Q;++j)for(k=0;k<=R;++k)f[nx][j][k]=0;for(j=1;j<=Q;++j)for(k=0;k<=R;++k){t1=j+1; if(t1>Q) t1=Q;t2=k+1; if(t2>R) t2=R;f[nx][t1][t2]+=f[now][j][k]*p;f[nx][j-1][0]+=f[now][j][k]*(1.0-p);}for(j=0;j<=Q;++j)for(k=0;k<=R;++k)ans=ans+f[nx][j][k]*k;}return ans;
}dd work()
{dd l=0,r=1,mid;while(l<r-esp){mid=(l+r)/2.0;if(dp(mid)>=S) r=mid;else l=mid;}return l;
}int main(){//freopen("in.in","r",stdin);
    read(n); read(R); read(Q); read(S);//printf("%lf",dp(1));printf("%lf",work());
}

bao_li

#pragma GCC optimize("O3")
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <cmath>
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define rint register int
#define dd double
#define esp 0.00000001
using namespace std;
inline void read(int &x)
{x=0; char q=getchar();while(q<'0'||q>'9') q=getchar();while(q>='0'&&q<='9') x=x*10+q-'0',q=getchar();
}
inline void readll(ll &x)
{x=0; char q=getchar();while(q<'0'||q>'9') q=getchar();while(q>='0'&&q<='9') x=x*10+q-'0',q=getchar();
}int all,dui[10][31];
struct QTQ
{dd b[155][155];void clear(){mem(b,0);}void out(){printf("\n");for(int i=1;i<=all;++i){for(int j=1;j<=all;++j)printf("%lf ",b[i][j]);printf("\n");}printf("\n");}QTQ operator * (const QTQ &c) const{QTQ x=*this,t; rint i,j,k;for(i=1;i<=all;++i)for(j=1;j<=all;++j){t.b[i][j]=0;for(k=1;k<=all;++k)t.b[i][j]+=x.b[i][k]*c.b[k][j];}return t;}
}f,a,a1,a2;int n,R,Q;
ll S;dd dp(dd p)
{rint i,j;f.clear(); a1.clear(); a2.clear();for(i=1;i<=Q;++i)for(j=0;j<=R;++j)if(i>=j||i==Q){a1.b[dui[i][j]][dui[min(i+1,Q)][min(j+1,R)]]=p;a1.b[dui[i][j]][dui[i-1][0]]=(1.0-p);}a1.b[all][all]=1;for(i=0;i<=Q;++i)for(j=0;j<=R;++j)if(i>=j||i==Q)a2.b[dui[i][j]][all]=j;for(i=1;i<=all;++i) a2.b[i][i]=1;a=a1*a2;f.b[1][dui[Q][0]]=1;int ci=n;while(ci){if(ci&1)f=f*a;a=a*a;ci>>=1;}return f.b[1][all];
}dd work()
{dd l=0,r=1,mid;while(l<r-esp){mid=(l+r)/2.0;if(dp(mid)>=S) r=mid;else l=mid;}return l;
}int main(){//freopen("in.in","r",stdin);//freopen("out.out","w",stdout);//freopen("nt2012_contra.in","r",stdin);//freopen("nt2012_contra.out","w",stdout);
    rint i,j;read(n); read(R); read(Q); readll(S);all=0;for(i=0;i<=Q;++i)for(j=0;j<=R;++j)if(i>=j||i==Q)dui[i][j]=++all;++all;if(dp(1.0)<=S)// ... 必须是<=,不然第一个点...
    {printf("Impossible.\n");return 0;}printf("%lf",work());
}

ju_zhen_you_hua

转载于:https://www.cnblogs.com/A-LEAF/p/7725895.html

bzoj_2676_Contra相关推荐

最新文章

  1. Science:英国Castrillo组揭示微生物群与根内皮的协调支持植物营养平衡!
  2. 正则表达式调用“或”变量
  3. Node.js 极简笔记
  4. arcgis 栅格数据 邻域计算_ArCGIS中DEM地形鞍部提取
  5. 获取对象属性(key)
  6. html5离线储存不足,html5的离线存储问题
  7. [USACO08DEC]拍头Patting Heads 数学 BZOJ 1607
  8. 最新linux 5,Linux 5.5 正式发布
  9. 抓包工具tcpdump和tshark
  10. java中的引用,你注意到没?
  11. python 的库如何开发_Python开发者必备6个基本库
  12. IT技术支持必备知识
  13. 51,AVR,PIC,MSP430,STM32单片机比较
  14. 关于DCMM评估模型的全面解析
  15. CS5532 C51驱动程序
  16. 用IAR调试芯唐Cortex-M0系列芯片指南
  17. ASP 五年总结精华源码
  18. 【未完成】【甄选靶场】Vulnhub百个项目渗透——项目四十一:DEFCON Toronto-Galahad(图像深层分析,流量分析)
  19. Self-attention GAN
  20. 关于动漫的HTML网页设计:期末前端web大作业——海贼王基地(6个页面)

热门文章

  1. 重学React基础知识整理(二)
  2. 51Nod 圆与三角形
  3. Chapter 1.伦敦的歌剧魅影 ——《地与光》
  4. 处理ERP的EXCEL报表数字长度超15位导致精度丢失的问题
  5. 解决 redis 存入中文,取出来是乱码wenti
  6. 武侠小说阅读记录 2009-02-18 21:14
  7. 想拿互联网大厂的前端offer, 除了技术,你还差什么?
  8. android收集备忘录恢复工具,备忘录不小心删了怎么恢复?专业恢复工具分享
  9. ipad越狱后怎么还原?
  10. d va爬黑板animate_部编版四年级语文上册第17课爬天都峰微课视频|MP3朗读|同步练习...