codeforces 492D Vanya and Computer Game(额。。。数学题?水题吧)

传送门:点击打开链接

题目大意:

有2个人在打怪,攻击频率分别是x,y。小怪有num点血。问死的时候是谁打死的。如果同时出手 输出Both。

解题思路:

在一秒内考虑这个问题(一秒是循环节)。

假设攻击时刻的分母x*y。那么容易得到每个人的攻击时刻(在一秒内)。

然后如果有一个时刻有重复。那么肯定是2个人同时在打。

排个序就好了。

这是D题么。。。我觉得最多是C题难度,吐槽一下。。。

#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
struct Node
{
    long long num;
    int team;
    bool operator < (const Node& b)const{
        return num < b.num;
    }
}a[2020202];
int cnt;

void init(long long x,long long y)
{
    cnt = 0;
    for(int i = 1;i <= x;i++){
        a[cnt++] = (Node){(long long)(y*i),1};
    }
    for(int i = 1;i <= y;i++){
        a[cnt++] = (Node){(long long)(x*i),2};
    }
}

int main()
{
    int n;
    long long x,y;
    cin >> n >> x >>y;
    init(x,y);
    sort(a,a+cnt);
    for(int i = 1;i <= n;i++){
        long long times;
        scanf("%I64d",×);
        times--;
        times = times%(x+y);
        if(times+1 < cnt && a[times].num == a[times+1].num){
            printf("Both\n");
            continue;
        }
        if(times != 0 && a[times].num == a[times-1].num){
            printf("Both\n");
            continue;
        }
        if(a[times].team == 1){
            printf("Vanya\n");
        }
        else{
            printf("Vova\n");
        }
    }
    return 0;
}
时间: 2024-10-10 23:30:00

codeforces 492D Vanya and Computer Game(额。。。数学题?水题吧)的相关文章

Codeforces 492D Vanya and Computer Game 循环节找规律

题目链接:点击打开链接 题意: 给定n只怪物的血量,x', y 第一个人每秒钟攻击x次,第二个人每秒钟攻击y次 每次攻击给所有存活的怪物造成一点伤害. 问每只怪物最后一击是谁打死的 思路:xy的最小公倍数内有个循环节,先跑出这个循环节(同时攻击时造成2点伤害,就在循环节里加2次both) 然后对于每只怪只要关心在循环节里坐落在哪个攻击点就好了 #include<bits/stdc++.h> using namespace std; const int maxn=2000010; int v[m

codeforces 686B B. Little Robber Girl&#39;s Zoo(水题)

题目链接: B. Little Robber Girl's Zoo //#include <bits/stdc++.h> #include <vector> #include <iostream> #include <queue> #include <cmath> #include <map> #include <cstring> #include <algorithm> #include <cstdio

CodeForces 548A Mike and Fax (回文,水题)

题意:给定一个字符串,问是不是恰好存在 k 个字符串是回文串,并且一样长. 析:没什么好说的,每次截取n/k个,判断是不是回文就好. 代码如下: #include<bits/stdc++.h> using namespace std; string s; bool judge(string s){ for(int i = 0, j = s.size()-1; i < s.size(); ++i, --j){ if(s[i] != s[j]) return false; } return

CodeForces 518B Tanya and Postcard (题意,水题)

题意:给定两个字符串,然后从第二个中找和第一个相同的,如果大小写相同,那么就是YAY,如果大小写不同,那就是WHOOPS.YAY要尽量多,其次WHOOPS也要尽量多. 析:这个题并不难,难在读题懂题意.首先把两个字符串的的每个字符存起来,然后,先扫一遍,把所有的能YAY的都选出来,剩下的再尽量先WHOOPS. 代码如下: #include <iostream> #include <cstdio> #include <algorithm> #include <vec

CodeForces 711B Chris and Magic Square (暴力,水题)

题意:给定n*n个矩阵,其中只有一个格子是0,让你填上一个数,使得所有的行列的对角线的和都相等. 析:首先n为1,就随便填,然后就是除了0这一行或者这一列,那么一定有其他的行列是完整的,所以,先把其他的算出来,然后再作差就算这个数了, 然后再去验证其他的对不对就好了.除了n为1,其他的都是唯一解应该.或者没有. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #i

codeforces 339C Xenia and Bit Operations(线段树水题)

转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Xenia and Bit Operations Xenia the beginner programmer has a sequence a, consisting of 2n non-negative integers: a1, a2, ..., a2n. Xenia is currently studying bit operations. To better unders

Codeforces Round #113 (Div. 2)E---Tetrahedron(矩阵,水题)

You are given a tetrahedron. Let's mark its vertices with letters A, B, C and D correspondingly. An ant is standing in the vertex D of the tetrahedron. The ant is quite active and he wouldn't stay idle. At each moment of time he makes a step from one

Codeforces Round #279 (Div. 2) A. Team Olympiad 水题

#include<stdio.h> #include<iostream> #include<memory.h> #include<math.h> using namespace std; int flag1[5000]; int flag2[5000]; int flag3[5000]; int main() { memset(flag1,0,sizeof(flag1)); memset(flag2,0,sizeof(flag2)); memset(flag

codeforces 492E. Vanya and Field(exgcd求逆元)

题目链接:codeforces 492e vanya and field 留个扩展gcd求逆元的板子. 设i,j为每颗苹果树的位置,因为gcd(n,dx) = 1,gcd(n,dy) = 1,所以当走了n步后,x从0~n-1,y从0~n-1都访问过,但x,y不相同. 所以,x肯定要经过0点,所以我只需要求y点就可以了. i,j为每颗苹果树的位置,设在经过了a步后,i到达了0,j到达了M. 则有 1----------------------(i + b * dx) % n = 0 2------