C. Painting the Fence(思维 + 前缀和)

news2024/11/25 2:50:58

Problem - C - Codeforces

You需要油漆一个由n个部分组成的长围栏。不幸的是,它没有被涂漆,所以你决定雇用q名画家来完成这项工作。第i名画家将会油漆所有满足lisxsri的部分x.
不幸的是,你的预算很紧,所以你只能雇用q-2名画家。显然,只有你雇用的画家才会完成他们的工作。
如果你选择最优的q-2名画家,你希望最大化已经涂漆的部分数量。如果至少有一名画家对一个部分进行了涂漆,则认为该部分已经涂漆。
输入
第一行包含两个整数n和q (3≤n,q≤5000)--分别是部分数和可供聘用的画家数。
接下来有q行,每行描述其中一位画家:第i行包含两个整数li和ri (1<lisri≤n)。
输出
输出—个整数--如果你雇用q-2名画家,最大可以涂漆的部分数量。

Examples

input

Copy

7 5
1 4
4 5
5 6
6 7
3 5

output

Copy

7

input

Copy

4 3
1 1
2 2
3 4

output

Copy

2

input

Copy

4 4
1 1
2 2
2 3
3 4

output

Copy

3

题解:

首先我们可以记录如果所有人涂,每个点会涂几次,由于数据比较小,差分都不用,直接暴力即可

关键是,我们如何,减去两个人涂的影响呢?

其中一个人我么可以通过,枚举q个人时,让l[i] ~ r[i]这一段区间都减一,这样消去了一个影响,那另一个人呢?

我们这侯就可以用到前缀和了,通过前缀和记录,1~n当前为止,被染的次数1的数量有多少,并且记录n有多少个点被染过,

接着我么枚举i + 1~n,ans = max(ans,sum - pre[r[j]] - pre[l[j]-1]);

通过前缀和可以快速得到,每一段如果不涂的影响(影响就是被涂次数为一的数量)

本题主要考点为,利用前缀和求任意一段得影响(前缀和应用十分广泛的一种思路,不应该想不到的)

#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
#define int long long
typedef pair<int,int> PII;
int mod = 1e9 + 7;
int l[5005];
int r[5005];
int cnt[5005];
int pre[5005];
void solve()
{
	int n,q;
	cin >> n >> q;
	for(int i = 1;i <= q;i++)
	{
		cin >> l[i] >> r[i];
		for(int j = l[i];j <= r[i];j++)
		cnt[j]++;
	}
	int ans = 0;
	for(int i = 1;i <= q;i++)
	{
		for(int j = l[i];j <= r[i];j++)
		cnt[j]--;
		int sum = 0;
		for(int j = 1;j <= n;j++)
		{
			if(cnt[j] == 1)
			pre[j] = pre[j - 1] + 1;
			else
			pre[j] = pre[j - 1];
			if(cnt[j])
			sum++;
		}
		for(int j = i + 1;j <= q;j++)
		{
			ans = max(ans,sum - (pre[r[j]] - pre[l[j] - 1]));
		}
		
		
		for(int j = l[i];j <= r[i];j++)
		cnt[j]++;
	} 
	cout << ans;
}
//5 7 8 9 10

signed main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0);cout.tie(0);
	int t = 1;
//	cin >> t;
	while(t--)
	{
		solve(); 
	}
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java线程池详解,内含实战演练~

本文是向大家介绍线程池的使用和一些注意事项&#xff0c;它能够实现高并发下快速处理业务&#xff0c;能够帮助开发人员深入理解线程池的价值。 1. 简介 线程池是使用池化技术管理和使用线程的一种机制。池化技术&#xff1a;提前准备一些资源&#xff0c;在需要时可以重复使…

200颗卫星!武大“东方慧眼”星座项目发布

本文转自武汉大学官微 4月24日&#xff0c;是“中国航天日”&#xff0c;“东方慧眼”智能遥感星座项目在武汉大学宣布正式启动。 针对当前我国卫星遥感存在“成本高、效率低、不稳定、应用少”等诸多问题&#xff0c;“东方慧眼”智能遥感卫星星座计划通过卫星星座组网观测、…

【环境配置】Window上Git clone 如何提高速度

步骤一&#xff1a;得到ip 在下列网站上 https://www.ipaddress.com/ 分别搜索&#xff1a; github.global.ssl.fastly.netgithub.com然后记录得到的IP地址 步骤二&#xff1a; 修改host 在Windows中&#xff0c;先进入&#xff1a;C:\Windows\System32\drivers\etc 目录 …

MySQL: 数据类型之整数型、浮点数、时间日期

目录 前言&#xff1a; 数据类型&#xff1a; 整数型&#xff1a; 浮点数与定点数&#xff1a; 浮点数&#xff1a; 定点数&#xff1a; 日期与时间&#xff1a; DATATIME: DATE&#xff1a; TIMESTAMP: ​编辑 YEAR: TIME: 前言&#xff1a; 前面的几篇写了如何创…

css-设置单行文本溢出省略号,使用overflow:hidden属性之后的出现的问题几解决办法。

1 设置单行文本溢出后出现省略号 必要&#xff1a;需要设置固定宽度&#xff0c;不允许换行 width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; 2 设置N行文本…

每天一道大厂SQL题【Day24】华泰证券真题实战(六)

