洛谷 P2690 [USACO04NOV] Apple Catching G
记忆化
#include <cstdio> //头文件
#include <iostream>
#include <cstring>
using namespace std;
int T, w;
short a[1009];
int f[1005][3][31]; //记忆化的三维数组记录dfs
int dfs(int i,int j,int k) //i为时间点,j为哪棵树,k为移动了多少次
{
if (i > T)return 0;//边界条件
if (f[i][j][k] != -1)
return f[i][j][k]; //如果搜过了就直接返回
int tmp1 = 0, tmp2 = 0; //两种决策 移动或者不移动
if (k < w && a[i] != j) //最优化剪枝:如果在这个时间点里,当前位置会有果子落下,就不走
tmp1 = dfs(i + 1, -1 * j + 3, k + 1) + 1; //-1 * j + 3这里表示移动,你可以把1,2代进去算一下
tmp2 = dfs(i + 1, j, k) + (j == a[i]); //移动
return f[i][j][k] = max(tmp1, tmp2);
}
int main()
{
cin >>T>>w;
for (int i = 1; i <= T; i++)
cin >> a[i];
memset(f, -1, sizeof(f));//初始化
cout << dfs(1, 1, 0); //开始从时间1,初始在第一棵树,移动次数
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2017-07-25 bzoj 1821 部落划分
2017-07-25 图论————最小生成树
2017-07-25 树上最短路