第五届院赛1433 - 云顶之弈

6 篇文章 0 订阅

1433 - 云顶之弈
小狼近日沉迷于云顶之弈无法自拔,在这里面攒金币是很有学问的事,其中金币来源有以下几点 :

1、利息
如果你有一定数量的存款没花,上回合结束时,你每剩下101010金币,下回合开始时,就会额外获得111金币,最多555金币。所以如果你在这回合结束前有50金币,下回合开始时就能得到5金币的利息

2、每回合固定增长
第一回合222金币,第二回合333金币,第三、四回合444金币,第五回合以后都是555金币,这是固定的自然工资,在每回合开始时发放。

3、连胜,连败
当你连胜或连败一定次数,在下回合中你都会额外获得金币,场数越高额外金币越多(连胜或连败场次为23场时为111金币,46场时为222金币,7场以上为333金币。)

4、胜利
每次胜利,在回合结束时,都会获得111金币。

从第一回合开始,给出接下来nnn回合的胜利失败状态(111代表胜利,000代表失败),问nnn个回合之后小狼会有多少金币呢?
输入

每组输入的第一行为一个数字nnn,(2≤n≤1052\le n\le 10^52≤n≤105),接下来一行有n个数,每一个数字是111或000(111代表胜利,000代表失败)
输出

仅有一行输出,代表答案
样例
输入
复制

4
0 0 1 1

输出
复制

17

提示

样例中四个回合中的金币获得情况如下(按顺序获得金币):

第一个回合中:+0(利息),+0(之前无连胜连败),+2(工资),+0(失败)
第一回合结束时有2金币
第二个回合中:+0(利息),+0(之前仅一场失败),+3(工资),+0(失败)
第二回合结束时有5金币
第三个回合中:+0(利息),+1(之前有两场连败),+4(工资),+1(胜利)
第三个回合结束时有11金币
第四个回合中:+1(利息),+0(之前仅一场胜利),+4(工资),+1(胜利)
第四个回合结束时有17金币
来源
郑州大学软件学院第五届ACM程序设计竞赛

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,a[100100],b[100100],c[100100],d[100100],m[100100];
    memset(a,0,sizeof(a));memset(b,0,sizeof(b));
    memset(d,0,sizeof(d));memset(m,0,sizeof(m));
    c[1]=2;c[2]=3;c[3]=4;c[4]=4;
    cin>>n;
    for(int i=5;i<=n;i++)
    {
        c[i]=5;
    }
    for(int i=1;i<=n;i++)
    {
        cin>>d[i];
    }
    b[1]=0;b[2]=0;
    int u=1;
    for(int i=3;i<=n;i++)
    {
        if(d[i-1]==d[i-2])
        {
            u++;
        }
        if(d[i-1]!=d[i-2])
        {
            u=1;
        }
        if(u==1)
        {
            b[i]=0;
        }

        if(u==2||u==3)
        {
            b[i]=1;
        }
        if(u>=4&&u<=6)
        {
            b[i]=2;
        }
        if(u>=7)
        {
            b[i]=3;
        }
    }
    m[1]=a[1]+b[1]+c[1]+d[1];
    for(int i=2;i<=n;i++)
    {
        a[i]=m[i-1]/10;
        if(a[i]>5)
        {
            a[i]=5;
        }
        m[i]=m[i-1]+a[i]+b[i]+c[i]+d[i];

    }
    cout<<m[n]<<endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值