博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DP UVALive 6506 Padovan Sequence
阅读量:4639 次
发布时间:2019-06-09

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

 

/*    题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大    DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[i][j], dp[i/1-i][j-2] + a[i][j]);    要从前面一个转态推过来啊,我比赛写反了,内功不够:(*/#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int MAXN = 1e5 + 10;const int INF = 0x3f3f3f3f;int a[2][MAXN];int dp[2][MAXN];int main(void) //UVALive 6506 Padovan Sequence{// freopen ("K.in", "r", stdin); int t; scanf ("%d", &t); while (t--) { int n; scanf ("%d", &n); memset (dp, 0, sizeof (dp)); for (int i=0; i<=1; ++i) { for (int j=1; j<=n; ++j) { scanf ("%d", &a[i][j]); } } dp[0][1] = a[0][1]; dp[1][1] = a[1][1]; int ans = max (dp[0][1], dp[1][1]); for (int j=2; j<=n; ++j) { for (int i=0; i<=1; ++i) { dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[i][j]); if (j > 2) { dp[i][j] = max (dp[i][j], dp[i][j-2] + a[i][j]); dp[i][j] = max (dp[i][j], dp[1-i][j-2] + a[i][j]); } ans = max (ans, dp[i][j]); } } printf ("%d\n", ans); } return 0;}

 

转载于:https://www.cnblogs.com/Running-Time/p/4592491.html

你可能感兴趣的文章
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
json_encode时中文编码转正常状态
查看>>
流量调整和限流技术 【转载】
查看>>
正由另一进程使用,因此该进程无法访问此文件。
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
MyEclipse安装Freemarker插件
查看>>
计算多项式的值
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总
查看>>
最强的篮球队和马尔可夫模型
查看>>
pyQt 每日一练习 -- 登录框
查看>>
wp 删除独立存储空间文件(多级非空文件夹删除)
查看>>
Loadrunner安装使用入门
查看>>