瞎搞-贪心-NOIP前第45天-入门-钓鱼

本文探讨了一种结合动态规划(DP)与贪心策略的算法解决方案,用于解决一个关于在一系列湖泊中有效分配钓鱼时间的问题。通过预处理路径成本并采用全局最优策略,该算法能够高效地找到在有限时间内捕获最多鱼的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一开始看了就觉得应该是DP,的确如此,但是有贪心的做法。
贪心做法就是假设只在前i个湖钓鱼,然后把中间这i-1段路程所花的时间先给扣除,剩下的就按最优的分配就可以了。i从1到n都操作一遍从得到的n个临时答案里面取最大值就是答案了。
一开始思维惯性,导致想法一直是假设当前已经处于某于第i个湖,考虑怎样去决策是要继续在当前的湖钓鱼或者是走到下一个湖,于是只能想成记忆化搜索了(也就是DP)。
没想到能从全局的角度去考虑解决,是一个要改进的思维缺陷。

#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
#define random(l,r) ((l)+rand()%((r)-(l)+1))
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int inf=1e9+10,N=150;
const double eps=1e-6;
int n,h,f[N],d[N],t[N],nowf[N],tt,ans;
int main(){
	ios::sync_with_stdio(false); cin.tie(0);
	cin>>n>>h; h*=12;
	rep(i,1,n) cin>>f[i];
	rep(i,1,n) cin>>d[i];
	t[1]=0; rep(i,2,n) cin>>tt,t[i]=t[i-1]+tt;
	rep(i,1,n){
		rep(j,1,n) nowf[j]=f[j];
		int cnt=h-t[i],now=0;
		while(cnt>0){
			int k=1;
			rep(j,1,i) if(nowf[k]<nowf[j]) k=j;
			now+=nowf[k]; nowf[k]-=d[k]; nowf[k]=max(nowf[k],0);
			cnt--;
		}
		ans=max(ans,now);
	}
	cout<<ans;
	return 0;
}
### Element Plus `el-date-picker` 组件的值类型 Element Plus 的 `el-date-picker` 组件支持多种类型的值,具体取决于所使用的日期选择器类型及其配置。对于单个日期的选择,默认情况下返回 JavaScript `Date` 对象[^1]。 当设置了 `value-format` 属性时,则可以指定输出字符串的具体格式。例如,在提供的代码片段中: ```html <el-date-picker v-model="form.name" type="datetime" format="YYYY-MM-DD HH:mm" value-format="YYYY-MM-DD HH:mm" placeholder="请选择"> </el-date-picker> ``` 这里指定了 `value-format="YYYY-MM-DD HH:mm"`,这意味着绑定到 `v-model` 上的变量将会接收到一个按照此模式格式化的字符串而不是默认的 `Date` 对象。 需要注意的是,如果遇到类似 `date.getFullYear is not a function` 这样的错误提示,这通常意味着尝试操作的对象不是一个有效的 `Date` 实例。这种问题可能发生在将 `value-format` 设置为特定格式之后再试图调用原生方法处理该值的情况下[^2]。 为了确保兼容性和正确的行为,建议开发者根据实际需求合理选用是否启用 `value-format` 选项,并注意后续逻辑中的数据类型匹配。 #### 关于年月日必须大写的说明 在上述例子中提到“年月日必须是大写”,这是因为采用了 Moment.js 或类似的库来进行解析和显示时遵循 ISO 8601 标准的大写字母表示法(如 YYYY 表示四位数年份)。因此,在模板内使用这些占位符时应保持一致以避免潜在的问题。 ```javascript // 示例:如何验证接收到了正确的字符串形式而非 Date 对象 console.log(typeof form.name === 'string'); // 应输出 true 如果启用了 value-format 并选择了 datetime 类型 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值