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

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

不能被经过两次及以上。

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

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

  1. #include <iostream>
  2. #include <cstring>
  3. #define inf 1000000000000000
  4. using namespace std;
  5. const int M = 1e5 + 10;
  6. long long a[4][M];
  7. long long dp[M][4];
  8. long long sum(int pos , int l , int r) {
  9. if(l > r) {
  10. swap(l , r);
  11. }
  12. long long sum = 0;
  13. for(int i = l ; i <= r ; i++) {
  14. sum += a[i][pos];
  15. }
  16. return sum;
  17. }
  18. int main() {
  19. int n;
  20. cin >> n;
  21. for(int i = 0 ; i < 3 ; i++) {
  22. for(int j = 1 ; j <= n ; j++) {
  23. cin >> a[i][j];
  24. }
  25. }
  26. for(int i = 0 ; i <= n ; i++) {
  27. for(int j = 0 ; j <= 3 ; j++) {
  28. dp[i][j] = -inf;
  29. }
  30. }
  31. dp[0][0] = 0;
  32. for(int i = 1 ; i <= n ; i++) {
  33. for(int j = 0 ; j < 3 ; j++) {
  34. for(int k = 0 ; k < 3 ; k++) {
  35. dp[i][j] = max(dp[i][j] , dp[i - 1][k] + sum(i , j , k));
  36. }
  37. }
  38. dp[i][0] = max(dp[i][0] , dp[i - 1][3] + sum(i , 0 , 2));
  39. dp[i][2] = max(dp[i][2] , dp[i - 1][3] + sum(i , 0 , 2));
  40. dp[i][3] = max(dp[i][3] , max(dp[i - 1][0] , dp[i - 1][2]) + sum(i , 0 , 2));
  41. }
  42. cout << dp[n][2] << endl;
  43. return 0;
  44. }

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. 保存MTLAB图片是想去掉白边

    在做一些matlab小实验的时候,生成的图片需要临时保存的时候会有多余的白边,如何能解决这种问题? 输入 iptsetpref('ImshowBorder','tight'); 后,再show一次图即 ...

  2. S2:类的构造函数

    类的构造函数构造函数名与类名形同,不返回任何值,主要完成对象的初始化工作. (1)在构造函数中,可以给属性设置默认值(2)this只带当前对象 (3)如果不给属性赋初始值,则会以默认值来填充.(4)如 ...

  3. Spring注解浅入浅出——不吹牛逼不装逼

    Spring注解浅入浅出——不吹牛逼不装逼 前情提要 上文书咱们说了<Spring浅入浅出>,对Spring的核心思想看过上篇的朋友应该已经掌握了,此篇用上篇铺垫,引入注解,继续深入学习. ...

  4. 个人使用的lilypond第一个模板

    手残非要用lilypond打谱真是…… 可是lilypond又能满足各种细节标记和谱文混排,这是musescore达不到的 所以还是开这个坑,希望能逐渐自己有能力编写自己的音乐教材 个人用Fresco ...

  5. [Short-Circuit Constraint Violation]警告解决办法

    今天用Altium Designer16画PCB时候遇到一个问题,进行DRC检测,警告如下: [Short-Circuit Constraint Violation] GrayscaleSensor1 ...

  6. DedeCMS V5.7 SP2前台文件上传漏洞(CVE-2018-20129)

    DedeCMS V5.7 SP2前台文件上传漏洞(CVE-2018-20129) 一.漏洞描述 织梦内容管理系统(Dedecms)是一款PHP开源网站管理系统.Dedecms V5.7 SP2版本中的 ...

  7. GBK和UTF-8的区别

    我们这里将以最简单最容易理解的方式来描述GBK和UTF8的区别,以及它们分别是什么.   GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符 ...

  8. alluxio源码解析-rpc调用概述-client和worker之间的block模块的通讯架构(netty版本)(3)

    (1.8版本)client和worker之间的block模块的通讯架构 block作为alluxio文件读取或者存储的最小基本单位,都是通过BlockOutStream和BlockInputtream ...

  9. Linux之各程序安装

    python安装 安装python3.6 安装python前的库环境,非常重要 yum install gcc patch libffi-devel python-devel zlib-devel b ...

  10. Go-json解码到接口及根据键获取值

    Go-json解码到接口及根据键获取值 package main import ( "encoding/json" "fmt" "github.com ...