当前位置: 首页 > news >正文

牛客练习赛122

D:圆

正着求删除的最小代价不好做,采用逆向思维,求选择一些不相交的线段使得构成一个圆的代价尽量大,最后答案就是所有线段权值之和减去最大代价。

那么如何求这个最大代价呢?显然区间DP

老套路:破环成链,枚举区间长度 len ,枚举区间左端点 i 和右端点 j

很明显没有线段长度为1,故len从2开始

具体的

线段的操作和点的相似但又不完全相同具体看代码即可。

1:不选择以左端点的线段,f[i][j]=f[i+1][j];

2、选择以为左端点的线段。枚举左端点 所能到达的右端点 v,权值为 w,那么当前的答案

由 区间  [i+1,k-1]  的答案加上 区间  [k +1[j]  的答案加上线段  [ i, v ] 的权值构成,即

 f[i][j]=f[i+1][v-1]+f[v+1][j]+val(i,v);

int n, m;
int f[M][M]; // f[i][j]  区间i到j不相交边的最大价值
vector<PII> g[N];
void solve()
{cin >> n >> m;int s = 0;for (int i = 1; i <= m; i++){int x, y, w;cin >> x >> y >> w;if (x > y)swap(x, y);g[x].pb({y, w});g[y].pb({x + n, w});s += w;}for (int len = 2; len <= 2 * n; len++){for (int i = 1; i + len - 1 <= 2 * n; i++){int j = i + len - 1;f[i][j] = f[i + 1][j]; // 不选择以i为左端点的线段for (auto ed : g[i])   // 选择以i为左端点的线段{int v = ed.xx, w = ed.yy;if (v > j) // 已经越过右端点了continue;if (v - 1 > i + 1) //区间端点,不能相同w += f[i + 1][v - 1];if (j > v + 1)w += f[v + 1][j];f[i][j] = max(f[i][j], w);}}}int tmp = 0;for (int i = 1; i <= n; i++)tmp = max(tmp, f[i][i + n - 1]);s = s - tmp;cout << s << endl;
}

类似的题目

Codeforces Round 661 (Div. 3)

F. Yet Another Segments Subset

两个题目非常相似但是又不完全相同。

本题的数据显然如果直接区间dp会超时,但是n却是很小我们想能不能进行离散化。

本题的相交比较上一题有点不同,不同在包含的时候端点可以相交,而不包含时端点不可相交。

很明显,离散化候不同区间值被拉近了距离,但是不相交得还是不相交,所以本题可以离散化。(具体题目具体分析,有的题目可能会有坑)

状态表示:f[i][j]  表示区间  [i,j]  里面满足题意得最大区间数量。

然后我们就想一下转移方程:

具体的还是区间DP的过程,枚举区间长度 len ,枚举区间左端点 i 和右端点 j

我们还是以选不选以 i 为左端点的区间,

1:不选  f[i][j]=f[i+1][j];

2:选  f[i][j]=max(f[i][j],f[i][k],f[k+1][j]);(k<j)

我们看第二个方程,很明显就是我们上面说的;

即只有完全包含端点才可以相同;

我们还要注意一种情况那就是区间恰好等于 [i,j] ,这种情况由于(k<j) ,被跳过了

所以最后加上个数即可完成。

int n;
PII p[N];
vector<int> g[N];
void solve()
{vector<int> t;cin >> n;for (int i = 1; i <= n; i++){int l, r;cin >> l >> r;p[i] = {l, r};t.pb(l);t.pb(r);}sort(t.begin(), t.end());t.erase(unique(t.begin(), t.end()), t.end());for (int i = 1; i <= n; i++){int x = lower_bound(t.begin(), t.end(), p[i].xx) - t.begin() + 1;int y = lower_bound(t.begin(), t.end(), p[i].yy) - t.begin() + 1;g[x].pb(y);}int m = t.size();vector<vector<int>> f(m + 10, vector<int>(m + 10));for (int len = 1; len <= m; len++){for (int i = 1; i + len - 1 <= m; i++){int j = i + len - 1;f[i][j] = f[i + 1][j];int cnt = 0;for (auto ed : g[i]){int v = ed;if (v == j)cnt++;if (v < j)f[i][j] = max(f[i][v] + f[v + 1][j], f[i][j]);}f[i][j] += cnt;}}cout << f[1][m] << endl;for (int i = 0; i <= m + 1; i++)g[i].clear();
}

相关文章:

牛客练习赛122

D:圆 正着求删除的最小代价不好做&#xff0c;采用逆向思维&#xff0c;求选择一些不相交的线段使得构成一个圆的代价尽量大&#xff0c;最后答案就是所有线段权值之和减去最大代价。 那么如何求这个最大代价呢&#xff1f;显然区间DP 老套路&#xff1a;破环成链&#xff0…...

软考复习调整策略和学习计划!

根据软考办发布的最新通知&#xff0c;在群里引起了热烈讨论的是2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试的安排。其中&#xff0c;信息系统项目管理师&#xff08;简称高项&#xff09;的考试次数从每年两次减少到只有5月份进行&#xff0c;而系…...

1小时网络安全事件报告要求,持安零信任如何帮助用户应急响应?

12月8日&#xff0c;国家网信办起草发布了《网络安全事件报告管理办法&#xff08;征求意见稿&#xff09;》&#xff08;以下简称“办法”&#xff09;。拟规定运营者在发生网络安全事件时应当及时启动应急预案进行处置。 1小时报告 按照《网络安全事件分级指南》&#xff0c…...

mysql使用连接池

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、mysql连接池&#xff1f;二、使用步骤1.引入库 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a; 提示&#xff1a…...

06. Nginx进阶-Nginx代理服务

proxy代理功能 正向代理 什么是正向代理&#xff1f; 正向代理&#xff08;forward proxy&#xff09;&#xff0c;一个位于客户端和原始服务器之间的服务器。 工作原理 为了从原始服务器获取内容&#xff0c;客户端向代理发送一个请求并指定目标&#xff08;即原始服务器…...

STM32 (1)

1.基本信息 stm32是由ST公司生产的一种32位微控制器&#xff08;单片机&#xff09;。 1.1 各种型号 stm32是32位单片机的总称&#xff0c;有多种不同的系列。 32即用32个比特位表示一个地址&#xff0c;寻址范围&#xff1a;0x00000000 --0xffffffff (4GB) 1.2 存储密度 …...

Spring初始(相关基础知识和概述)

Spring初始&#xff08;相关基础知识和概述&#xff09; 一、Spring相关基础知识&#xff08;引入Spring&#xff09;1.开闭原则OCP2.依赖倒置原则DIP3.控制反转IoC 二、Spring概述1.Spring 8大模块2.Spring特点2.Spring的常用jar文件 一、Spring相关基础知识&#xff08;引入S…...

【Swift 周报 第四十七期

文章目录 前言新闻和社区苹果财报来袭&#xff1a;营收有望再创新高 巴克莱或将惨遭打脸&#xff1f;Apple 为在全球范围内提供迷你 App 和游戏访问的流媒体游戏服务和 App 发布新选项Swift Student Challenge 将于 2 月 5 日开放申请 提案通过的提案正在审查的提案 Swift论坛推…...

STM32(16)使用串口向电脑发送数据

发送字节 发送数组 发送字符和字符串 字符&#xff1a; 字符串&#xff1a; 字符串在电脑中以字符数组的形式存储...

利用大模型技术进行测试用例推荐如何实现

利用大模型技术进行测试用例推荐&#xff0c;可以通过以下步骤实现&#xff1a; 确定目标和需求&#xff1a;明确测试用例推荐的目标和需求&#xff0c;例如推荐哪些类型的测试用例、推荐的数量、推荐的准确率等。 收集数据&#xff1a;收集历史测试用例、需求文档、设计文档等…...

Linux学习:初识Linux

目录 1. 引子&#xff1a;1.1 简述&#xff1a;操作系统1.2 学习工具 2. Linux操作系统中的一些基础概念与指令2.1 简单指令2.2 ls指令与文件2.3 cd指令与目录2.4 文件目录的新建与删除指令2.5 补充指令1&#xff1a;2.6 文件编辑与拷贝剪切2.7 文件的查看2.8 时间相关指令2.9 …...

Python CGI编程错误汇总

文章目录 1 前言2 测试文件3 问题总结 1 前言 在学习Python CGI编程时&#xff0c;运行起来总是有各种各样的问题&#xff0c;故将问题进行总结&#xff0c;以便新接触Python的童鞋能少走弯路 以下均为本人遇到对应报错的解决方案&#xff0c;可能存在其他问题但报错相同的情况…...

第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<vector> #include<queue>using namespace std;int cnt,temp; int n,m,K; int a[505][505]; int pre[505][505];//二维前缀和void sol() {cin>>…...

计算机网络实验 基于ENSP的协议分析

实验二 基于eNSP的协议分析 一、实验目的&#xff1a; 1&#xff09;熟悉VRP的基本操作命令 2&#xff09;掌握ARP协议的基本工作原理 3&#xff09;掌握IP协议的基本工作原理 4&#xff09;掌握ICMP协议的基本工作原理 二、实验内容&#xff1a; 1、场景1&#xff1a;两台PC机…...

Java实现手机库存管理

一、实验任务 编写一个程序&#xff0c;模拟库存管理系统。该系统主要包括系统首页、商品入库、商品显示和删除商品功能。每个功能的具体要求如下&#xff1a; 1.系统的首页&#xff1a;用于显示系统所有的操作&#xff0c;并且可以选择使用某一个功能。 2.商品入库功能&…...

单片机入门:LED数码管

LED数码管 LED数码管&#xff1a;由多个发光二极管封装在一起组成的“8”字型的器件。如下图所示&#xff1a; 数码管引脚定义 一位数码管 内部由八个LED组成。器件有十个引脚。 对于数码管内的8个LED有共阴和共阳两种连接方法。 共阴&#xff1a;将8个LED的阴极都连接到一…...

软考信息系统项目管理师零基础怎么学习?

软考考信息系统项目管理师&#xff0c;零基础怎么入手高项&#xff1f; 要我说对于没有基础的人群来说零基础考信息系统项目管理师还是有一定的难度的&#xff0c;难就难在需要时间去了解基础&#xff0c;而相对于系统分析师、系统构架设计师、网络规划设计师、系统规划与管理…...

【轮式平衡机器人】——TMS320F28069片内外设之Timer_IT(补:CCS程序烧录方法)

引入 Timer_IT 指的是 TMS320F28069 的定时器中断功能。在微控制器或数字信号控制器中&#xff0c;定时器是一个非常重要的外设&#xff0c;它可以用来产生固定时间间隔的中断&#xff0c;或者用来精确计算时间。 Timer_IT 的主要特点如下&#xff1a; 定时功能&#xff1a;…...

安装Proxmox VE虚拟机平台

PVE是专业的虚拟机平台&#xff0c;可以利用它安装操作系统&#xff0c;如&#xff1a;Win、Linux、Mac、群晖等。 1. 下载镜像 访问PVE官网&#xff0c;下载最新的PVE镜像。 https://www.proxmox.com/en/downloads 2. 下载balenaEtcher balenaEtcher用于将镜像文件&#…...

后端项目访问不了

问题&#xff1a; 后端启动不了&#xff0c;无法访问网站 原因&#xff1a; 1.防火墙没有关 2.有缓存 3、项目没有启动 4、docker没有启动 解决&#xff1a; 先查看进程&#xff1a;docker ps&#xff0c;必须有三个 详细查看&#xff1a;docker ps -a exited代表没有开启…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...