【蓝桥每日一题]-前缀和与差分(保姆级教程 篇3)#涂国旗 #重新排序

news2024/12/24 3:47:05

目录

题目:涂国旗

 思路:

题目:重新排序

 思路:


题目:涂国旗

      

 思路:

乍一看好像没啥思路,但是我们需要涂最少的格子,所以要都尝试一下才行,也就是从上面开始白至少一行,蓝若干行,红至少一行。

     

那么其实我们看到只需要控制好两个分割线即可。上面都是白,中间都是蓝,最下面都是红。然后比较每种情况所需要的最少代价即可。

     

最好是使用一下前缀和优化一下,这样答案就可以O(1)速度输出。

怎么前缀和呢?我们设置w[i]表示前面i行都涂成w颜色需要的代价即可!

#include <iostream>
#include <string>
using namespace std;
int n,m;string s;
inline int check(char c)      //化二维前缀和为一维前缀和
{
	int tol=0;
	for(int i=0;i<m;i++)
		if(s[i]!=c)tol++;	
	return tol;	
}
int main()
{
	cin>>n>>m;int w[n+1]={0},r[n+1]={0},b[n+1]={0};int ans=100000;  //ans必须很大
	for(int i=1;i<=n;i++)
	{	cin>>s;
		w[i]=w[i-1]+check('W');
		r[i]=r[i-1]+check('R');
		b[i]=b[i-1]+check('B');
	}
	for(int i=1;i<n-1;i++)
		for(int j=i+1;j<n;j++)
		 ans=min(ans,w[i]+b[j]-b[i]+r[n]-r[j]);    //根据公式,遍历出最小的即可
		cout<<ans;
		return 0;
}

      

     

题目:重新排序

题意:对于一个长n的数组查询m次[l,r]区间,要想使所有查询和最大,我们就要排个序,现在就问排序后所以查询区间的总和相比原来可以增加多少?

       

思路:

我们只要关注哪个位置能重复加多少次即可,当然要让更大的数来重复加最多的次数,那么只需要统计有多少个位置可以各自重复加多少次。

     

当然暴力是过不去的。我们需要优化一下。

    
其实就是差分序列思想,先标记都那个地方加,哪个地方减,然后统一前缀和求出最终效果,这就是每个元素出现的次数,然后减去之前的和就行了
 

#include<bits/stdc++.h>     
using namespace std;      
typedef long long ll;
const int N = 1e6 + 5;
int a[N];
ll cnt[N];//前缀和数组,必须开long long
int diff[N];//定义差分数组diff
int n,m,l,r;
ll sum1=0, sum2=0;//原数组和新数组和
int main() {
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i];
    cin>>m;
    while (m--) {
        cin>>l>>r;
        diff[l]++; //进行差分
        diff[r+1]--;
    }
    for (int i=1; i<=n; i++) { //利用差分数组计算前缀和cnt数组
        cnt[i]=cnt[i-1]+diff[i];
    }
    for (int i=1; i<=n; i++) sum1+=a[i]*cnt[i];
    sort(a+1, a+1+n); 
    sort(cnt+1, cnt+1+n);
    for (int i=1; i<=n; i++) sum2+=a[i]*cnt[i];
    cout << sum2-sum1<< endl;
    return 0;
}

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

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

相关文章

SpringBoot 公司推广系统 公司广告系统

SpringBoot 公司推广系统 公司广告系统 系统功能 首页功能: 广告展示 方案列表 站内搜索 资讯 查看详细咨询 登录注册 收藏 咨询方案 在线客服实时聊天 后台管理功能: 系统管理分为: 用户管理 角色管理 客户管理 首页轮播管理 公告管理 方案管理: 方案管理 资讯管理: 类型管…

【OJ for Divide and Conquer】OJ题解

