今日学习记录
1. 3494. 酿造药水需要的最少总时间
关键词:模拟
问题分析:
巫师按顺序处理药水,每个巫师处理完后必须立马给下一个巫师处理,巫师也得按照顺序,巫师三不能传给巫师一
核心思路:
正反搜索
要求最短的处理时间,其实为了时间不冲突,基于原来的时间找最大值,当找到最大值后再反向得到实际处理的时间
long long minTime(vector<int>& skill, vector<int>& mana) {
int n = skill.size();
vector<long long> arr(n);
for(int &x:mana){
long long sum = 0;
for(int i = 0;i<n;i++){
sum = max(sum,arr[i])+1LL*skill[i]*x;
}
arr[n-1] = sum;
for(int i = n-2;i>=0;i--){
arr[i] = arr[i+1]-1LL*skill[i+1]*x;
}
}
return arr[n-1];
}递推开始时间
record
凹包+二分
**最终代码:
学到的点: 1.