• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

yongchaoD

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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;
}

posted on 2024-08-26 09:48  yongchaoD  阅读(70)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3