P11233 [CSP-S 2024] 染色 题解

我们设 \(dp_{x,y}\) 表示上一个红色是 \(x\),上一个蓝色是 \(y\) 时最大的价值。

容易发现转移为 \(dp_{a_i,x}=\max\limits_{j=1}^k dp_{k,x}+[k=a_i]a_i,dp_{x,a_i}=\max\limits_{j=1}^k dp_{x,k}+[k=a_i]a_i\)。其中 \(k\) 是值域。

容易发现,转移完后的 \(dp\) 数组中有值的位置是一个十字架(如下图)。

我们考虑直接维护十字架上的值并对其进行转移。

考虑若 \(a_i=a_{i-1}\),相当于全局加上 \(a_i\),打一个标记即可。

\(a_i\not=a_{i-1}\),记 \(las=a_i,f_{i,x}=dp_{a_i,x},g_{i,x}=dp_{x,a_i}\)

容易发现转移:

\[\begin{array}{c} f_{i,x}&=&f_{i-1,x}\\ f_{i,las}&=&\max(g_{i-1,a_i}+a_i,maxg)\\ g_{i,x}&=&g_{i-1,x}\\ g_{i,las}&=&\max(f_{i-1,a_i}+a_i,maxf)\\ f_{i,a_i}=g_{i,a_i}&=&\max(f_{i,a_i},g_{i,a_i}) \end{array} \]

直接维护即可,复杂度 \(O(T(n+V))\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846289.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sybaris pg walkthrough Intermediate

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.166.93 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-03 01:12 UTC Nmap scan report for 192.168.166.93 Host is up (0.071s latency). Not shown: 65519 filtered tcp ports (no-response) PORT …

H5-23 关系选择器

关系选择器分为:后代选择器、子代选择器、相邻兄弟选择器、通用兄弟选择器 1、后低选择器定义:选择所有被E元素包含的F元素,中间用空格隔开语法:E F {}<ul><li>1</li><li>2</li><li>3</li></ul>   <ol><li>…

【DL】YOLOv8模型中的train.py

YOLOv8项目中有两个地方可以执行train.py 最外层的train.py(现在想起来这里好像是我自己写的训练脚本,原项目里没有)YOLO()构造函数默认构造的是目标检测的模型,也可以在方法的参数中指定task类型 models/yolo中的train.py这里的每个文件夹中定义了相对应任务中的训练脚本在…

获取剪切板的图片 - File - Base64 - Blob - url - Image,以及它们之间的各种相互转换

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 一、获取剪切板的图片(拿到 File 对象) js粘贴事件paste简单解析及遇到的坑 - 云+社区 - 腾讯云 (tencent.com)document.addEventListener(paste, function(event) {let items = event.clipboardData && event…

k8s阶段05 Operator, DaemonSet, Job, CronJob, Ingress和Ingress Controller(蓝绿/恢复发布), helm

StatefulSet:编排有状态应用基本要求:需要给每个实例惟一且固定的标识,依赖于一个专用的Headless Service; 需要给每个实例一个专用的PVC卷,该卷要来自volumeTemplateClaim,卷的标识 “template_name-pod_name”;Pod Management Policy: OrderedReady:按顺序,依次Para…

单表增删改查

学习前,请先搞定数据库的驱动和连接,具体看黑马课程《java web》。 idea 先配置好Tomcat才可以进行,具体可以在CSDN上找教程 差旅费的简单单表增删改查 以下是数据库以下是控制台代码。 其中部分代码看不懂的话,可以在B站中《JAVA JDBC》中搞定 其中数据库的操作因人而异,…

JDBC连接数据库实现增删改查前端交互

实现交互最终要的是这个web.xml,其实我们新版本已经可以直接使用@这个CourseSevlet是前后端实现交互的映射,只有这个东西配置好了,才能实现前后端的交互,前端界面随便写写就行,主要就是那个意思

VScode中配置 C/C++ 环境

## VScode中配置 C/C++ 环境 1. 下载编译器MinGW并解压官网页面:https://www.mingw-w64.org/下载页面:https://sourceforge.net/projects/mingw-w64/files/下载页面中选择 x86_64-win32-seh 下载(目前已经更新,页面中没有,需要找很麻烦)MinGW直接下载地址 https://wwn.la…

hot100-一刷-04子串(共3道题)

560. 和为 K 的子数组 题目链接 题目描述代码实现 分析:暴力:还是有点技巧的,如果单纯暴力,外层fori循环遍历起始下标start,内层forj循环遍历末尾end,里面还需要个循环,计算从i加到j,最坏会到\(O(n^3)\)。考虑固定某一个边界,比如固定end,从end往前算。点击查看代码 c…

JDBC链接数据库

1.首先我们需要下载mysql的官网jar包 https://dev.mysql.com/downloads/connector/j/ 这个版本比较新 然后打开idea 创建一个项目 下面是链接代码,记得看注释 package com.stu.jdbc;//我的包的名字叫com.stu.jdbc,报错可以删除 import java.sql.*; public class JDBC {//这个…

欧拉路/欧拉回路 学习笔记【未完工】

欧拉路判定 有向图 首先这张图将所有的有向边转为无向边之后图连通。 反例: 其次,我们知道当且仅当所有点的入度和出度都相等,才会有欧拉回路。因为一个点进去之后一定会出来,所以入度一定等于出度。 同理,我们也可以知道入度和出度差 \(1\) 时,才会有欧拉路。因为不要从…