E. FTL

E. FTL

代码

/*
首先如果两个人不能同时使用的话,也就是直接采用地推就可以了
然后考虑两个人一起使用
枚举一个用了j次,并且他们最后一次是同时进行使用的
然后进行地推就可以了
如果可以同时使用,那么同时使用肯定是比不同时使用更优的,这是dp的局部最优性
关键就是先进行简单的地推
然后枚举两个人一起进行,从而重置冷却
*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
int f[5005];
signed main() {
memset(f,0x3f,sizeof(f));
f[0]=0;
int p1,t1,p2,t2,h,s;
cin>>p1>>t1>>p2>>t2>>h>>s;
for(int i=0;i<h;i++) {//采用刷表法进行递推
f[min(i+p1-s,h)]=min(f[min(i+p1-s,h)],f[i]+t1);
f[min(i+p2-s,h)]=min(f[min(i+p2-s,h)],f[i]+t2);
for(int j=1;j<=h;j++) {
if(j*t1>=t2) {
int sum=((j-1)*(p1-s))+(p1+p2-s)+((j*t1-t2)/t2*(p2-s));
f[min(i+sum,h)]=min(f[min(i+sum,h)],f[i]+j*t1);
}
if(j*t2>=t1) {
int sum=((j-1)*(p2-s))+(p1+p2-s)+((j*t2-t1)/t1*(p1-s));
f[min(i+sum,h)]=min(f[min(i+sum,h)],f[i]+j*t2);
}
}
}
cout<<f[h]<<endl;
return 0;
}
posted @   basicecho  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示