Acwing二分和前缀和(一)

数的范围

原题链接:https://www.acwing.com/problem/content/791/

  1. 整数二分步骤,找一个区间,使得答案一定在区间中。
  2. 找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。
  3. 分析终点在该判断条件下是否成立,根据是否成立,考虑在哪个区间。
  4. 如果更新方式写的是R=Mid,则不用做任何处理。如果写的是L=Mid,则需要在计算Mid时+1。

在本题中:

  • 判断条件就是左右区间的边界。两个端点会划分三个区间,不具二段性。但可以先找左端点,再找右端点。

左端点的判断条件是mid>=x,因为是升序的,如果成立,说明左端点l只会在mid上或mid左侧。
将右端点调整为mid,这样mid只会不变或变小。
现在变小了,说明目前的l并非答案的左区间,中间掺杂了更小的数列,此时需要使左区间l+1。
左端点是通过l查找,l从0累加,不会产生遗漏。
左端点确定之后,右端点从n-1,也就是最右端开始,累减,确定答案的右端点。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>using namespace std;const int N = 100000;
int n, m;
int q[N];int main() {scanf("%d%d", &n, &m);for (int i = 0; i < n; i++) scanf("%d", &q[i]);for (int i = 0; i < m; i++) {int x;scanf("%d", &x);int l = 0, r = n - 1;while (l < r) {int mid = l + r >> 1;if (q[mid] >= x)r = mid;else l = mid + 1;}if (q[r] == x) {cout << r << " ";r = n - 1;while (l < r) {int mid = l + r + 1 >> 1;if (q[mid] <= x)l = mid;else r = mid - 1;}cout << l << endl;} else cout << "-1 -1" << endl;}
}

数的三次方根

原题链接:https://www.acwing.com/problem/content/792/

这里求二分之一不能用位移,因为是浮点数。

#include <iostream>
#include <cstdio>
using namespace std;
double x;
int main() {cin >> x;double l = -100000, r = 100000;while (r - l > 1e-8) {double mid = (l + r) / 2;if (mid * mid * mid < x) l = mid;else r = mid;}printf("%.6f", r);return 0;
}

前缀和

原题链接:https://www.acwing.com/problem/content/797/

image.png

#include<iostream>
#include<cstdio>using namespace std;
const int N = 100010;
int n, m;
int a[N], s[N];int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++) {scanf("%d", a + i);s[i] = s[i - 1] + a[i];}while (m--) {int l, r;scanf("%d%d", &l, &r);printf("%d\n", s[r] - s[l - 1]);}return 0;
}

子矩阵的和

原题链接:https://www.acwing.com/problem/content/798/

如何计算前缀和矩阵?

  • 容斥原理: S x , y = S x − 1 , y + S x , y − 1 − S x − 1 , y − 1 + a x , y S_{x,y}=S_{x-1,y}+S_{x,y-1}-S_{x-1,y-1}+a_{x,y} Sx,y=Sx1,y+Sx,y1Sx1,y1+ax,y

如何利用前缀和矩阵,计算子矩阵的和?

  • 容斥原理: S x 2 , y 2 − S x 2 , y 1 − 1 − S x 1 − 1 , y 2 + S x 1 − 1. y 1 − 1 S_{x_2,y_2}-S_{x_2,y_1-1}-S_{x_1-1,y_2}+S_{x_1-1.y_1-1} Sx2,y2Sx2,y11Sx11,y2+Sx11.y11
#include<iostream>
#include<cstdio>using namespace std;
const int N = 1e3 + 10;
int n, m, q;
int a[N][N], s[N][N];int main() {scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {scanf("%d", &a[i][j]);s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j];}}while (q--) {int x1, y1, x2, y2;scanf("%d%d%d%d", &x1, &y1, &x2, &y2);printf("%d\n", s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1]);}return 0;
}

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

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

相关文章

toString()、equals()、clone()用法

Java中所有类的对象都可以直接使用Object类中提供的一些方法 1. toString()&#xff1a;返回对象的字符串表示形式&#xff0c;通常在类中重写&#xff0c;以便于返回的是对象的内容 2. equals()&#xff1a;判断两个对象的地址是否相等&#xff0c;直接使用也一样&#xff0c;…

社区店选址地理位置评估:大数据分析的力量

大家好&#xff0c;我是一名有着 5 年开店经验的鲜奶吧创业者。在这 5 年的时间里&#xff0c;我深切地体会到了选址对于一家社区鲜奶吧的重要性。一个好的地理位置可以为你的店铺带来源源不断的客流&#xff0c;而一个糟糕的位置则可能让你的创业之路充满坎坷。 在这里&#…

Qt之条件变量QWaitCondition详解

QWaitCondition内部实现结构图&#xff1a; 相关系列文章 C之Pimpl惯用法 目录 1.简介 2.示例 2.1.全局配置 2.2.生产者Producer 2.3.消费者Consumer 2.4.测试例子 3.原理分析 3.1.辅助函数CreateEvent 3.2.辅助函数WaitForSingleObject 3.3.QWaitConditionEvent …

一个小例子,告诉你什么是衍生式设计

之前好多小伙伴想让我介绍介绍Dynamo与衍生式设计&#xff0c;奈何最近太忙了&#xff0c;实在没时间弄这些~趁着端午节&#xff0c;今天用一个小案例&#xff0c;先简单让大家对衍生式设计有个初步认识&#xff0c;之后有时间&#xff0c;我再多写几篇关于这方面的文章&#x…

Java使用opencsv完成对csv批量操作

