题目链接 :http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1549

1549 上传说 
基准时间限制:1 秒 空间限制:131072 KB 分值: 160  难度:6级算法题

 收藏
 关注

B 君很喜欢玩炉石传说天梯模式,但是 B 君很菜。天梯模式规则是这样的。

首先有 25 个等级,最低 25 级,最高 1 级。你需要和别人进行天梯比赛来获得更多的星。
如果你胜利了,你会获得一颗星,如果你失败了,你会失去一颗星。当你当前的星大于一个指定的数目的时候,
你将升入下一等级(即等级减一),并且扣除这个数目的星,这个数目与当前等级有关。
其中 25 到 21 级需要 2 个星升级。20 到 16需要 3 个。15 到 10需要 4 个。10 到 1 需要 5 个。
特别的,如果在 1 级 5 星获胜,你将成为传说。当你当前为 0 星的时候,并且失去一颗星,你会退回到上一等级(即等级加一),并且获得升级所需要的星,然后失去那一颗星。当你当前的状态是 20 级 0 星或更低时,你的失败不会导致星的损失。
当你这局比赛和之前两局比赛均胜利时,且当前的等级不在 1 到 5 级之间时,你可以获得连胜奖励,额外的一颗星,这颗星对升级的影响和一般胜利的星一样。
B君打算从一共 x 星开始玩,B 君每一局的胜率是 p。B 君想知道自己期望上传说需要多少盘天梯比赛。
Input
第一行第一个整数 n 表示差多少颗星到传说(0 <= n <= 96),第二个实数,表示胜率 p。虽然 B 君很菜,但是因为他是抄卡组,所以保证 0.48 <= p <= 1。
Output
一行一个实数表示答案。
Input示例
96 0.5
Output示例
1384.704397366

岛娘出的题。。。

官方题解:

原问题等价于一共有 95 个星。
每次获胜一局可以得到一个星。
一共需要胜利 96 局。
我们用x[i][j]表示还差i局可以传说,当前连胜 j (0 <= j <= 2)
当 i 大于 85 时不会掉星。
当 i 小于等于 25 时不再有连胜。

然后列一个291元的方程解出来即可。

code:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>using namespace std;const int maxn = 3e2+10;
const double eps = 1e-9;
const double inf = 1<<29;
long double x[maxn][maxn];int code(int x,int y){return x*3+y+1;
}void display(int n){printf("\n-----------------\n");for(int i=1;i<=n;i++){for(int j=1;j<=n+1;j++) cout<<x[i][j]<<' ';cout<<endl;}printf("-----------------\n\n");
}int Guass(int n){
//  display(n);for(int i=1;i<=n;i++){int mr=i;for(int k=i;k<=n;k++){if(fabs(x[k][i])>fabs(x[mr][i])) mr=k;}if(mr!=i){for(int j=1;j<=n+1;j++) swap(x[i][j],x[mr][j]);}if(fabs(x[i][i])<eps) return 0;for(int j=n+1;j>=i;j--){for(int k=i+1;k<n;k++)x[k][j]-=x[k][i]/x[i][i]*x[i][j];}}for(int i=n;i>=1;i--){for(int j=i+1;j<=n;j++){x[i][n+1]-=x[i][j]*x[j][n+1];}x[i][n+1]/=x[i][i];}
//  display(n);return 1;
}int main(){
//    freopen("in.txt","r",stdin);int n;long double p;cin>>n>>p;int y = 292;memset(x,0,sizeof(x));x[code(0,0)][code(0,0)]=1;x[code(0,1)][code(0,1)]=1;x[code(0,2)][code(0,2)]=1;for(int i=1;i<=25;i++){for(int j=0;j<=2;j++){int c=code(i,j);x[c][c]=1;x[c][code(i-1,min(j+1,2))]-=p;x[c][code(i+1,0)]-=(1-p);x[c][y]=1;}}for(int i=26;i<=85;i++){for(int j=0;j<=2;j++){int c=code(i,j);x[c][c]=1;x[c][code(i+1,0)]-=(1-p);if(j==2) x[c][code(i-2,2)]-=p;else x[c][code(i-1,j+1)]-=p;x[c][y]=1;}}for(int i=86;i<=96;i++){for(int j=0;j<=2;j++){int c=code(i,j);x[c][c]=1;x[c][code(i,0)]-=(1-p);if(j==2) x[c][code(i-2,2)]-=p;else x[c][code(i-1,j+1)]-=p;x[c][y]=1;}}Guass(291);long double ans = x[code(n,0)][y];printf("%.12Lf\n",ans);return 0;
}

