CF1743 E - FTL(线性DP)
E - FTL(线性DP)
题意
现在你有两支激光枪,枪A伤害为
思路
如果将A和B一起发射,那么将造成
第一步,我们可以得到一个简单的转移,也就是当前伤害为
对于齐射的转移,我们可以看做在发动一次齐射之前,两者的策略就是:只要冷却时间一结束,就马上发起攻击。
实现
我们会发现在前几个阶段递推的时候,下标会变负。假设我们的伤害都为5,那么
#define int long long
const int N = 5005;
int f[N];
int p1, p2, t1, t2;
int h, s;
void solve()
{
cin >> p1 >> t1 >> p2 >> t2;
cin >> h >> s;
memset(f, 0x3f, sizeof f);
f[0] = 0;
for(int i = 1; i <= h; i ++)
{
f[i] = min(f[max(0ll, i - (p1 - s))] + t1, f[max(0ll, i - (p2 - s))] + t2);
for(int j = 1; j <= i; j ++)
{
if(t1 * j >= t2)
{
int dmg = (j - 1) * (p1 - s) + (t1 * j - t2) / t2 * (p2 - s) + (p1 + p2 - s);
f[i] = min(f[i], f[max(0ll, i - dmg)] + t1 * j);
}
if(t2 * j >= t1)
{
int dmg = (j - 1) * (p2 - s) + (t2 * j - t1) / t1 * (p1 - s) + (p1 + p2 - s);
f[i] = min(f[i], f[max(0ll, i - dmg)] + t2 * j);
}
}
}
cout << f[h] << '\n';
}
分类:
CodeForces
标签:
动态规划
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】