a.水

b.n长度的街道有m个路灯,给出每个路灯的位置,求灯光能覆盖所有地方的最小灯光半径,水;

c.小明有n们课程要达到一个规定的总分数,一直目前每科达到的分数和每科的总分,买每门课程分数所需费用给出,问最少得花多少钱;贪心,水;

d.两个人刷怪,问谁能给出最后一击,给出怪物的血量,小明每1/m秒出击一次,小红1/n秒出击一次;

由于m,n<=1000000怪物血量<=1000000000

先打表一秒内两人对m+n以内的血的出击情况,暴力就行,但用double存会wa所以用分数存

能知道每秒两人造成的伤害为m+n,那么用a[怪物血量%(m+n)]就是答案

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const long long maxa = 2000005;
long long a[maxa];
long long ss(long long suma, long long a, long long sumb, long long b){
    if(suma * b > sumb * a){
        return 1;
    }else if(suma * b < sumb * a){
        return 0;
    }else return 2;
}
int main(){
    long long n,  aa, b;
    cin>>n>>aa>>b;
    long long sumx = 0, sumy = 0;
    for(long long i = 1; i <= aa+b; i++){
        long long u = ss(sumx+1,aa,sumy+1,b);
        //printf("%d ", u);
        if(u == 0){
            sumx ++;
            a[i] = 0;
        }else if(u == 1){
            sumy ++;
            a[i] = 1;
        }else{
            sumx ++;sumy ++;
            a[i++] = 2;
            a[i] = 2;
        }
    }
    a[0] = a[aa+b];
    while(n--){
        long long s;
        cin>>s;
        if(a[s%(aa+b)] == 0){
            printf("Vanya\n");
        }else if(a[s%(aa+b)]==1){
            printf("Vova\n");
        }else printf("Both\n");
    }
}
View Code

相关文章:

  • 2021-06-08
  • 2021-08-06
  • 2021-09-04
  • 2022-12-23
  • 2021-08-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-20
  • 2021-06-01
  • 2021-09-16
  • 2021-10-16
  • 2021-12-16
  • 2021-11-23
相关资源
相似解决方案