CF492 D. Vanya and Computer Game
题意:
有n只怪兽,第i只怪兽被打ai次之后才会死
有2个人分别以1秒种攻击x、y次攻击所有怪兽
问第i只怪兽最后死在谁的手里
两个人分别每1/x、1/y秒攻击一次,即1/gcd(x,y)是一个周期
在这个周期里,两个人分别攻击x/gcd、y/gcd次
第i次攻击的时间分别是i/x,i/y
把一个周期里的所有攻击时间从小到大排序
然后根据怪兽血量判断出是被周期内第几次恰好打死
就知道是死在谁手里了
时间是小数可能有精度误差,所以把所有的时间乘上lcm(x,y)转换为整数再比较
#include<bits/stdc++.h> using namespace std; #define N 100002 int a[N]; struct node { long long tim; int who; }e[N*20]; bool cmp(node p,node q) { return p.tim<q.tim; } int main() { int n,x,y; scanf("%d%d%d",&n,&x,&y); for(int i=1;i<=n;++i) scanf("%d",&a[i]); int gcd=__gcd(x,y); long long lcm=1ll*x*y/gcd; int sx=x/gcd,sy=y/gcd; long long tx=lcm/x,ty=lcm/y; int m=0; for(int i=1;i<=sx;++i) { e[++m].tim=tx*i; e[m].who=1; } for(int i=1;i<=sy;++i) { e[++m].tim=ty*i; e[m].who=2; } sort(e+1,e+m+1,cmp); int h=0; for(int i=1;i<=n;++i) { h=a[i]%m; if(!h || h==m-1) printf("Both\n"); else if(e[h].who==1) printf("Vanya\n"); else printf("Vova\n"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2020-10-04 天梯赛 球队“食物链”
2020-10-04 天梯赛 周游世界