• 题意:有一个HP为\(h\)的大怪兽,你需要轮流进行\(i\)次操作.每次可以使\(h+=d_i\)(\(d_i\)有正有负),当第\(n\)次操作完成后,再从第一次开始,问能否使得怪兽的HP变为\(0\)或更低,如果可以,输出操作次数,否则输出\(-1\).

  • 题解:我们首先求\(d\)的前缀和,如果在求的过程中就能使怪兽死掉的话,直接输出即可.然后再去判断\(pre[n]\)是否小于\(0\),如果不小于,那么我们每一个循环得到的都是正的贡献,永远也打不死怪兽!再来看.我们最后的操作次数一定是刚好跑了几个循环,或者跑了几个循环后再从起始位置选了几个,所以我们可以枚举前缀和,每次减去当前前缀和,然后再去求循环次数(除以\(pre[n]\)上取整),更新答案的最小值就好了.

  • 代码:

    ll h;
    int n;
    ll d[N];
    ll pre[N];
    ll ans=1e18; int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>h;
    cin>>n; rep(i,1,n){
    cin>>d[i];
    } rep(i,1,n){
    pre[i]=pre[i-1]+d[i];
    if(pre[i]<=-h){
    cout<<i<<'\n';
    return 0;
    }
    }
    if(pre[n]>=0) {cout<<-1<<'\n';return 0;}
    pre[n]=-pre[n];
    rep(i,0,n){
    ll cur=h;
    cur+=pre[i];
    ll cnt=(cur-1)/pre[n]+1;
    ans=min(ans,cnt*n+i);
    } cout<<ans<<'\n'; return 0;
    }

最新文章

  1. Redis集群(四):主从配置二
  2. php xml转为xml或者json
  3. AngularJs学习笔记--Forms
  4. Unity4.3.3 烘焙踩坑
  5. Oracle EBS-SQL (INV-3):检查仓库库存价值明细.sql
  6. C#中窗体的一些简单运用(Sixteenth Day)
  7. jquery远程班备忘
  8. loadrunner controller:实时查看VUser的运行情况
  9. 辗转相除法求H.C.F小结
  10. [译]移动API安全终极指南
  11. mongoDB安装和启动
  12. socket.io笔记
  13. 系统调用syscall---用户态切换到内核态的唯一途径
  14. Nginx软件优化
  15. ECharts图形库
  16. [转载]DevOps建立全生命周期管理
  17. Qt编译好的oracle驱动下载
  18. UVALive 7146 (贪心+少许数据结构基础)2014acm/icpc区域赛上海站
  19. Unity3D关于VR的Demo(一)
  20. JVM知识(二):类加载器原理

热门文章

  1. online创建索引中途取消导致索引无法删除解决办法
  2. 关于JDK15的简单理解
  3. 鸿蒙的fetch请求加载聚合数据的前期准备工作-手动配置网络权限
  4. luogu P2198 杀蚂蚁
  5. drf认证、节流、权限、版本
  6. 如何配置 Slf4j
  7. mysql(连接查询和数据库设计)
  8. uni-app请求uni.request封装使用
  9. 对于两个输入文件,即文件A 和文件B ,请编写MapReduce程序,对两个文件进行合并排除其中重复的内容,得到一个新的输出文件C。
  10. 我们都可以把它放 Sidecar 容器中,这样微服务具备了 Super power,一种超能力