单位
来源:互联网 发布:淘宝三木社的衣服好吗 编辑:程序博客网 时间:2024/04/19 10:08
#include <vector>
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
int n, a, b;
cin >> n >> a >> b;
vector<int> hp(n+1);
for (int i = 1; i <= n; ++i)
cin >> hp[i];
int res = 0;
int fireCnt = ceil((hp[1]+1)/b);
res += fireCnt;
hp[2] -= a*fireCnt;
hp[3] -= a*fireCnt;
hp[3] = max(hp[3], -1);
vector<int> fireNum(fireCnt, 2);
for (int i = 2; i < n; )
{
if (hp[i] < 0) {++i; continue;} //fireTo died
int harmFireToi = min(a, hp[i]+1) + min(b, hp[i+1]+1);
int harmFireToiplus1 = min(a, hp[i+1]+1) + min(b, hp[i]+1) + min(b, hp[i+2]+1);
if (harmFireToi >= harmFireToiplus1) //fire to i
{
res++;
hp[i] = max(hp[i]-a, -1);
hp[i+1] = max(hp[i+1]-b, -1);
fireNum.push_back(i);
}
else //fire to i+1
{
res++;
hp[i] = max(hp[i]-b, -1);
hp[i+1] = max(hp[i+1]-a, -1);
hp[i+2] = max(hp[i+2]-b, -1);
fireNum.push_back(i+1);
}
}
int hpOfnMinus1 = max(-1, hp[n-1]);
int hpOfn = max(-1, hp[n]);
//cout << hpOfnMinus1 << " " << hpOfn << endl;
//int fireTonMinus1 = max(ceil((hpOfnMinus1+1)/a), ceil((hpOfn)/b));
int fireTonMinus1 = ceil((hpOfn+1)/b);
res += fireTonMinus1;
for (int i = 0; i < fireTonMinus1; ++i)
fireNum.push_back(n-1);
cout << res << endl;
int sz = fireNum.size();
for (int i = 0; i < sz; ++i)
cout << fireNum[i] << " ";
return 0;
}
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
int n, a, b;
cin >> n >> a >> b;
vector<int> hp(n+1);
for (int i = 1; i <= n; ++i)
cin >> hp[i];
int res = 0;
int fireCnt = ceil((hp[1]+1)/b);
res += fireCnt;
hp[2] -= a*fireCnt;
hp[3] -= a*fireCnt;
hp[3] = max(hp[3], -1);
vector<int> fireNum(fireCnt, 2);
for (int i = 2; i < n; )
{
if (hp[i] < 0) {++i; continue;} //fireTo died
int harmFireToi = min(a, hp[i]+1) + min(b, hp[i+1]+1);
int harmFireToiplus1 = min(a, hp[i+1]+1) + min(b, hp[i]+1) + min(b, hp[i+2]+1);
if (harmFireToi >= harmFireToiplus1) //fire to i
{
res++;
hp[i] = max(hp[i]-a, -1);
hp[i+1] = max(hp[i+1]-b, -1);
fireNum.push_back(i);
}
else //fire to i+1
{
res++;
hp[i] = max(hp[i]-b, -1);
hp[i+1] = max(hp[i+1]-a, -1);
hp[i+2] = max(hp[i+2]-b, -1);
fireNum.push_back(i+1);
}
}
int hpOfnMinus1 = max(-1, hp[n-1]);
int hpOfn = max(-1, hp[n]);
//cout << hpOfnMinus1 << " " << hpOfn << endl;
//int fireTonMinus1 = max(ceil((hpOfnMinus1+1)/a), ceil((hpOfn)/b));
int fireTonMinus1 = ceil((hpOfn+1)/b);
res += fireTonMinus1;
for (int i = 0; i < fireTonMinus1; ++i)
fireNum.push_back(n-1);
cout << res << endl;
int sz = fireNum.size();
for (int i = 0; i < sz; ++i)
cout << fireNum[i] << " ";
return 0;
}
0 0
- 单位
- 单位
- 单位
- 单位
- 容量单位&速度单位
- CSS 单位
- 亮度单位
- 单位换算
- 存储单位
- CSS 单位
- CSS单位
- CSS 单位
- 单位根
- 单位转换
- 长度单位
- GIS单位
- android 单位
- 单位签订
- Android adb 模拟滑动 按键 点击事件
- lwip_sendto函数详解
- 时钟八:用IIC和EEPROM实现时钟
- java读书笔记:内部类
- Apache虚拟主机配置
- 单位
- 如何学习KALI
- 虚函数表存放在哪里
- HHU ACM 综合训练2
- WebSocket实现Android客户端之间的简单通讯
- Docker学习笔记 — Docker与OpenStack集成
- Android 6.0 Reboot 流程源代码分析
- 文章标题 HDU 5112- A Curious Matt
- 普通程序员的四年打杂收货