文章目录 每天一道大厂SQL题【Day24】华泰证券真题实战(六)每日语录第24题&#xff1a;需求列表 思路分析答案获取加技术群讨论文末SQL小技巧 后记 每天一道大厂SQL题【Day24】华泰证券真题实战(六) 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦…

如何生成以及校验token

1️⃣ What is token&#xff1f; token是令牌的意思&#xff0c;作用就像“通关令牌”一样&#xff0c;持有token的请求会被“放行”&#xff0c;不持有token的请求可以被拦截&#xff08;可以设置白名单使不被拦截&#xff0c;例如登陆请求&#xff09;。 token是由…

Dockere-Compose迁移Gitea部署

Dockere-Compose迁移Gitea部署 ps: 江湖不是打打杀杀&#xff0c;江湖是人情事故。 解释&#xff1a; Gitea&#xff1a;类似于Git的代码版本管理工具。Docker&#xff1a;Docker-Compose&#xff1a; Docker命令&#xff1a; 查看镜像&#xff1a;docker images 删除镜像…

web自动化测试入门篇07 ——— 用例编写技巧

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

idea中导入spring源码错误during working with external system: java.lang.AssertionError

标题:idea中导入spring源码错误during working with external system: java.lang.AssertionError 1.Spring源码编译环境 spring 5.3.1 JDK环境:1.8 Spring版本:5.3.1版本 开发工具:IntelliJ IDEA 2019.10 编译工具:Gradle-6.4-bin 操作系统:windows 10 注&#xff1a; sprin…

分支和循环语句(2)

文章目录 3.2 for循环3.2.1 for语句的语法3.2.2 for循环中的break和continue3.2.3 for语句的循环控制变量3.2.4 一些for循环的变种3.2.5 一道笔试题 3.3 do while循环3.3.1 do语句的语法3.3.2 do语句的特点3.3.3 do while循环中的break和continue 3.4 练习3.4.1 计算 n的阶乘3.…

数据可视化工具汇总:数字孪生产品的得力助手

数字孪生技术是一项快速发展的新兴技术&#xff0c;已经在许多领域得到广泛应用。数字孪生技术不仅可以提供完整的虚拟模型&#xff0c;还可以模拟物理系统的行为。在数字孪生技术的推动下&#xff0c;越来越多的数字孪生产品开始涌现出来&#xff0c;为不同的领域提供支持和解…

2023年保理产品研究报告

第一章 行业概况 1.1 概述 保理&#xff08;Factoring&#xff09;&#xff0c;全称保付代理&#xff0c;又称托收保付&#xff0c;是一种通过将企业的应收账款出售给专业金融机构&#xff08;保理公司&#xff09;来获得资金的融资方式。保理业务通常包括两种类型&#xff1…

数据治理:解决一物多码,多品牌食品集团主数据管理实践

浙江顶誉集团是一家知名的食品加工集团&#xff0c;拥有久久丫、留夫鸭等多个品牌。一直重视企业信息化建设&#xff0c;更是把数字化作为集团的一大发展方向&#xff0c;立志不断加大数字化投入和建设&#xff0c;成为一个数字化的企业。因此&#xff0c;该企业与亿信华辰合作…

如何通过FAQ页面减轻客户支持压力,提高工作效率?

作为现代企业不可或缺的一部分&#xff0c;客户支持服务是为客户提供解决方案、回答问题和解决技术难题的关键部分。无论是产品管理还是销售环节&#xff0c;客户支持都是重要的一环。然而&#xff0c;有效地处理技术支持问题和客户请求并不容易。卓越的客户支持需要组织结构&a…

CCFC22102B 时钟分析

CCFC2012BC基于国芯科技自主PowerPC架构C*Core CPU内核研发&#xff0c;是一款汽车电子中高端车身及网关控制芯片&#xff0c;可广泛应用于车身控制和网关以及新能源车的整车控制&#xff0c;实现对国外产品如NXP&#xff08;恩智浦&#xff09;MPC5604BC、MPC5607B系列以及ST的…

Seurat -- variable features select

brief seurat提供的教学里面包含了Standard pre-processing workflow,workflow包括QC&#xff0c;normalization&#xff0c;scale data &#xff0c;detection of highly variable features。其中 normalization就有蛮多方法的&#xff0c;seurat自己就提供了两种&#xff0c…

OpenGL入门教程之 坐标系统

原文文章 原文链接  本文仅对有代码的地方做讨论。 投影矩阵 创建一个正射投影矩阵 glm::ortho(0.0f, 800.0f, 0.0f, 600.0f, 0.1f, 100.0f);第一二个参数指定了平截头体的左右坐标&#xff0c;第三四个参数指定了平截头体的底部和上部&#xff0c;第五六个参数指定了近平面…

idea基于docker插件部署docker服务

IDEA开发完项目&#xff0c;直接部署至docker上镜像运行&#xff0c;接下来开始体验吧 注意&#xff1a;假定您的项目开发完了&#xff0c;假定你准备好了docker服务哈 没安装docker的来抄作业&#xff08;docker的安装&#xff09; 我的docker所在宿主机的内网ip&#xff1a;1…

银行卡识别OCR:解放金融业务处理效率的黑科技

引言 随着移动支付和电子商务的快速发展&#xff0c;人们越来越依赖银行卡进行交易。而银行卡信息的识别和处理也变得越来越重要。传统的手动输入银行卡信息方式效率低下且容易出错&#xff0c;而采用银行卡识别OCR 技术可以实现快速自动识别银行卡信息&#xff0c;极大地提高…