C - Triple Attack (周期,思维)
题目来源:https://atcoder.jp/contests/abc368/tasks/abc368_c
//
题意:n个敌人,每个敌人都有自己的生命值。初始T=0,T增加1,然后攻击最前面的敌人,如果T是3的倍数,敌人生命值减少3,否则减少1。当所有敌人的生命值变为<=0,求T的值。
//
思路:“想我这种数学思维不好的,怎么看也想那个模拟题”。就是就是一个周期题,对敌人的攻击值一直都是1 1 3,1 1 3...,也就是每攻击2(1,1)伤害值,就会造成3的伤害,所以伤害值周期为5。
//
题解:
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int n;
cin>>n;
vector<int>a(n);
for(auto& i:a){
cin>>i;
}
int T=0;
for(auto& x:a){
if(x>=5){
T+=x/5*3;
x%=5;
}
while(x>0){
T++;
if(T%3==0){
x-=3;
}
else{
x-=1;
}
}
}
cout<<T<<'\n';
}
signed main()
{
solve();
return 0;
}
浙公网安备 33010602011771号