Codeforces 492D Vanya and Computer Game

题目链接:http://codeforces.com/problemset/problem/492/D


题意:游戏里,有2个玩家,a玩家1s内攻击x次,b玩家1s内攻击y次,给出若干个怪物的血量,问谁补得刀


思路:a玩家第i次攻击,b玩家第j次攻击,i/x > j/y(化简为i*y >j*x),i+j次是b的,若相等则i+j次攻击和i+j+1次攻击都视为同时攻击


#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 2000300
#define LL long long
using namespace std;

int at[maxn];


int main()
{
    int n,x,y;
    while (scanf("%d%d%d",&n,&x,&y)!=EOF)
    {
        LL cnt=1,xx=1,yy=1;
        memset(at,0,sizeof(at));
        while (cnt<=x+y)
        {
            if (xx*y>yy*x)
            {
                at[cnt++]=2;
                yy++;
            }
            else if (xx*y<yy*x)
            {
                at[cnt++]=1;
                xx++;
            }
            else
            {
                at[cnt++]=3;
                at[cnt++]=3;
                xx++;
                yy++;
            }

        }
        at[0]=at[cnt-1];
        LL hp;
        for (int i=0;i<n;i++)
        {
            scanf("%I64d",&hp);
            hp=hp%(x+y);
            if (at[hp]==3) printf("Both\n");
            else if (at[hp]==1) printf("Vanya\n");
            else printf("Vova\n");
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值