文章目录 A - Ultra-QuickSortB - Hanoi Tower Troubles Again! [找规律递归]C - Fibonacci Again[找规律]E - [Fire Net](https://programmerall.com/article/7276104269/)[DFS 搜索 ⭐⭐]F - Gridland[找规律]G - Maximum Subarray Sum[动态规划/分治..经典⭐]I - Quoit Desi…

在线运行C++的网站(欢迎补充)

1、https://cpp.sh/ 谷歌打开&#xff0c;好用 2、https://godbolt.org/ 会显示汇编

Beyond Compare4 30天试用到期的解决办法

相信很多小伙伴都有在使用Beyond Compare 4软件&#xff0c;如果我们没有激活该软件&#xff0c;就只有30天的评估使用期&#xff0c;那么过了这30天后我们怎么继续使用呢&#xff1f;下面小编就来为大家介绍方法。 打开Beyond Compare4&#xff0c;提示已经超出30天试用期限制…

单目深度估计之图像重构原理解析

一、参考资料 浅析自监督深度估计中的光度损失(Photometric Loss) 二、图像重构原理 设输入位姿估计网络的3帧连续单目序列为 < I t − 1 , I t , I t 1 > <I_{t-1},I_{t},I_{t1}> <It−1​,It​,It1​>&#xff0c;其中 t t t 为时间索引&#xff0c;…

Java SE 学习笔记(十九)—— XML、设计模式

目录 1 XML1.1 XML 概述1.2 XML 语法规则1.3 XML 文档约束&#xff08;了解&#xff09;1.3.1 DTD 约束1.3.2 schema 约束 2 XML 解析2.1 XML 解析概述2.2 Dom4J 解析 XML 文件2.3 XML 解析案例 3 XML 检索4 设计模式4.1 工厂模式4.2 装饰模式 1 XML 在有些业务场景下&#xff…

文心一言 VS 讯飞星火 VS chatgpt (123)-- 算法导论10.4 4题

四、用go语言&#xff0c;对于一个含 n个结点的任意有根树&#xff0c;写出一个 O(n)时间的过程&#xff0c;输出其所有关键字该树以左孩子右兄弟表示法存储。 文心一言&#xff1a; 在计算机科学中&#xff0c;左孩子右兄弟表示法是一种用于表示树状结构的方法&#xff0c;其…

springboot--基本特性--自定义 Banner

SpringApplication的使用 前言效果1.1 自定义banner1.2 自定义SpringApplication配置文件优先级高于程序化调整的优先级启动自定义banner关闭自定义banner 1.3 FluentBuilder API 前言 修改启动时候的修改banner 效果 1.1 自定义banner banner制定官网链接 在配置文件中设置…

sentinel规则持久化-规则同步nacos-最标准配置

官方参考文档&#xff1a; 动态规则扩展 alibaba/Sentinel Wiki GitHub 需要修改的代码如下&#xff1a; 为了便于后续版本集成nacos&#xff0c;简单讲一下集成思路 1.更改pom 修改sentinel-datasource-nacos的范围 将 <dependency><groupId>com.alibaba.c…

Qt之DLL的使用(关联DLL生成篇)

文章目录 一、示例二、使用步骤1.所需文件2.添加库3.选择库4.完成添加5.导入类使用 相关文章 一、示例 下图为使用DLL的示例图 二、使用步骤 1.所需文件 将所需要使用的相关库&#xff08;导出项目的库&#xff0c;包括Debug和Release两个编译模式的库&#xff0c;缺少某个…

【算法优选】前缀和专题——叁

文章目录 &#x1f60e;前言&#x1f334;[和为K的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/description/)&#x1f6a9;题目描述&#x1f6a9;思路解析&#x1f6a9;代码实现 &#x1f384;[和可被 K 整除的子数组](https://leetcode.cn/problems/subarra…

【观察】Dell APEX云平台:引领多云时代上云新范式

毫无疑问&#xff0c;过去十多年是云计算发展的黄金十年&#xff0c;云计算理念不断被市场所接受&#xff0c;但随着企业上云深入和认知度的不断增加&#xff0c;摆在很多企业面前的选择题也发生了新变化&#xff0c;即从过去企业上云或不上云的纠结&#xff0c;转变成今天如何…

在pycharm中,远程操作服务器上的jupyter notebook

一、使用场景 现在我们有两台电脑&#xff0c;一台是拥有高算力的服务器&#xff0c;另一台是普通的轻薄笔记本电脑。如何在服务器上运行jupyter notebook&#xff0c;同时映射到笔记本电脑上的pycharm客户端中进行操作呢&#xff1f; 二、软件 pycharm专业版&#xff0c;jupy…

从一线到联合,克唑替尼在ALK阳性NSCLC治疗新旅程【医游记】

&#xff08;图片来源于网络&#xff09; 一、克唑替尼简介 克唑替尼(Crizotinib),商品名赛可瑞,是一款口服服用的小分子酪氨酸激酶抑制剂。克唑替尼最早于2011年被美国FDA批准用于ALK阳性晚期NSCLC的治疗。其主要靶点为间变淋巴瘤激酶(ALK)和ROS1(ROS proto-oncogene 1)融合…

Beyond Compare4 30天试用到期的2024最新解决办法

对于有文档对比需求的小伙伴们来说&#xff0c;Beyond Compare这款软件一定不陌生&#xff0c;这款软件是一款功能非常强大的文档对比软件。同时这款软件也是一款付费软件&#xff0c;需要用户付费才能够享有Beyond Compare的永久使用权&#xff0c;不过在付费之前&#xff0c;…

【OpenCV实现图像梯度,Canny边缘检测】

文章目录 概要图像梯度Canny边缘检测小结 概要 OpenCV中&#xff0c;可以使用各种函数实现图像梯度和Canny边缘检测&#xff0c;这些操作对于图像处理和分析非常重要。 图像梯度通常用于寻找图像中的边缘和轮廓。在OpenCV中&#xff0c;可以使用cv2.Sobel()函数计算图像的梯度…

部署私有仓库(笔记docker应用)

二&#xff1a;部署私有仓库 docker pull daocloud.io/library/registry:latest docker run --restartalways -d -p 5000:5000 daocloud.io/library/registry systemctl stop firewalld systemctl restart docker 宿主机ip端口 curl -I 127.0.0.1:5000 将镜像存放在仓…

[C++进阶篇]STL以及string的使用

目录 1. 什么是STL 2. STL库的六大组件 3. 标准库中的string类 3.3 对比size和capacity接口函数 size代表字符串有效长度 capacity代表字符串的实际长度 3.4 reserve&#xff0c;resize函数的使用 3.5 string类的访问和遍历 4. string的修改操作 5. insert和e…

3DMAX快速瓦片屋顶铺设插件使用方法详解

3DMAX快速瓦片屋顶铺设插件教程 3DMAX快速瓦片屋顶铺设插件&#xff0c;一键生成瓦片屋顶、瓦脊的插件&#xff0c;是一款非常实用的古风建筑建模插件。 【适用版本】 3dMax7或更新版本 【使用方法】 提示&#xff1a;建议使用本插件进行工作时&#xff0c;将3dMax单位设置为…

松下A6B伺服 马达不动问题解决

本人在用信捷XDH plc ethercat总线&#xff0c;连松下A6B伺服&#xff0c;轴配置完成轴调试时&#xff0c;出现能使能&#xff0c;但 马达不动的情况。 开始总怀疑时信捷PLC的原因&#xff0c;后面查明是输入口定义引起的。 用USB线连接伺服&#xff0c;打开PANAPARM软件,自…