洛谷P1133 教主的花园
动态规划

这里是环状的,但是我们并不用将他破环成链
只要枚举第一个点 根据第一个点选择最后一个选择什么就行了
然后我们进行DP
注意如果当前是 2 的话要分情况 上一次是上升 1 还是下降 0

F1[ i ] 表示 第 i 位置的种第 1 种树所能获得的最大价值
F2[ i ][ 0 ] 表示 第 i 位置的 种第 2 种树 且上次是下降

 1 #include <bits/stdc++.h>
 2 #define For(i,j,k) for(int i=j;i<=k;i++)
 3 using namespace std ;
 4
 5 const int N = 100011 ;
 6 int n,ans ;
 7 int F1[N],F2[N][2],F3[N],num[N][4] ;
 8
 9 inline int read()
10 {
11     int x = 0 , f = 1 ;
12     char ch = getchar() ;
13     while(ch<'0'||ch>'9') { if(ch=='-') f = -1 ; ch = getchar(); }
14     while(ch>='0'&&ch<='9') { x = x * 10+ch-48 ; ch = getchar(); }
15     return x * f ;
16 }
17
18 inline void calc()
19 {
20     For(i,2,n) {
21         if( F2[i-1][1] ) F1[i] = max( F1[i],F2[i-1][1]+num[i][1] ) ;
22         if( F3[i-1] )    F1[i] = max( F1[i],F3[i-1]+num[i][1] ) ;
23         if( F2[i-1][0] ) F3[i] = max( F3[i],F2[i-1][0]+num[i][3]) ;
24         if( F1[i-1] )    F3[i] = max( F3[i],F1[i-1]+num[i][3] ) ;
25         if( F1[i-1] )    F2[i][1] = F1[i-1] + num[i][2] ;
26         if( F3[i-1] )    F2[i][0] = F3[i-1] + num[i][2];
27     }
28 }
29
30 int main()
31 {
32     n = read() ;
33     For(i,1,n)
34       num[i][1] = read() ,num[i][2] = read() ,num[i][3] = read() ;
35     For(k,1,4) {
36         memset(F1,0,sizeof F1) ;
37         memset(F2,0,sizeof F2) ;
38         memset(F3,0,sizeof F3) ;
39         if(k==1) F1[ 1 ] = num[ 1 ][ 1 ] ;
40         if(k==2) F2[ 1 ][0] = num[ 1 ][ 2 ] ;
41         if(k==3) F2[ 1 ][1] = num[ 1 ][ 2 ] ;
42         if(k==4) F3[ 1 ] = num[ 1 ][ 3 ] ;
43         calc() ;
44         if(k==1) ans = max(ans,F3[n]), ans = max(ans,F2[n][1]) ;
45         if(k==2) ans = max(ans,F3[n]) ;
46         if(k==3) ans = max(ans,F1[n]) ;
47         if(k==4) ans = max(ans,F1[n]), ans = max(ans,F2[n][0]) ;
48     }
49     printf("%d\n",ans) ;
50     return 0 ;
51 }

转载于:https://www.cnblogs.com/third2333/p/7215778.html

洛谷P1133 教主的花园 动态规划相关推荐

  1. P1133 教主的花园 (动态规划)

    题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢 3种树,这3种 ...

  2. P1133 教主的花园

    P1133 教主的花园 题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教 ...

  3. 【Java题解】洛谷题目P3205合唱队-区间动态规划解法

    题目描述: [HNOI2010]合唱队 - 洛谷https://www.luogu.com.cn/problem/P3205 题目信息提取: 这个题目要求我们按照某种顺序将这个队伍中的所有人按照从左到 ...

  4. BZOJ4553/洛谷P4093 [HEOI2016/TJOI2016]序列 动态规划 分治

    原文链接http://www.cnblogs.com/zhouzhendong/p/8672434.html 题目传送门 - BZOJ4553 题目传送门 - 洛谷P4093 题解 设$Li$表示第$ ...

  5. 洛谷P1077:摆花【动态规划】

    这道题目是一个很好的练线性动规的题目[至少本菜鸟是这么觉得]: P1077 [NOIP2012 普及组] 摆花 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 然后我们用集合的角度来 ...

  6. 洛谷 - P1725 琪露诺(动态规划+单调队列优化)

    题目链接:点击查看 题目大意:给出一个由n个节点组成的数轴,每个点上都有一个权值,现在规定当在点x处时,下一步只能去[x+l,x+r]之间的任意一点,现在规定终点是点n之后的所有节点,现在问如何规划路 ...

  7. BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法

    http://www.lydsy.com/JudgeOnline/problem.php?id=3343  ||  https://www.luogu.org/problem/show?pid=280 ...

  8. 洛谷 P1719 最大加权矩形 动态规划

    题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没 ...

  9. 洛谷-P2801 教主的魔法 分块

    题目 题目链接 题意 修改:将一个区间内所有的数+C. 查询:查询一个区间内>C的数字有多少个. 题解 很经典的分快算法题目. 将数列分块以后,对块内的元素进行排序. 当我们要做修改操作的时候: ...

最新文章

  1. 笔试算法题--汪仔换道具
  2. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
  3. /usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
  4. 【C/C 】浅谈C/C 中函数指针与回调函数
  5. Java Math类的常用方法
  6. dj鲜生-05-配置-静态目录-模板目录-后台语言时区
  7. easymodbus_easymodbus4j基于netty的modbus协议快速开发工具
  8. kettle清洗mysql数据_ETL工具Kettle使用以及与Java整合实现数据清洗
  9. 程序员:下一次面试前你需要准备的五个基本步骤
  10. Android的ADT的安装
  11. animals中文谐音_张杰pretty white lies中文音译歌词
  12. html是描述型语言,JavaScript_JavaScript基础教程——入门必看篇,JavaScript他是一种描述性语言, - phpStudy...
  13. VS2003添加.BMP资源
  14. 大数据分析的学习感悟
  15. 计算机开始菜的mstsc命令,Win10一周年更新版系统CLSID(GUID)汇总
  16. 读“人生有一种牛逼,叫我能背下来”
  17. 任务调度之Elastic-Job
  18. 计算机病毒中错误的是什么意思,语法错误是什么意思?
  19. 姜思达和机器人_《奇葩说》姜思达爱上人工智能 马东发全网通缉令寻人
  20. openjudge 二维数组右上坐下遍历(二维数组)

热门文章

  1. java menuitem 乱码_MenuItem 顯示中文亂碼問題解決方案
  2. 2021-08-30 centos连接WiFi方法
  3. 计算机视觉与深度学习 | SLAM综述(自主移动机器人同时定位与地图创建)
  4. springboot的jsp应该放在哪_在springboot中集成jsp开发
  5. php data 算出差几天,出差天数一般怎么算。。。
  6. 套接字有哪些类型?socket有哪些类型?
  7. 数学之路(2)-数据分析-R基础(2)
  8. MySQL 笔记1 -- 安装MySQL及Navicat
  9. 直播回放 | 人工智能强化金融风控(附PPT)
  10. 【机器学习基础】优化算法详解