当前位置: 首页 > news >正文

【牛客周赛 107】E 题【小苯的刷怪笼】题解

题目链接

题目大意

给定三个正整数n , a , k n, a, kn,a,k,其中:

每次操作,小红会选择一个或相邻两个怪物,使得它(们)的血量(各自)− 1 -11。当怪物的血量≤ 0 \leq 00时,怪物被消灭(相邻关系不会改变)。

小红一定会选择最优策略,使用尽可能少的攻击次数消灭这些怪物。

在这种情况下,小苯希望小红能使用恰好k kk次攻击消灭所有的怪物。

请你帮小苯找出一个可能的血量分配方案,如果不行输出− 1 -11

数据范围

Solution

首先,n = 1 n = 1n=1时,只能将a aa分配给一个怪物,所以只要看是否有a = k a = ka=k

下面考虑n > 1 n > 1n>1的情况。

由于需要恰好k kk次操作,所以我们需要找到操作次数的上下界。

先找下界L LL

再找上界R RR

所以只有当⌈ a 2 ⌉ ≤ k ≤ a − ⌊ n 2 ⌋ \left\lceil \dfrac{a}{2} \right\rceil \leq k \leq a - \left\lfloor \dfrac{n}{2} \right\rfloor2aka2n时,才有可能构造一个合法分配。


考虑从上界R = a − ⌊ n 2 ⌋ R = a - \left\lfloor \dfrac{n}{2} \right\rfloorR=a2n开始调整。

此时怪物1 11除了底部的1 11血量值,还有额外分配的a − n a - nan血量值,我们将其拿出s ss来分配给怪物2 22,这样怪物1 11的额外血量为a − n − s a - n - sans,怪物2 22的额外血量为s ss

接着考虑这种分配下的操作次数。

综上,操作次数为a − ⌊ n 2 ⌋ − s a - \left\lfloor \dfrac{n}{2} \right\rfloor - sa2ns

于是令k = a − ⌊ n 2 ⌋ − s k = a - \left\lfloor \dfrac{n}{2} \right\rfloor- sk=a2ns,得到s = a − ⌊ n 2 ⌋ − k . s = a - \left\lfloor \dfrac{n}{2} \right\rfloor - k.s=a2nk.

接下来只要验证这个解是否满足条件。

综上,解s = a − ⌊ n 2 ⌋ − k s = a - \left\lfloor \dfrac{n}{2} \right\rfloor - ks=a2nk合法。

那么额外分配给怪物1 11的为a − n − s = k − ⌈ n 2 ⌉ a - n - s = k - \left\lceil \dfrac{n}{2} \right\rceilans=k2n,怪物2 22的为a − ⌊ n 2 ⌋ − k a - \left\lfloor \dfrac{n}{2} \right\rfloor - ka2nk

C++ Code

#include<bits/stdc++.h>intmain(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);intn,a,k;std::cin>>n>>a>>k;if(n==1){std::cout<<(a==k?a:-1)<<"\n";return0;}if((a+1)/2>kora-n/2<k){std::cout<<-1<<"\n";return0;}std::vectorans(n,1);ans[0]+=k-(n+1)/2;ans[1]+=a-k-n/2;for(inti=0;i<n;i++){std::cout<<ans[i]<<" \n"[i==n-1];}return0;}
http://www.cnnetsun.cn/news/42792.html

相关文章:

  • 基于SpringBoot的餐厅推荐系统 计算机毕业设计选题 计算机毕设项目 前后端分离 【源码-文档报告-代码讲解】
  • 禁用MinIO后的7种企业级替代方案评测
  • document.querySelector在电商网站中的5个实战应用
  • 企业级应用:OpenJDK1.8在生产环境中的部署实践
  • Homebrew实战:从安装到开发环境搭建全流程
  • 企业级Git仓库SSH连接安全最佳实践
  • Day12 贝叶斯优化可视化和随机森林的解读
  • 数据湖不是湖,是江湖:Delta Lake / Iceberg / Hudi 到底该选谁?
  • 告别开题报告模板拼凑!虎贲等考 AI 智能生成,让选题逻辑从模糊想法变身可执行研究计划
  • 【LeetCode刷题】跳跃游戏
  • 鸿蒙PC UI控件库 - PasswordInput 密码输入框详解
  • day37简单的神经网络@浙大疏锦行
  • 【水果识别】基于机器视觉苹果和香蕉的成熟度和大小检测附Matlab代码
  • JAVA的平凡之路——此峰乃是最高峰JVM-附加小菜-04
  • 【电力系统】电力系统优化与控制热液调度附Matlab代码和报告
  • 基于6种最新算法(小龙虾优化算法COA、MSA、RTH、NOA、BFO、SWO)求解机器人路径规划研究附Matlab代码
  • Golang实战:构建综合多头(逾期+反欺诈)风险查询的高性能客户端
  • 【TSP问题】基于蜣螂算法DBO和改进的蜣螂算法FADBO求解旅行商TSP问题(可根据自己的经纬度设置自己想要到达的地区)附Matlab代码
  • 【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析附Matlab代码
  • 数据结构:二叉排序树,平衡二叉树,红黑树的介绍
  • 软件复用的分类与实现
  • google服务
  • 进程PCB
  • 实战教程:1小时掌握逆向Unity游戏 (共13课时)
  • [从零构建操作系统]08 函数调用时栈的底层行为解析
  • 力扣hot100:搜索插入位置
  • Java冷启动全指南:从原理到实战优化
  • 测试 - 单元测试(JUnit)
  • C++中多态
  • c++经典练习题-多分支