文章目录 前言一、maven二、造数三、代码部分1.OpenCsvController2.OpenCsvUtil3.StudentInfo4.CodeToValue 三、效果展示1.download2.upload 总结 前言 csv文件是不同于excel文件的另一种文件&#xff0c;常常以,作为分隔符&#xff0c;本篇将通过JavaBean的形式完成对csv文件…

Linux_进程地址空间

我们用c语言写的程序&#xff0c;经过编译后形成可执行程序存放在硬盘。当运行该程序时&#xff0c;操作系统将该程序加载到内存中&#xff0c;创建进程控制块&#xff0c;变为进程&#xff0c;然后开始执行该程序。大家是否想过&#xff0c;操作系统是如何加载的呢&#xff1b…

25天物理探索旅程 - 第三天:相对论时空观的构建

第三天的课堂&#xff0c;我们将踏上一段穿越时空的奇幻旅程&#xff0c;探索那个由爱因斯坦用天才智慧构建起来的相对论世界。想象一下&#xff0c;你手握一把名为“狭义相对论”的神奇钥匙&#xff0c;准备开启一扇通往全新宇宙观的大门。 首先&#xff0c;我们来聊聊同时性…

【c语言】字符串常见函数 下

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;c语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&a…

幻兽帕鲁Palworld服务器设置参数(汉化)

创建幻兽帕鲁服务器配置参数说明&#xff0c;Palworld服务器配置参数与解释&#xff0c;阿腾云atengyun.com分享&#xff1a; 自建幻兽帕鲁服务器教程&#xff1a; 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

如何使用idea连通服务器上的Redis(详细版本)

这里我使用的是阿里云的服务器 打开阿里云的安全组&#xff0c;设置端口为6379 在redis.conf文件中&#xff0c;注释bind 127.0.0.1 将protected-mode设置为no&#xff0c;即关闭保护模式 更改服务器中的防火墙&#xff0c;放行6379端口 # 放行端口 firewall-cmd --zo…

Nacos 的配置管理和配置热更新

一、配置管理的必要性 1. 存在问题 微服务重复配置过多维护成本高&#xff1a;将各个微服务的配置都写到配置管理服务中&#xff0c;单个微服务不去编写配置&#xff0c;而是到配置管理服务中读取配置&#xff0c;实现配置共享&#xff0c;便于修改和维护 业务配置经常变动&a…

【AI视野·今日CV 计算机视觉论文速览 第299期】Mon, 29 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 29 Jan 2024 Totally 55 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Annotated Hands for Generative Models Authors Yue Yang, Atith N Gandhi, Greg TurkGAN 和扩散模型等生成模型已经展示了…

C++:priority_queue模拟实现

C&#xff1a;priority_queue模拟实现 什么是priority_queue模拟实现向上调整算法向下调整算法插入与删除 仿函数 什么是priority_queue priority_queue称为优先级队列。优先级队列是一种特殊的队列&#xff0c;其中每个元素都有一个相关的优先级。元素的优先级决定了它们在队…

Python数学建模之回归分析

1.基本概念及应用场景 回归分析是一种预测性的建模技术&#xff0c;数学建模中常用回归分析技术寻找存在相关关系的变量间的数学表达式&#xff0c;并进行统计推断。例如&#xff0c;司机的鲁莽驾驶与交通事故的数量之间的关系就可以用回归分析研究。回归分析根据变量的…

论文阅读:GamutMLP A Lightweight MLP for Color Loss Recovery

这篇文章是关于色彩恢复的一项工作&#xff0c;发表在 CVPR2023&#xff0c;其中之一的作者是 Michael S. Brown&#xff0c;这个老师是加拿大 York 大学的&#xff0c;也是 ISP 领域的大牛&#xff0c;现在好像也在三星研究院担任兼职&#xff0c;这个老师做了很多这种类似的工…

系统架构25 - 软件架构设计(4)

软件架构复用 软件产品线定义分类原因复用对象及形式基本过程 软件产品线 软件产品线是指一组软件密集型系统&#xff0c;它们共享一个公共的、可管理的特性集&#xff0c;满足某个特定市场或任务的具体需要&#xff0c;是以规定的方式用公共的核心资产集成开发出来的。即围绕…

九、OpenCV自带colormap

项目功能实现&#xff1a;每隔1500ms轮流自动播放不同风格图像显示&#xff0c;按下Esc键退出 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 colormap.h #pragma once #include<opencv2/opencv.hpp> using namespace cv;class ColorMap { public:vo…

Mybatis开发辅助神器p6spy

Mybatis什么都好&#xff0c;就是不能打印完整的SQL语句&#xff0c;虽然可以根据数据来判断一二&#xff0c;但始终不能直观的看到实际语句。这对我们想用完整语句去数据库里执行&#xff0c;带来了不便。 怎么说呢不管用其他什么方式来实现完整语句&#xff0c;都始终不是Myb…

《Linux 简易速速上手小册》第6章: 磁盘管理与文件系统(2024 最新版)

文章目录 6.1 磁盘分区与格式化6.1.1 重点基础知识6.1.2 重点案例&#xff1a;为新硬盘配置分区和文件系统6.1.3 拓展案例 1&#xff1a;创建交换分区6.1.4 拓展案例 2&#xff1a;使用 LVM 管理分区 6.2 挂载与卸载文件系统6.2.1 重点基础知识6.2.2 重点案例&#xff1a;挂载新…

近十年金融资产收益率

通过掌握大类资产的历年收益率数据&#xff0c;做基于数据的投资&#xff0c;提高胜率和收益率。 下面是同花顺梳理的2014至2023大类金融资产收益率&#xff1a; 基于这个数据&#xff0c;我们再统计两项指标&#xff1a; 1. 每种资产在近十年的投资胜率&#xff08;收益率为…