【NOIP模拟】小迟的锦标赛

本文分析了锦标赛中通过调整比赛策略以最大化预期胜利轮数的问题。通过概率DP算法,证明了故意失败(放水)策略并不会提高最终成绩,展示了如何计算最优策略下的期望获胜次数。

题面

小迟最近去参加了一个锦标赛,这个锦标赛总共有 n 轮比赛,最终成绩由这 n 轮比赛中赢的轮数决定。由于小迟每轮比赛的胜利概率,则取决于他在该轮比赛之前的战绩。也就是说,如果小迟在第 i 轮比赛选择积极应战,并且前 i-1 轮比赛中取得了 j 胜的话,那么第 i 轮比赛的胜率概率为p[i][j],这里我们保证了一点就是对于同一个 i,p[i][j] 关于 j 的上升保持调不上升(也就是说 p[i][j]>p[i][j+1])。小迟观察到这个规则之后,想到了一个可能可以使他最终成绩更优的方法,就是在某些轮比赛采取第2种策略,故意求败,也就是以 100% 的概率输掉该轮比赛,从而使自己在后面能够遇到更容易对付的对手。
小迟现在已经看到了整个 p 数组,小迟希望你能告诉他一个最优的策略,使得他能最大化他的期望赢的轮数。

分析

其实放水只是个烟雾弹,小数据其实是在疯狂暗示你,放水一定不会更优。

拿2轮比赛举例子 假设p0是赢第1轮的概率,p1是赢第1轮后赢第2轮的概率,p2是没赢第一轮却赢第2轮的概率

不放水的期望:p0*p1*2+p0*(1-p1)+(1-p0)*p2=p0*(1+p1-p2)+p2

放第一轮的水的期望:p2

放第二轮的水的期望:p0

作差比较,一式减二式得 p0*(1+p1-p2)显然>=0  一式减三式得 p0*(p1-p2)+p2=p0*p1+p2*(1-p0) 显然>=0

所以无论怎么放水,都不会比不放水优秀

因此我们只需要做一个dp就好了,期望和概率都可以,这里是正着做就是概率dp

前i+1场中赢j+1场的概率+=前i+1场中赢j场的概率*本场赢的概率

前i+1场中赢j场的概率+=前i+1场中赢j场的概率*本场输的概率

最后算一下期望就好了

代码

#include<bits/stdc++.h>
using namespace std;
#define N 1010
#define db double
int n;
db ans,f[N][N],p[N][N];

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        for(int j=0;j<i;j++)
            scanf("%lf",&p[i][j]);
    f[0][0]=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<=i;j++)
        {
            f[i+1][j+1]+=f[i][j]*p[i+1][j];
            f[i+1][j]+=f[i][j]*(1-p[i+1][j]);
        }    
    for(int i=0;i<=n;i++)ans+=f[n][i]*i; 
    printf("%.2lf",ans);
    return 0;
}

     

 

转载于:https://www.cnblogs.com/NSD-email0820/p/9923636.html

源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的技术要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更加个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同时保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...
源码下载地址: https://pan.quark.cn/s/926926948560 AS3.0与XML结合的通用图片滚动功能,是一种基于ActionScript 3.0和XML技术的动态图像展示方案,非常适合初学者进行学习和实践应用。此项目的关键在于借助XML文件作为数据媒介,用来保存图像的相关参数,例如图像的链接地址、展示的次序等,接着在AS3.0环境中对XML进行解析,并动态地载入和展示这些图像,达成图像的滚动或是循环播放的目的。 我们需要明确ActionScript 3.0(AS3.0)是Adobe Flash Professional以及Flex Builder等开发工具中采用的编程语言,用于构建交互式内容以及丰富的互联网应用。相较于先前的版本,AS3.0在性能上有了大幅度的提升,并且引入了更为规范的面向对象编程模式,涵盖了类、接口以及包等概念。 XML(可扩展标记语言)是一种简明且高效的数据传输格式,既便于人类阅读和编写,也易于机器进行解析和生成。在该项目中,XML文件用于存储图像数据,例如图像的URL、延时的时长、动画的样式等,通过这种方式可以将数据与程序代码分离,从而增强代码的可维护性与可扩展程度。 实施这一图片滚动功能,主要涉及到以下AS3.0的核心知识点: 1. **XML解析**:运用`XML`类来载入并解析XML文件,从而获取图像的清单。AS3.0提供了简便的API来操作XML节点,例如`children()`、`attributes()`等,用以获取子节点和属性值。 2. **事件监听**:借助`EventDispatcher`类来监控载入和解析过程中的事件,比如`Event.OPEN`、`Event.PROGRESS`、`Event...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值