標籤:style http io ar os sp for on 問題
傳送門:點擊開啟連結
題目大意:
有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;}
codeforces 492D Vanya and Computer Game(額。。。數學題?水題吧)