题目链接:http://codeforces.com/problemset/problem/762/D

题意:给出一个3*n的矩阵然后问从左上角到右下角最大权值是多少,而且每一个点可以走上下左右,但是一个点

不能被经过两次及以上。

题解:一看感觉是一道插头dp但是,由于只是3 * n的矩阵,所以必定有规律。然而规律也挺好找的。只要往回走必定会取完3行。

而且走法都有规律的最好自行画图理解一下。

#include <iostream>
#include <cstring>
#define inf 1000000000000000
using namespace std;
const int M = 1e5 + 10;
long long a[4][M];
long long dp[M][4];
long long sum(int pos , int l , int r) {
if(l > r) {
swap(l , r);
}
long long sum = 0;
for(int i = l ; i <= r ; i++) {
sum += a[i][pos];
}
return sum;
}
int main() {
int n;
cin >> n;
for(int i = 0 ; i < 3 ; i++) {
for(int j = 1 ; j <= n ; j++) {
cin >> a[i][j];
}
}
for(int i = 0 ; i <= n ; i++) {
for(int j = 0 ; j <= 3 ; j++) {
dp[i][j] = -inf;
}
}
dp[0][0] = 0;
for(int i = 1 ; i <= n ; i++) {
for(int j = 0 ; j < 3 ; j++) {
for(int k = 0 ; k < 3 ; k++) {
dp[i][j] = max(dp[i][j] , dp[i - 1][k] + sum(i , j , k));
}
}
dp[i][0] = max(dp[i][0] , dp[i - 1][3] + sum(i , 0 , 2));
dp[i][2] = max(dp[i][2] , dp[i - 1][3] + sum(i , 0 , 2));
dp[i][3] = max(dp[i][3] , max(dp[i - 1][0] , dp[i - 1][2]) + sum(i , 0 , 2));
}
cout << dp[n][2] << endl;
return 0;
}

codeforces 762 D. Maximum path(dp)的更多相关文章

  1. Codeforces 559E - Gerald and Path(dp)

    题面传送门 真·难度 *3000 的 D1E hb 跟我们说"做不出来不太应该". 首先我们将所有线段按 \(a_i\) 从小到大排序,一个很显然的想法是 \(dp_{i,j,d} ...

  2. CodeForces - 710E Generate a String (dp)

    题意:构造一个由a组成的串,如果插入或删除一个a,花费时间x,如果使当前串长度加倍,花费时间y,问要构造一个长度为n的串,最少花费多长时间. 分析:dp[i]---构造长度为i的串需要花费的最短时间. ...

  3. Educational Codeforces Round 51 D. Bicolorings(dp)

    https://codeforces.com/contest/1051/problem/D 题意 一个2*n的矩阵,你可以用黑白格子去填充他,求联通块数目等于k的方案数,答案%998244353. 思 ...

  4. Codeforces 536D - Tavas in Kansas(dp)

    Codeforces 题目传送门 & 洛谷题目传送门 其实这题本该 2019 年 12 月就 AC 的(详情请见 ycx 发此题题解的时间),然鹅鸽到了现在-- 首先以 \(s,t\) 分别为 ...

  5. Codeforces 467C George and Job(DP)

    题目 Source http://codeforces.com/contest/467/problem/C Description The new ITone 6 has been released ...

  6. Codeforces 295D - Greg and Caves(dp)

    题意: 给出一个 \(n \times m\) 的矩阵,需对其进行黑白染色,使得以下条件成立: 存在区间 \([l,r]\)(\(1\leq l\leq r\leq n\)),使得第 \(l,l+1, ...

  7. URAL 1146 Maximum Sum(DP)

    Given a 2-dimensional array of positive and negative integers, find the sub-rectangle with the large ...

  8. Codeforces A ACM (ACronym Maker) (dp)

    http://codeforces.com/gym/100650 概要:给出一个缩写,和一些单词,从单词中按顺序选一些字母作为缩写,问方案数. 限制:某些单词要忽略,每个单词至少要选一个字母. dp[ ...

  9. codeforces 813 D. Two Melodies(dp)

    题目链接:http://codeforces.com/contest/813/problem/D 题意:求两个不相交的子集长度之和最大是多少,能放入同一子集的条件是首先顺序不能变,然后每一个相邻的要么 ...

随机推荐

  1. SCI论文的时态

    如果有的杂志对时态有要求,则以下所述都没有用了. 有些杂志也会专门有些比较“特别”的要求,比如Cell,要求Abstract全部使用一般现在时. 英语谓语动词时态共有16种,在英文科技论文中用得较为频 ...

  2. leetcode并发题目解题报告JAVA版

    一.Print in Order Suppose we have a class: public class Foo { public void first() { print("first ...

  3. WPF:事件委托对于不同界面间通信的应用

    界面1内设定点击事件,生成Path用事件传出public partial class TemplateWindow : Window     {         internal delegate v ...

  4. Zookeeeper环境搭建(二)

    zk一般是有2n+1个节点组成的集群.在Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步:剩下的是follower,提供读服务.(为什么是2n+1个节点请看paxos算法) ...

  5. java并发编程(十二)----(JUC原子类)数组类型介绍

    上一节我们介绍过三个基本类型的原子类,这次我们来看一下数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray.其中前两个的使用方 ...

  6. 转载 | CSS图片下面产生间隙的 6种解决方案

    在进行页面的DIV+CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对於 该问题的解决方法也是「见机行事」,根据原因的不同要用不同的 ...

  7. webgl(three.js)实现室内定位,楼宇bim、实时定位三维可视化解决方案

    (写在前面,谈谈物联网展会)上次深圳会展中心举行物联网展会,到了展会一看,80%以上的物联网应用都是在搞RFID,室内定位,我一度怀疑物联网落地方案的方向局限性与市场导向,后来多方面了解才明白,展会上 ...

  8. Java学习|HTTP请求头

    https://www.cnblogs.com/honghong87/articles/6941436.html 常见http请求报文头属性      Accept:告诉服务端,客户端接受什么类型的响 ...

  9. Mac 安装 homebrew 流程 以及 停在 Updating Homebrew等 常见错误解决方法

    懒人操作顺序:S_01>>>S_02>>>S_03 首先这是homebrew的官网 https://brew.sh/index_zh-cn 安装方法是在终端中输入 ...

  10. 域名、主机名、网站名以及 URL 基础概念

    这个东西,在百度经验上已经有人讲得非常清楚了, 作为 web 方向的小白, 我写下我的理解,以便日后查看. 以 https:// www.3vjia.com 为例, 见下图: DNS (Domain ...