TOPOI 测验1320, 问题C: 4410: [CF41D]Pawn 解题报告
题目大意
在一个树阵中按一定走法取一些树,使和最大且被 k+1整除
解题思路
类似一个数塔问题
因为最后的结果要被 k+1 整除,所以可以记录到每一个点 对 k+1 取余结果不同的最优解(最大值),不用记录每一个数,浪费空间和时间
举个例子:
当到达 (i, j) 这个点时,有两种路线得到的值分别为a, b(a>b),且a % (k+1) = x, b % (k+1) = x,那么此时只需记录a,将b舍去
因为余数相同不会对后面的结果产生影响
最后枚举最后一行对 k+1取余结果为0的结果,取最大值
空间 n*m*k, 时间n*m*k
路径记录
再开两个数组分别记录每个最优解是由哪个状态转移而来的,输出时递归输出 递归过程
void print (int x, int y, int q) { // 递归到第x行,第y列,%(k+1) 的结果为q
if (x == n) printf ("%d\n", y);
else {
print (x + 1, y + ans[x][y][q].lr, ans[x][y][q].mod);
if (ans[x][y][q].lr == 1) putchar ('L');
else putchar ('R');
}
}
代码
#include <bits/stdc++.h>
using namespace std;
struct e {int lr, mod;} ans[105][105][15]; //ans记录每一步方向及 %k的余数
int n, m, k, a[105][105], f[105][105][15], w;
char ch;
void print (int x, int y, int q) { // 递归到第x行,第y列,%(k+1) 的结果为q
if (x == n) printf ("%d\n", y);
else {
print (x + 1, y + ans[x][y][q].lr, ans[x][y][q].mod);
if (ans[x][y][q].lr == 1) putchar ('L');
else putchar ('R');
}
}
int main(){
scanf ("%d %d %d", &n, &m, &k); k++;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) cin >> ch, a[i][j] = ch -'0';
memset (f, -1, sizeof (f));
for (int i = 1; i <= m; i++) f[n][i][a[n][i]%k] = a[n][i];
for (int i = n - 1; i; i--)
for (int j = 1; j <= m; j++)
for (int p = 0; p < k; p++) {
int t = (p + a[i][j]) % k;
if (j != 1 and f[i+1][j-1][p] >= 0)
f[i][j][t] = f[i+1][j-1][p] + a[i][j], ans[i][j][t] = (e) {-1, p};
if (j != m and f[i+1][j+1][p] >= 0 and f[i+1][j+1][p] + a[i][j] > f[i][j][t])
f[i][j][t] = f[i+1][j+1][p] + a[i][j], ans[i][j][t] = (e) {1, p};
}
for (int i = 1; i <= m; i++) if (f[1][i][0] > f[1][w][0]) w = i; //找到起始位置
if (!w) {puts("-1"); return 0;}
printf ("%d\n", f[1][w][0]);
print (1, w, 0);
return 0;
}
TOPOI 测验1320, 问题C: 4410: [CF41D]Pawn 解题报告的更多相关文章
- 洛谷 P4397 [JLOI2014]聪明的燕姿 / TOPOI 测验1315, 问题E: 1935: 聪明的燕姿 解题报告
题目链接 : 1. 洛谷 2.topoi . 大致题意:输入一个数s,找出所有约数和为s的数 关于一个数的约数和求法: 一个>1的整数可以被分解为多个 质数 的乘方,设数 s = p1k1 * ...
- Topoi 测验1301, 问题C: 1959: 解题 解题报告
Topoi(一个经常会炸的网站) 本题提交链接 很久以前的题目了, 刚开了博客,来写一波题解 先看一波提交记录: 调了好几天QAQ 唉! 要是这些高手里有我估计直接 输出1 就AC了 算法 DFS + ...
- $CF41D\ Pawn$
\(problem\) 与这题 灰常的相似 然后内存可能过大 开个滚动数组 因为数塔问题总是 只需要上面一行的两个状态(这题就是数塔问题) 下面的代码与原题不符.(原题要输出路径)想抄的可以走了 输出 ...
- SCOJ4427 / TOPOI 4404: Miss Zhao's Graph 解题报告
题目链接 SCOJ TOPOI 题目描述 Problem 给定一个包含n个顶点m条边的带权有向图,找一条边数最多的路径,且路径上的边的权值严格递增.图中可能有重边和自环. Input Data 第一行 ...
- 2018.10.05 TOPOI提高组模拟赛 解题报告
得分: \(100+5+100=205\)(真的是出乎意料) \(T1\):抵制克苏恩(点此看题面) 原题: [BZOJ4832][Lydsy1704月赛] 抵制克苏恩 应该还是一个比较简单的\(DP ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- 转载 ACM训练计划
leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
随机推荐
- JSTL标签提示:"items" does not support runtime expressions
今天在使用JSTL的 c:forEach 标签时,jsp提示:"items" does not support runtime expressions,后来才发现是因为taglib ...
- windows下python使用虚拟环境
官方文档: http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html virtualenv 是一个创建隔绝的Python环境 ...
- nodejs 上传图片(服务端输出全部代码)
下面代码,全部都是nodejs端的,不用客户端代码.也就是,选择图片的form表单以及上传完毕预览图片的html,都是由node服务端输出的. 1 启动代码:(node upload.js) var ...
- 问题13:如何在for语句中迭代多个可迭代的对象
from random import randint a1 = [randint(10, 50) for _ in range(5)] a2 = [randint(10, 50) for _ in r ...
- SciTE for Ruby的配置
转自:http://my.oschina.net/xsinger/blog/14229?catalog=71266 下载下面这个文件:http://scintilla.sourceforge.net/ ...
- xshell 登录虚拟机ubuntu
本地装的Ubuntu虚拟机. 宿主机是win10, 互相之间能ping通,就是Xshell连不上,而且也不能弹出用户名和密码框. 后来解决,具体过程如下: 1: ifconfig -a命令得到 ...
- SpringBoot系列(1)
简介:用来简化新Spring应用的初始搭建以及开发过程:该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 特点:1. 创建独立的Spring应用程序2. 嵌入的Tomcat, ...
- iOS使用VideoToolbox硬编码录制H264视频
http://blog.csdn.net/shawnkong/article/details/52045894
- Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术
Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术 这里主要是针对EP3C系列FPGA的Nios程序固化到EPCS中的方法做简要说明.硬件 ...
- BeanFactory和ApplicationContext的介绍
------------------siwuxie095 Spring 通过一个配置文件描述 Bean 和 Bean 之间的依赖关系, 利用 J ...