精华内容
下载资源
问答
  • 传送门 题目背景 原 维护队列 参见P1903 ...有nn次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续aa个combo就有a\times aa×a分,combo就是极大的连续o。 比如ooxxxxooooxxx,分数就是2 \times ...

    传送门

    题目背景

    原 维护队列 参见P1903

    题目描述

    某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(

    我们来简化一下这个游戏的规则

    nn次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续aa个combo就有a\times aa×a分,combo就是极大的连续o

    比如ooxxxxooooxxx,分数就是2 \times 2 + 4 \times 4 = 4 +16=202×2+4×4=4+16=20。

    Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是o要么是x,有些地方o或者x各有50%的可能性,用?号来表示。

    比如oo?xx就是一个可能的输入。 那么WJMZBMR这场osu的期望得分是多少呢?

    比如oo?xx的话,?o的话就是oooxx => 9,是x的话就是ooxxx => 4

    期望自然就是(4+9)/2 =6.5(4+9)/2=6.5了

    输入输出格式

    输入格式:

     

    第一行一个整数nn,表示点击的个数

    接下来一个字符串,每个字符都是o,x,?中的一个

     

    输出格式:

     

    一行一个浮点数表示答案

    四舍五入到小数点后44位

    如果害怕精度跪建议用long double或者extended

     

    输入输出样例

    输入样例#1: 复制
    4
    ????
    输出样例#1: 复制
    4.1250

    说明

    osu很好玩的哦

    WJMZBMR技术还行(雾),x基本上很少呢

     

    --------------------------------------------------------------

    很基础的期望的题

    只要熟练掌握了dp

    就没问题了

    然而

    唉.......

    ----------------------------------------------------------------

    -------------------------------------------------------------------------

    #include<cstdio>
    #include<iostream>
    using namespace std;
    double f[1000000],g[10000000];
    int main()
    {
        int n;
        char s[1000000],ch;
        scanf("%d",&n);
        cin>>s;
        for(int i=0;i<n;++i)
        {
            ch = s[i];
            if(ch == 'x')
            {
                f[i] = f[i - 1];
                g[i] = 0;
            }
            else
            if(ch == 'o') 
            {
                f[i] = f[i - 1] + 2 * g[i - 1] + 1;
                g[i] = g[i - 1] + 1;
            } 
            else
            {
                f[i] = f[i - 1] + g[i - 1] + 0.5;
                g[i] = g[i - 1]/2 + 0.5; 
            }        
        }
        printf("%.4lf\n",f[n-1]);
        return 0;
    }

    本来

    我写的scanf

    于是毫无疑问的wa了

    我还一脸懵

    后来才发现

    循环出现了很大的问题

    然而

    在我发现循环有问题之前

    我曾一度坚定不移的怀疑是不是自己的滚动数组写错了

    唉,太傻了太傻了

    循环输入字符串中的单个字符不能用scanf!!!!!

    用cin

    在循环一个个字符!!!!!!!

     

    转载于:https://www.cnblogs.com/darlingroot/p/10365009.html

    展开全文
  • P1365 WJMZBMR打osu! / Easy

    2018-07-29 08:56:00
    一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 nnn 次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续 aaa 个combo就有 a×aa\times aa×a 分,...

    题目背景

    原 维护队列 参见P1903

    题目描述

    某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(

    我们来简化一下这个游戏的规则

    nnn 次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续 aaa 个combo就有 a×aa\times aa×a 分,combo就是极大的连续o

    比如ooxxxxooooxxx,分数就是 2×2+4×4=4+16=202 \times 2 + 4 \times 4 = 4 +16=202×2+4×4=4+16=20 。

    Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是o要么是x,有些地方o或者x各有50%的可能性,用?号来表示。

    比如oo?xx就是一个可能的输入。 那么WJMZBMR这场osu的期望得分是多少呢?

    比如oo?xx的话,?o的话就是oooxx => 9,是x的话就是ooxxx => 4

    期望自然就是 (4+9)/2=6.5(4+9)/2 =6.5(4+9)/2=6.5 了

    输入输出格式

    输入格式:

    第一行一个整数 nnn ,表示点击的个数

    接下来一个字符串,每个字符都是o,x,?中的一个

    输出格式:

    一行一个浮点数表示答案

    四舍五入到小数点后 444 位

    如果害怕精度跪建议用long double或者extended

    输入输出样例

    输入样例#1: 
    4
    ????
    输出样例#1: 
    4.1250

    说明

    osu很好玩的哦

    WJMZBMR技术还行(雾),x基本上很少呢

     

    Solution:

      期望题总是贼有意思。

      本题期望combo为$o$的期望连续长度的平方,所以我们设$f[i]$表示到了第$i$位的总期望combo,$g[i]$表示到了第$i$位结尾的连续$o$的期望长度,那么分情况讨论:

      1、当$s[i]==x$,则$f[i]=f[i-1],g[i]=0$;

      2、当$s[i]==o$,则$f[i]=f[i-1]+2*g[i-1]+1,g[i]=g[i-1]+1$($f[i]=f[i-1]+2*g[i-1]+1$是因为$f[i]=(g[i-1]+1)^2=g[i-1]^2+2*g[i-1]+1\;,\;g[i-1]^2=f[i-1]$);

      3、当$s[i]==?$,则$f[i]=f[i-1]+g[i-1]+0.5,g[i]=\frac{g[i-1]+1}{2}$;

      由于不知道$n$的范围,不好开数组,但是我们发现转移时当前的状态只与上一次的状态有关,于是直接滚掉就好了。

    代码:

     

    #include<bits/stdc++.h>
    #define il inline
    #define ll long long
    #define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
    #define Bor(i,a,b) for(int (i)=(b);(i)>=(a);(i)--)
    using namespace std;
    int n,cnt;
    char s;
    double f[2],g[2];
    
    int main(){
        ios::sync_with_stdio(0);
        cin>>n;
        For(i,1,n){
            cin>>s;
            if(s=='x') f[cnt^1]=f[cnt],g[cnt^1]=0;
            else if(s=='o') f[cnt^1]=f[cnt]+2*g[cnt]+1,g[cnt^1]=g[cnt]+1;
            else f[cnt^1]=f[cnt]+g[cnt]+0.5,g[cnt^1]=g[cnt]/2+0.5;
            cnt^=1;
        }
        printf("%.4lf",f[cnt]);
        return 0;
    }

     

     

     

     

    转载于:https://www.cnblogs.com/five20/p/9384250.html

    展开全文
  • 一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续aaa个combo就有a×aa\times aa×a分,combo...

    题目背景

    原 维护队列 参见P1903

    题目描述

    某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(

    我们来简化一下这个游戏的规则

    nnn次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续aaa个combo就有a×aa\times aa×a分,combo就是极大的连续o

    比如ooxxxxooooxxx,分数就是2×2+4×4=4+16=202 \times 2 + 4 \times 4 = 4 +16=202×2+4×4=4+16=20。

    Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是o要么是x,有些地方o或者x各有50%的可能性,用?号来表示。

    比如oo?xx就是一个可能的输入。 那么WJMZBMR这场osu的期望得分是多少呢?

    比如oo?xx的话,?o的话就是oooxx => 9,是x的话就是ooxxx => 4

    期望自然就是(4+9)/2=6.5(4+9)/2 =6.5(4+9)/2=6.5了

    输入输出格式

    输入格式:

    第一行一个整数nnn,表示点击的个数

    接下来一个字符串,每个字符都是o,x,?中的一个

    输出格式:

    一行一个浮点数表示答案

    四舍五入到小数点后444位

    如果害怕精度跪建议用long double或者extended

    输入输出样例

    输入样例#1: 复制
    4
    ????
    输出样例#1: 复制
    4.1250

    说明

    osu很好玩的哦

    WJMZBMR技术还行(雾),x基本上很少呢

    题解

    这个题有点意思。

    dp[i]代表到第i个位置总权值的期望。

    f[i]代表到第i个位置连续的o的长度。

    然后转移的时候分情况:

    s[i]=='x'

    dp[i]=dp[i-1];f[i]=0;

    s[i]=='o'

    dp[i]=(g[i-1]+1)^2=g[i-1]^2+2*g[i-1]+1=f[i-1]+2*g[i-1]+1;

    f[i]=f[i-1]+1;

    s[i]=='?'

    dp[i]=0.5*(f[i-1]+2*g[i-1]+1)+0.5*f[i-1];

    f[i]=(g[i-1]+1)*0.5+0*0.5;

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 using namespace std;
     7 const int N=300101;
     8 int n;
     9 char s[N];
    10 double dp[N],f[N];
    11 int main(){
    12     scanf("%d",&n);
    13     scanf("%s",s+1);
    14     for(int i=1;i<=n;i++){
    15         if(s[i]=='?'){
    16             f[i]=(f[i-1]+1.0)/2.0;
    17             dp[i]=dp[i-1]+0.5+f[i-1];
    18         }
    19         if(s[i]=='o'){
    20             f[i]=f[i-1]+1.0;
    21             dp[i]=dp[i-1]+2.0*f[i-1]+1.0;
    22         }
    23         if(s[i]=='x'){
    24             dp[i]=dp[i-1];
    25             f[i]=0.0;
    26         }
    27     }
    28     printf("%.4lf",dp[n]);
    29     return 0;
    30 }

     

    转载于:https://www.cnblogs.com/Xu-daxia/p/9606920.html

    展开全文
  • 3450: Tyvj1952 Easy

    2019-01-31 15:08:55
    一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是ooo,失败了就是xxx,分数是按comb计算的,连续aaa个comb就有a∗aa*aa∗a分,comb就是极大...

    题意:

    某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(
    我们来简化一下这个游戏的规则
    nn次点击要做,成功了就是oo,失败了就是xx,分数是按comb计算的,连续aa个comb就有aaa*a分,comb就是极大的连续oo
    比如ooxxxxooooxxxooxxxxooooxxx,分数就是22+44=4+16=202*2+4*4=4+16=20
    Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是oo要么是xx,有些地方oo或者xx各有5050%的可能性,用??号来表示。
    比如oo?xxoo?xx就是一个可能的输入。
    那么WJMZBMR这场osu的期望得分是多少呢?
    比如oo?xxoo?xx的话,??oo的话就是oooxx => 9,是x的话就是ooxxx => 4
    期望自然就是(4+9)/2 =6.5了

    题解:

    将平方差分(x+1)2x2=2x+1(x+1)^2-x^2=2x+1
    那么就将平方转化成加法,维护当前连续期望oo的个数即可。
    code:

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    using namespace std;
    double ans=0.0,p=0.0;
    int n;
    char s[300010];
    int main()
    {
    	scanf("%d",&n);scanf("%s",s+1);
    	for(int i=1;i<=n;i++)
    	{
    		if(s[i]=='x') p=0.0;
    		if(s[i]=='o') ans+=2*p+1,p=p+1;
    		if(s[i]=='?') ans+=p+0.5,p=(p+1)/2;
    	}
    	printf("%.4lf",ans);
    }
    
    展开全文
  • [BZOJ3450/TYVJ1952]Easy

    2019-09-26 00:04:32
    一天WJMZBMR在打osu\(\sim\sim\sim\)但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有aa分,comb就是极大的...
  • 一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有aa分,comb就是极大的连续o。 比如...
  • bzoj3450 Tyvj1952 Easy

    2018-03-21 17:29:00
    一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有aa分,comb就是极大的连续o。 比如...
  • 题意大致是求个字符串中不相交的重复子串的总数,思想大致是穷尽每个长度i(最长是字符的一半),再看每个height数组中的值是否大于i,注意连续时表示是同一字符串,比如,aaaa,当i为1时,就有height[2]=1;...
  • CodeChef BINOMSUM

    2017-11-25 15:26:53
    链接:link题意:有TT,每天有KK个小时,第ii有D+i−1D+i-1道菜,第个小时你选择LL道菜吃,接下来每个小时你可以选择吃一道菜或者选择AA个活动中的个参加,不能连续两个小时吃菜,问每天的方案数之和。...
  • 一天大的成年雄鸡(罗斯308号)随机分配到48只钢笔,使用6只鸟/笔(实验1)或7只鸟/笔(实验2、3),并且实验包括一个对照组饮食(n = 12)和四种实验饮食(n = 9)。 实验1在碱性和高级氨基酸强化(AA)以满足...
  • 进行了两次连续的肉类鸡生长试验(Ross 308),以便根据羽毛和无羽毛的实验数据来定量雄性和雌性鸟类全身蛋白质中年龄依赖性氨基酸(AA)含量人体蛋白质部分。 在开始阶段(第1至22)和成长期(第22至36),在...
  • hdu1664 Different Digits

    2016-02-06 22:17:53
    因为将只由a∣0组成的十进制数升序排序,对于模nn一定会产生个循环节,而将任意两个模nn同余的数相减,就可以得到只由aa及00组成的nn的倍数。 这题让我想起了前几同学给我看的一道水题(Poj2551),这题提到...
  • 学用结合 依法治企 促进企业生产经营的不断发展 我们哈尔滨气化厂是个以生产城市煤气和化工产品为主的国有大i型煤化工企业,自93年7月建成投产以来,已连续不断地向哈市供应城市煤气4000多,创造了高寒地区安全...
  • arcgis工具

    2012-10-22 22:37:31
    通过栅格重分类操作可以将连续栅格数据转换为离散栅格数据 19. Eliminate合并破碎多边形 以下的操作将会把面积小于10000 平方米的多边形合并到周围与之有最长公共 边的多边形中: 执行菜单命令[选择]>>[通过属性...
  • java 正则表达式

    2011-06-26 18:01:16
    验证个月的31:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用:计算字符串的长度(...
  • NetDB远程数据库支持库[NetDB] 3.2 {AA33B6EE-E3DD-4387-A61A-FFE9285439A6} Bin:服务端目录下面有三个文件 HPSocket4C.dll、SkinH.dll、sqlite3.dll、 NetDB.dll Bin:客户端目录下面有两个文件 HPSocket4C....
  • 前缀数组后缀数组

    2020-11-16 11:12:30
    连续的周赛,双周赛都用到了,记录一下。 1653. 使字符串平衡的最少删除次数 给你个字符串 s ,它仅包含字符 ‘a’ 和 'b’​​​​ 。 你可以删除 s 中任意数目的字符,使得 s 平衡 。我们称 s 平衡的 当不...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

一天连续aa