当前位置: 首页 > news >正文

洛谷 P1541 [NOIP2010 提高组] 乌龟棋

LL f[N][N][N][N];表示四种卡片分别用了多少张,因为数据保证到终点时恰好全用完卡片,不需要再开一维记录目前走到那个位置

#include <bits/stdc++.h>		#define fi first
#define se second
#define endl '\n'using namespace std;
using LL = long long;const int N = 40 + 9; int n,m;
LL f[N][N][N][N];//四种卡片分别用了多少张,因为数据保证一定到终点,不需要再开一维记录目前走到那个位置
int a[360];
int g[5];void solve()
{cin >> n>> m;for (int i = 1;i <= n;i ++) cin >> a[i];for (int i = 1;i <= m;i ++)	{int x; cin >> x;g[x] ++;}f[0][0][0][0] = a[1];for (int i1 = 0;i1 <= g[1];i1 ++)for (int i2 = 0;i2 <= g[2];i2 ++)for (int i3 = 0;i3 <= g[3];i3 ++)for (int i4 = 0;i4 <= g[4];i4 ++){int t = 1 + 1 * i1 + 2 * i2 + 3 * i3 + 4 * i4;LL &now = f[i1][i2][i3][i4];if (i1 >= 1) now = max(now,f[i1 - 1][i2][i3][i4] + a[t]);if (i2 >= 1) now = max(now,f[i1][i2 - 1][i3][i4] + a[t]);if (i3 >= 1) now = max(now,f[i1][i2][i3 - 1][i4] + a[t]);if (i4 >= 1) now = max(now,f[i1][i2][i3][i4 - 1] + a[t]);} cout << f[g[1]][g[2]][g[3]][g[4]] << endl;
}int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int _ = 1;// cin >> _;while(_--) solve();return 0;
}


http://www.mrgr.cn/news/29784.html

相关文章:

  • 机器学习实战—天猫用户重复购买预测
  • 【鸿蒙 HarmonyOS NEXT】组件嵌套滚动:nestedScroll
  • 【重学 MySQL】三十四、加密与解密函数
  • Linux进阶 修改文件所在组
  • 在python中安装HDDM
  • C++_类和对象(下篇)—— 内部类、匿名对象、对象拷贝时的编译器优化
  • 【资料分析】刷题日记1
  • 基于stm32的四旋翼无人机控制系统设计系统设计与实现
  • 【python】30、矩阵加法 tensor.sum
  • 【Python报错已解决】 Requests.exceptions.ProxyError: HTTPSConnectionPool
  • 9.18 微信小程序开发笔记
  • C++——判断year是不是闰年。
  • 亲测有效,长期有效的RTSP流地址公网RTSP地址,各种类型的视频源
  • 使用源代码编译R包的过程
  • 【鸿蒙 HarmonyOS NEXT】popup弹窗
  • 上线跨境电商商城的步骤
  • Sapiens——人类视觉大模型的基础
  • flutter集成百度地图定位 ‘BMKLocationManager.h‘ file not found报错
  • 计算机毕业设计 健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • MySQL系列—12.Undo log