博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 41D Pawn 简单dp
阅读量:6303 次
发布时间:2019-06-22

本文共 1778 字,大约阅读时间需要 5 分钟。

题目链接:

给定n*m 的矩阵 常数k

以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示

问:

从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0

每一个格子仅仅能向↖或↗走一步

求:最大的路径和

最后一行的哪个位置作为起点

从下到上的路径

思路:

简单dp

#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define N 105#define inf 10000000#define ll intint n,m,k;int dp[N][N][12];int px[N][N][12], py[N][N][12], sum[N][N][12];int mp[N][N];vector
>ans;int main(){ int i, j, z; while(~scanf("%d %d %d",&n,&m,&k)){ k++; memset(sum, -1, sizeof sum); memset(px, -1, sizeof px); memset(py, -1, sizeof py); memset(dp, 0, sizeof dp); for(i = 1; i <= n; i++) for(j = 1; j <= m; j++) scanf("%1d",&mp[i][j]); for(i = 1; i <= m; i++) dp[n][i][mp[n][i] % k] = 1, sum[n][i][mp[n][i] % k] = mp[n][i]; for(i = n-1; i ; i--){ for(j = 1; j <= m; j++) { int x = i+1, y = j-1; if(y>=1) { for(z = 0; z <= k; z++) if(dp[x][y][z] && sum[i][j][(z+mp[i][j])%k] < sum[x][y][z]+mp[i][j]) { dp[i][j][(z+mp[i][j])%k] = 1; px[i][j][(z+mp[i][j])%k] = x; py[i][j][(z+mp[i][j])%k] = y; sum[i][j][(z+mp[i][j])%k] = sum[x][y][z]+mp[i][j]; } } y = j+1; if(y<=m) { for(z = 0; z <= k; z++) if(dp[x][y][z] && sum[i][j][(z+mp[i][j])%k] < sum[x][y][z]+mp[i][j]) { dp[i][j][(z+mp[i][j])%k] = 1; px[i][j][(z+mp[i][j])%k] = x; py[i][j][(z+mp[i][j])%k] = y; sum[i][j][(z+mp[i][j])%k] = sum[x][y][z]+mp[i][j]; } } } } int posx = 1, posy = -1, mod = 0, anssum = -1; for(i = 1; i <= m; i++) if(dp[1][i][0] && anssum
(posx, posy)); int tx = px[posx][posy][mod]; int ty = py[posx][posy][mod]; mod = ((mod-mp[posx][posy])%k+k)%k; posx = tx, posy = ty; } cout<
<
= 0; i--){ int nowx = ans[i].first, nowy = ans[i].second; if(nowy>y) printf("R"); else printf("L"); x = nowx, y = nowy; } puts(""); } return 0;}

转载地址:http://vwfxa.baihongyu.com/

你可能感兴趣的文章
linux 设备驱动程序开发 第3版_Chapter2_Cconcurrency in th...
查看>>
PHP is_numeric 检测变量是否为数字或数字字符串
查看>>
自定义Behavior(二)
查看>>
UI控件之UIButton详解
查看>>
iOS 在UILabel显示不同的字体和颜色
查看>>
打入电话时Fragment生命周期
查看>>
IP V6
查看>>
java模拟百米赛跑 求指点
查看>>
.NET泛型解析(下)
查看>>
WEB安全扫描软件=:joomscan
查看>>
Linux学习笔记:Open***的预共享密钥用于对称加密和非对称加密
查看>>
Android启动过程深入解析
查看>>
centos7/rhel7安装配置vncserver
查看>>
Centos 6.4 下 安装配置zabbix2.2.9(二)
查看>>
python之路——列表,集合,字典
查看>>
HP ProCurve交换机与Cisco交换机生成树协议相关命令比较
查看>>
java打印日历方法
查看>>
pt-archiver归档工具的使用详解
查看>>
goclipse 0.10
查看>>
16杀手级的iPhone OpenGL ES的资源
查看>>