首页 > 其他分享 >2023.04.13 定时测试随笔 T1

2023.04.13 定时测试随笔 T1

时间:2023-04-13 22:11:58浏览次数:40  
标签:13 高度 int max 2023.04 T1 maxn ans dp

T1 P1133 教主的花园

传送门:洛谷P1133

这是一道DP的题,定义状态 \(dp[i][j][k]\) 表示前 \(i\) 棵树所能达到的最大价值,且第 \(i\) 棵树为第 \(j\) 种树,\(j = 0\) 高度是 \(10\),\(j = 1\) 高度是 \(20\), \(j = 2\) 高度为 \(30\),如果 \(k = 0\) 它的高度小于相邻两颗, \(k = 1\) 则相反;

状态转移方程:

\(dp[i][0][0] = max(dp[i - 1][1][1], dp[i - 1][2][1]) + w[i];\)
\(dp[i][1][0] = dp[i - 1][2][1] + w[i];\)
\(dp[i][1][1] = dp[i - 1][0][0] + w[i];\)
\(dp[i][2][1] = max(dp[i - 1][1][0], dp[i - 1][0][0]) + w[i];\)

坑点:

因为这是一个环,我们还要考虑 \(1, n\) 的高度关系,那么我们每次枚举一下 \(1\) 的高度就行了,然后取 \(max\);


贴代码:

#include <bits/stdc++.h>

using namespace std;

const int maxn = 1e5 + 5;
int a[maxn][3], dp[maxn][3][2], n;

void read() {
    scanf("%d", &n);
    int ans = 0;
    for (int i = 1; i <= n; ++ i)
        scanf("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);
    for (int j = 0; j < 3; ++ j) {
        for (int i = 0; i < 3; ++ i)
            for (int k = 0; k < 2; ++ k)
                dp[1][i][k] = 0;
        dp[1][j][0] = dp[1][j][1] = a[1][j];
        for (int i = 2; i <= n; ++ i) {
            dp[i][0][0] = max(dp[i - 1][1][1], dp[i - 1][2][1]) + a[i][0];
            dp[i][1][0] = dp[i - 1][2][1] + a[i][1];
            dp[i][1][1] = dp[i - 1][0][0] + a[i][1];
            dp[i][2][1] = max(dp[i - 1][0][0], dp[i - 1][1][0]) + a[i][2];
        }
        for (int i = 0; i < j; ++ i)
            ans = max(ans, dp[n][i][0]);
        for (int i = 2; i > j; -- i)
            ans = max(ans, dp[n][i][1]);
    }
    printf("%d\n", ans);
}

int main() {
    read();
    return 0;
}

标签:13,高度,int,max,2023.04,T1,maxn,ans,dp
From: https://www.cnblogs.com/florence25/p/17316711.html

相关文章

  • 2023 4 13
    合理使用定义宏量便于更改数值,更改数值不用改代码 ......
  • 4.13每日总结
     表格结构化重建,需要使用一些技术工具和方法,例如:1.数据清洗:对表格中的数据进行清洗、去重、格式化等操作,确保数据的准确性和一致性。2.数据标准化:对表格中的数据进行标准化处理,使其符合特定的数据模型或规范。3.数据抽取:使用自然语言处理、OCR等技术将非结构化数据(如P......
  • LightOJ 1348 Aladdin and the Return Journey (树链剖分)
    树链剖分模板题。最近一直有比赛。。好长时间没写了。明显生疏了。。找个模板题熟悉一下。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>#include......
  • 4.13每日总结
    今天做了什么:完成了对listview的item点击弹出详细信息,完成了图片识别微信支付截图录入遇到了那些问题:相机拍的照片太模糊,图片识别识别不出来明天打算做什么:根据用户消费比例给出消费建议,并且做总支付的图以及各项占比......
  • 总结20230413
    今天周四,一周内最轻松的一天。今天只有一节体育课,体育课第一轮的比赛已经打完,结果不是很理想,三胜三负,小组里面是第四名,但是还有第二轮比赛,所以重新燃起自信,迎接第二轮的胜利,第二轮是根据第一轮的结果来分配的,希望分配到B组,有机会能杀出重围,与A组对打。今天晚上敲了大概两小时的j......
  • 每日总结-23.4.13
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"&g......
  • C++ // 2023/4/13
    stl**序列式容器**:强调值的排序,序列式容器中的每个元素均有固定的位置。  **关联式容器**:二叉树结构,各元素之间没有严格的物理上的顺序关系质变算法:是指运算过程中会更改区间内的元素的内容。例如拷贝,替换,删除等等非质变算法:是指运算过程中不会更改区间内的元素内容......
  • macOS 13.4Beta 2 OpenCore 0.9.2双引导分区原版黑苹果镜像
    镜像特点文章原地址:http://www.imacosx.cn/113041.html(转载请注明出处)完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文件为clover引导文件)备注:此镜像仅适用与16g优盘......
  • 2023.4.13每日总结
    完成使用jdbc实现使用excel批量插入数据到数据库packagewangzhan;importjava.io.FileInputStream;importjava.io.InputStream;importjava.net.URLDecoder;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjxl.Cell......
  • 一、图论基础知识(2023.4.13初版[个人向])
    1.图的定义和概念1.图的定义图(Graph)是由顶点的有穷非空集合V和顶点之间的边的集合E组成,通常表示为G={V,E},其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合1.图中点的数据元素称之为顶点线性表中的数据元素称为元素数中的数据元素称为结点2.线性表和树均可以没有元素,......