日常训练 20170622 数字游戏
来源:互联网 发布:广州11选五遗漏数据 编辑:程序博客网 时间:2024/06/06 05:47
题意简述: 给出两个正整数数列
题解: 首先
#include<bits/stdc++.h>typedef long long ll;const int N = 2017;const ll INF = 1e15;template <typename T> void read(T &x) { x = 0; int f = 1; char c = getchar(); for (; !isdigit(c); c = getchar()) if (c == '-') f *= -1; for (; isdigit(c); c = getchar()) x = x * 10 + c - '0'; x *= f;}int n, m, a[N], b[N];ll f[N][N], g[N][N], h[N][N];void cmin(ll &a, const ll &b) {if (b < a) a = b;}int main() { freopen("game.in", "r", stdin); freopen("game.out", "w", stdout); scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) read(a[i]), --a[i]; for (int i = 1; i <= m; i++) read(b[i]), --b[i]; for (int i = 0; i <= n; i++) for (int j = 0; j <= m; j++) f[i][j] = g[i][j] = h[i][j] = INF; f[0][0] = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) { ll t = (ll)a[i] * b[j]; g[i][j] = std::min(g[i - 1][j] + t, f[i - 1][j - 1] + t); h[i][j] = std::min(h[i][j - 1] + t, f[i - 1][j - 1] + t); f[i][j] = std::min(h[i][j], g[i][j]); } printf("%lld\n", f[n][m]); return 0;}
阅读全文
0 0
- 日常训练 20170622 数字游戏
- 日常训练 20170531 数字
- 日常训练20161012 方块游戏
- [日常训练] 树上的游戏
- HEU日常训练10.02
- 日常训练小结
- 日常训练20161012 道路网
- 日常训练20161012 醉酒
- 日常训练20161014 跟踪
- 日常训练20161018 证据
- 日常训练20161018 subset
- 日常训练 平均数
- 日常训练 水箱
- 日常训练 棋盘游走
- 日常训练 20170531 探险
- 日常训练 20170531 矩阵
- 日常训练 20170602 Book
- 日常训练 20170602 Equation
- 二分图算法模板以及相关知识
- Python(7) zip()
- 绊脚石之 Json_jarPackage
- Django models中的meta选项
- yii mongo model的写法
- 日常训练 20170622 数字游戏
- Http封装请求工具类
- weblogic 常见thread dump分析
- Matlab坐标图像隐藏横纵坐标的方法
- pythonic 1
- QT中关于窗口全屏显示与退出全屏的实现
- 说说 Jaspersoft Studio 的主界面和报表设计视图
- 如何报名计算机等级考试
- [Java多线程编程核心技术]