51nod 1549 上传说相关推荐

  1. 兵士不克不及怂就是干!美服龙战上传说--新浪炉石传说专区

    战士不克不及怂就是干!美服龙战上传说--新浪炉石传说专区 媒介 本文作者是hearthpwn的Trimmortal,他从天梯5级开始使用这套卡组,大略应用了一百局摆布的时光,打上了传说. 卡组分享   ...

  2. 阿古斯机器人_炉石传说动物园术士首上传说 强化机器人卡组详解

    分析目前的天梯环境,动物园术士还是比较容易上传说的.今天880小编给大家带来一套平民级别的动物园术士卡组,发现非常的好用.第一次尝试,就上了传说.卡组内容和对阵其他职业的打法880小编推荐给大家,一起 ...

  3. 炉石传说上传说需要的局数~Python日常~

    如果已知自己的胜率,那么从五级0星开始,到上传说大概需要多少局? 这次使用暴力的算法(尝试10000次计算,求平均值) 需要用到的基础知识: 最简单的随机数的产生方法: 需要import的库: imp ...

  4. 炉石传说投弹机器人怎么获得_炉石传说标准机械炸弹猎高胜率上传说卡组 打法思路一览...

    炉石传说标准机械炸弹猎高胜率上传说卡组 打法思路一览 2019-04-28 10:28:44来源:NGA/白银剑士编辑:野狐禅评论(0) <炉石传说>目前标准环境中机械炸弹猎表现不错,有玩 ...

  5. 5.23 人工智能 ——江湖上传说再起

    无名山谷的聪辩先生再次广邀天下武林豪杰齐聚谷中 这次却不是勘破珍珑棋局 在一块长满青苔的巨石边 盘坐着一个面无表情,纹丝不动的少年 他就是这次聚会的主角 一众豪杰都知这少年师承少林一脉 却不知具体师承 ...

  6. 为什么传说对决提示服务器未响应,传说对决连接不上伺服务器怎么回事 | 手游网游页游攻略大全...

    发布时间:2016-08-25 有玩家在玩时遇到了游戏无法连接服务器的问题,对此该怎么解决好呢?下面962乐游网小编就为你带来高玩分享的相关技巧心得攻略,希望大家能喜欢. 一.首先,检查网线或者WIF ...

  7. 51nod 1575 Gcd and Lcm

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1575 万年巨坑终于填掉了-- 首先是煞笔西瓜的做题历程O_O. ...

  8. 整活插件 炉石传说_炉石传说:国服再搞大动作?官方插件神秘新功能压力测试开启...

    一入酒馆深似海,从此萌新变大神.大家好,我是酒馆店小二!据说点了关注的炉友,天天都能开橙卡,月月都能上传说哦~ 今天小二从营地看到了一则比较新奇的新闻,是关于炉石传说官方插件的.据悉,<炉石传说 ...

  9. 【POJ】2676-Sudoku 【51Nod】1211-数独(DFS)

    [POJ]2676-Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25200 Accepted: 11782 Sp ...

最新文章

  1. 计算机书籍- 网络爬虫开发实战
  2. 网络推广外包——网络推广外包浅析那些年起步就结束的企业网站
  3. 【翻译】为什么 goroutine 的栈内存无穷大?
  4. 帕斯卡三角形html,Python实现的帕斯卡三角形
  5. python csdn博客_利用Python抓取CSDN博客
  6. 上传文件大小限制,webconfig和IIS配置大文件上传
  7. 牛客题霸 [扑克牌顺子] C++题解/答案
  8. 【linux】ubuntu下crontab无效解决方法
  9. 计算机桌面文件自动备份取消,电脑如何取消自动备份_电脑怎么取消自动备份...
  10. 什么水平才能任教清华计算机系?
  11. Mac 安装超级终端管理设备
  12. 卷积码编码器matlab,卷积码的编解码matlab仿真.doc
  13. Samsung 6818平台首次编译遇到的问题
  14. 你还在为不知道怎么给家人庆祝生日而发愁吗?
  15. vue项目获取浏览器地址栏参数方法 ?aaa=111bbb=222(非路由传参)
  16. classes是什么意思怎么读_class是什么意思_class怎么读_class翻译_用法_发音_词组_同反义词_班-新东方在线英语词典...
  17. C++高阶 常对象和常函数
  18. excel未保存强制关闭计算机,Excel文件未保存就关闭了,怎么恢复数据?
  19. java记事本的撤回_对于记事本,怎样恢复刚刚撤销的?
  20. 双循环是什么意思c语言,什么是双循环

热门文章

  1. java dom4j解析xml 对象_Java XML解析 - 利用DOM4j解析XML
  2. 抖音直播运营分析必备工具!千川投放提高付费流量转化ROI
  3. 1.20 LiteIDE搭建Go语言开发环境
  4. 熬夜30天总结了今年最新springboot计算机毕业设计选题
  5. js获取url上的query参数
  6. 荣耀“收复”华为失地
  7. 云计算技术在通信运营商的应用浅析
  8. Mac iOS 虚拟机VM 开开机后一段时间不用鼠标和键盘休眠的解决方法
  9. Gh0st通信协议解析
  10. 毕业设计(4):基于MicroPython的超声波倒车雷达系统