题解:AT_abc368_c [ABC368C] Triple Attack

24 年 8 月 25 日 星期日
134 字
1 分钟

题意言简意赅无需赘述。注意每次只攻击最前面生命值为正数的怪物。

思路解析

由题意可知怪物生命减少数量以 1 1 3 为一组循环,所以只需先将每组血量一起减少 55,如果这只怪物在本回合没有死则再次执行上述操作即可。

代码实现

代码实现非常简单。

cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=2e5+10;
ll n,i,x,t,f,a[N];
int main(){
	cin>>n;
	for(i=1;i<=n;i++)cin>>a[i];
	for(i=1;i<=n;i++){
		if(a[i]>0&&!f)a[i]--,f++,x++;
		if(a[i]>0&&f==1)a[i]--,f++,x++;
		if(a[i]>0&&f==2)a[i]-=3,f=0,x++;
		t=a[i]/5;x+=t*3;a[i]-=t*5;
		if(a[i]>0)a[i]--,f++,x++;
		if(a[i]>0)a[i]--,f++,x++;
		if(a[i]>0)a[i]-=3,f=0,x++;
	}
	cout<<x;
}

文章标题:题解:AT_abc368_c [ABC368C] Triple Attack

文章作者:Walter_Fang

文章链接:https://blog.walterfang.us.kg/posts/solution-at_abc368_c[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。