怎么做联盟网站/个人建网站的详细步骤
Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。
🌈个人主页:主页链接
🌈算法专栏:专栏链接
我会一直往里填充内容哒!
🌈LeetCode专栏:专栏链接
目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出
🌈代码仓库:Gitee链接
🌈点击关注=收获更多优质内容🌈
目录
题目:截断数组
白话讲解:
题解:
代码实现:
题目:激光炸弹
白话讲解:
题解:
代码实现:
题目:k倍区间
题目描述
输入描述
输出描述
输入输出样例
白话讲解:
题解:
代码实现:
完结撒花:
题目:截断数组
给定一个长度为 n 的数组 a1,a2,…,an
现在,要将该数组从中间截断,得到三个非空子数组。
要求,三个子数组内各元素之和都相等。
请问,共有多少种不同的截断方法?
输入格式
第一行包含整数 n。
第二行包含 n个整数 a1,a2,…,an
输出格式
输出一个整数,表示截断方法数量。
数据范围
前六个测试点满足 1≤n≤10。
所有测试点满足 1≤n≤1e5,−10000≤ai≤10000。输入样例1:
4 1 2 3 3
输出样例1:
1
输入样例2:
5 1 2 3 4 5
输出样例2:
0
输入样例3:
2 0 0
输出样例3:
0
白话讲解:
将一个数组中个元素之和三等分,有几种分法
题解:
通过题目所给提示,这题很容易想到用前缀和来处理。
三个非空数组,意味着可以讲三个数组分为两个部分,末端位置到n为一个区间,大小为元素总和的三分之一,0-n-1为元素总和的三分之二。
先判断元素总和是否能被三整除若不能被三整除则无法分成三个区间和,直接输出0即可
之后遍历前缀和数组,若一个区间为大小为三分之一,则记录下来cnt,之后若这个区间后的一个点的大小为三分之二,则说明整个数组被三等分了,则加上前面三等分点的个数。
代码实现:
#include<iostream>
using namespace std;
const int N=100010;
int s[N];
int n=0;
int ans=0;
typedef long long ll ;
ll res;
int main()
{cin>>n;s[0]=0;int x=0;for(int i=1;i<=n;i++){cin>>x;s[i]=s[i-1]+x;}if(s[n]%3)cout<<0;else{ll res=0,cnt=0;for(int j=2;j<n;j++){if(s[j-1]==s[n]/3)cnt++;if(s[j]==s[n]/3*2)res+=cnt;}printf("%lld",res);}return 0;
}
题目:激光炸弹
地图上有 N 个目标,用整数 Xi,Yi 表示目标在地图上的位置,每个目标都有一个价值 Wi。
注意:不同目标可能在同一位置。
现在有一种新型的激光炸弹,可以摧毁一个包含 R×R个位置的正方形内的所有目标。
激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 x,y轴平行。
求一颗炸弹最多能炸掉地图上总价值为多少的目标。
输入格式
第一行输入正整数 N 和 R,分别代表地图上的目标数目和正方形包含的横纵位置数量,数据用空格隔开。
接下来 N行,每行输入一组数据,每组数据包括三个整数 Xi,Yi,Wi,分别代表目标的 x坐标,y坐标和价值,数据用空格隔开。
输出格式
输出一个正整数,代表一颗炸弹最多能炸掉地图上目标的总价值数目。
数据范围
0≤R≤1e9
0<N≤100000,
0≤Xi,Yi≤5000
0≤Wi≤1000输入样例:
2 1 0 0 1 1 1 1
输出样例:
1
白话讲解:
在地图上若干个点放置在财物,之后给你一个炸弹,爆炸范围为R*R的一个正方形,也就是说能框住R*R内的所有财物,如何放置炸弹,损毁的财物价值最大
题解:
一个典型的二维前缀和的问题,讲所有财物的价值存入对应的点,之后进行二位前缀和的处理即可。
注意 虽然R的范围是1e9,但是财物的范围仅为5000,所以我们R的范围只需要比5000大一点即将所有财物包括。
另外,这里受限于内存,最好将元素数组与前缀和数组一起存储,即用一个数组来处理前缀和的关系。
一些优化的做法,若我们前缀和处理的时候直接枚举5000大小的地图,会导致时间效率太低,虽然也能过,但是最好拓展下自己的思维,行列当中不需要枚举5000,枚举到,x,y出现的最大大小就可以了,之后就是处理二位前缀和,不会的话可以看看之前的博客 前缀和
代码实现:
#include <algorithm>
#include<iostream>
using namespace std;
const int N=5010;
int s[N][N]={0};
int main()
{int cnt,r,n,m;int x=0,y=0,w=0;cin>>cnt>>r;r=min(5001,r);n=m=r;while(cnt--){cin>>x>>y>>w;x++,y++;n=max(n,x);m=max(m,y);s[x][y]+=w;}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){s[i][j]=s[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];}}int res=0;for(int i=r;i<=n;i++){for(int j=r;j<=m;j++){res=max(res,s[i][j]+s[i-r][j-r]-s[i-r][j]-s[i][j-r]);}}cout<<res;
}
题目:k倍区间
题目描述
给定一个长度为 N 的数列A1,A2,⋯AN,如果其中一段连续的子序列Ai,Ai+1,⋯Aj ( �≤�i≤j ) 之和是 K 的倍数,我们就称这个区间[i,j] 是 K 倍区间。
你能求出数列中总共有多少个 K 倍区间吗?
输入描述
第一行包含两个整数 N 和 K(1≤N,K≤1e5 )。
以下 N 行每行包含一个整数Ai ( 1≤Ai≤1e5 )
输出描述
输出一个整数,代表 K 倍区间的数目。
输入输出样例
示例
输入
5 2 1 2 3 4 5
输出
6
白话讲解:
找出长度区间内元素和为k的倍数,并统计这样的区间有几个。
题解:
长度区间内的元素,我们很容易就想到用前缀和的方式来处理。所以我们试试用暴力做法怎么去做
进行两层循环(类似双指针)右指针固定区间长度,左指针来遍历这个区间内前缀和,最后判断是否为k的倍数。
某一个区间长度的元素大小s[R]-s[L-1]为R到L的区间内元素的总和。我们要找到是(s[R]-s[L-1])%k=0.等式变换下就成为了 s[R]%k=s[L-1]%k 这时候要做的就变成去找s[L-1]%k何时与s[R]%k相等
我们可以拿一个数组来记录一下s[R]%k相同余数出现的个数 即cnt[s[R]%k]
当res+=该余数出现的次数。这里实现的效果其实为:第一次不会相加。只有第二次才会加上一,第三次加上二.......
另外需要初始化一下cnt[0]=1;
我是这样理解的,假设k=3,你的原始数组为 1 2 3 4 5 此时当i=2时s[2]=3 已经满足了k倍区间,但是因为第一次出现,所以不记录的原则,是不会被计算的。所以就导致答案少了一个。
代码实现:
#include<iostream>
using namespace std;
const int N=100010;
typedef long long ll;
ll s[N],cnt[N];
int main()
{int n=0,k=0;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%lld",&s[i]);s[i]+=s[i-1];}ll res=0;cnt[0]=1;for(int i=1;i<=n;i++){res+=cnt[s[i]%k];cnt[s[i]%k]++;}printf("%lld\n",res);return 0;
}
完结撒花:
🌈本篇博客的内容【】已经结束。
🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。
🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。
🌈诸君,山顶见!
相关文章:

【前缀和】截断数组、K倍区间、激光炸弹
Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...

函数编程:强大的 Stream API
函数编程:强大的 Stream API 每博一文案 只要有人的地方,世界就不会是冰冷的,我们可以平凡,但绝对不可以平庸。—————— 《平凡的世界》人活着,就得随时准备经受磨难。他已经看过一些书,知道不论是普通…...

企业架构图之业务架构图
在TOGAF的世界里面,所有的架构思想都可以通过下面三种类型的图形进行表示。 目录(Catalogs)矩阵(Matrix)图 (Diagram) 其架构图的本质就是用来进行沟通交流,通过架构图和业务团队进…...

监控易网络管理:网络流量分析
1、什么是网络流量分析2、网络流量分析的作用3、为什么要用网络流量分析功能,如何开启什么是网络流量分析简单的来说,网络流量分析就是捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量、分析、统计等,协助发…...

RHCSA-文件内容显示(3.6)
查看命令 cat:显示文件内容 cat -n:显示文件内容的同时显示编号 tac:倒叙查看 head 文件名 (默认显示前10行):显示前10行 tail:显示末尾行数信息 more:查看文件信息,从头…...

Qt多线程文件查找器
⭐️我叫恒心,一名喜欢书写博客的研究生在读生。 原创不易~转载麻烦注明出处,并告知作者,谢谢!!! 这是一篇近期会不断更新的博客欧~~~ 有什么问题的小伙伴 欢迎留言提问欧。 Qt多线程文件查找器 前言 最近在实现一些代码功能的时候,需要找一些多线程样例来学习,于是就…...

源码阅读笔记 InputFormat、FileInputFormat、CombineTextInputFormat
1. InputFormat InputFormat是MapReduce框架提供的用来处理job输入的基类 它主要定义了三个功能: 1.验证job输入是否合法 2.对输入文件进行逻辑切片(InputSplit),然后将每个切片分发给单独的MapTask 3.提供切片读取器(Re…...

二值图像骨架线提取
二值图像骨架线提取HilditchThin算法Rosenfeld算法OpenCV_Contrib中的算法示例其他细化算法查表法HilditchThin的另一种算法参考二值图像骨架线提取算法:HilditchThin算法、Rosenfeld算法、OpenCV_Contrib中的算法 HilditchThin算法 1、使用的8邻域标记为ÿ…...

规划数据指标体系方法(上)——OSM 模型
之前我已经有写过文章讲了数据指标体系的搭建思路,但有同学还是不太清楚要从何入手,今天我就来跟大家讲一讲搭建数据指标体系之前第一步要先做的事情——规划数据指标体系。 规划数据指标体系,在业内有三种比较常见的方法,分别是&…...

做程序界中的死神,继续提升灵力上限
标题解读:标题中的死神,是源自《死神》动漫里面的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招。意旨做程序界中程序员的佼佼者,一步一步最…...

[数据结构]:11-冒泡排序(顺序表指针实现形式)(C语言实现)
目录 前言 已完成内容 冒泡排序实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-PSeqListFunction.cpp 04-SortCommon.cpp 05-SortFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言代…...

Java实验报告经验总结
每一段是每一次实验报告写的经验总结,一共是一学期的内容 文章目录一二三四五六一 ~~~~~分析:这次做程序中也出了不少问题,究其根本还是没有理解清楚各语句功能和其应用。 ~~~~~比如说:当我们在定义浮点数时,数字的后面…...

ESP32使用TCP HTTP访问API接口JSON解析获取数据
ESP32使用TCP HTTP访问API接口JSON解析获取数据API接口代码解析获取时间代码烧录效果总结API接口 单片机常用的API接口基本都是返回的一串JSON格式的数据,这里以ESP32联网获取时间信息作为获取API数据的示例,以便后续移植使用。 很多功能性的API接…...

spring security 实现自定义认证和登录(4):使用token进行验证
前面我们实现了给客户端下发token,虽然客户端拿到了token,但我们还没处理客户端下一次携带token请求时如何验证,我们想要实现拿得到token之后,只需要验证token,不需要用户再携带用户名和密码了。 1. 禁用 UsernamePass…...

戴眼镜检测和识别2:Pytorch实现戴眼镜检测和识别(含戴眼镜数据集和训练代码)
Pytorch实现戴眼镜检测和识别(含戴眼镜数据集和训练代码) 目录 Pytorch实现戴眼镜检测和识别(含戴眼镜数据集和训练代码) 1.戴眼镜检测和识别方法 2.戴眼镜数据集 3.人脸检测模型 4.戴眼镜分类模型训练 (1)项目安装 (2)准…...

信息收集之Google Hacking
Google HackingGoogleHacking作为常用且方便的信息收集搜索引擎工具,它是利用谷歌搜索强大,可以搜出不想被看到的后台、泄露的信息、未授权访问,甚至还有一些网站配置密码和网站漏洞等。掌握了Google Hacking基本使用方法,或许下一…...

【面试题】如何避免使用过多的 if else?
大厂面试题分享 面试题库前后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库一、引言相信大家听说过回调地狱——回调函数层层嵌套,极大降低代码可读性。其实,if-else层层嵌套,如下图…...

oneblog_justauth_三方登录配置【Gitee】
文章目录oneblog添加第三方平台gitee中创建三方应用完善信息oneblog添加第三方平台 1.oneblog管理端,点击左侧菜单 网站管理——>社会化登录配置管理 ,添加一个社会化登录 2.编辑信息如下,选择gitee平台后复制redirectUri,然后去gitee获取clientId和…...

33- PyTorch实现分类和线性回归 (PyTorch系列) (深度学习)
知识要点 pytorch最常见的创建模型的方式, 子类 读取数据: data pd.read_csv(./dataset/credit-a.csv, headerNone) 数据转换为tensor: X torch.from_numpy(X.values).type(torch.FloatTensor) 创建简单模型: from torch import nn model nn.Sequential(nn.Linear(15, 1…...

C++基础——Ubuntu下编写C++环境配置总结(C++基本简介、Ubuntu环境配置、编写简单C++例程)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…...

项目管理中,导致进度失控的五种错误
项目管理中对工期的控制主要是进度控制,在项目进行中中,由于项目时间跨度长,人员繁杂,如果管理不规范,就容易导致项目进度滞后,如何管理好施工进度是管理者需要解决的问题之一。 1、项目计划缺乏执行力 安…...

C# 中的abstract和virtual
重新理解了下关键字abstract,做出以下总结: 1.标记为abstract的类不能实例化,但是依然可以有构造函数,也可以重载构造函数,在子类中调用 2.abstract类中可以有abstract标记的方法和属性,也可以没有,被标记…...

第六十周总结——React数据管理
React数据管理 代码仓库 React批量更新 React中的批量更新就是将多次更新合并处理,最终只渲染一次,来获得更好的性能。 React18版本之前的批量更新 // react 17 react-dom 17 react-scripts 4.0.3 import * as ReactDOM from "react-dom"…...

Springboot之@Async异步指定自定义线程池使用
开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑,比如消息推送、商品同步等都可以使用异步方法,这时我们可以用到Async。但是直接使用 Async 会有风险,当我们没有指定线程池时,他会默认使用其Spring自带的 SimpleAsync…...

视频知识点(23)- TS格式详解指南
*《音视频开发》系列-总览*(点我) 一、格式简介 TS视频封装格式,是一种被广泛应用的多媒体文件格式。它的全称是MPEG2-TS,其中TS是“Transport Stream”的缩写。TS(Transport Stream)流是一种传输流,它由固定长度(188 字节)的 TS 包组成,TS 包是对PES包的一种封装方式…...

linux篇【16】:传输层协议<后序>
目录 六.滑动窗口 (1)发送缓冲区结构 (2)滑动窗口介绍 (3)滑动窗口不一定只会向右移动。滑动窗口可以变大也可以变小。 (4)那么如果出现了丢包, 如何进行重传? 这里分两种情况…...

【C语言】动态内存管理
一.为什么存在动态内存分配? 我们已经掌握的内存开辟方式有:int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间 但是上述的开辟空间的方式有两个特点: 1. 空间开辟大小是固定的。 2. 数组在申明的…...

【Pytorch】AutoGrad个人理解
前提知识:[Pytorch] 前向传播和反向传播示例_友人小A的博客-CSDN博客 目录 简介 叶子节点 Tensor AutoGrad Functions 简介 torch.autograd是PyTorch的自动微分引擎(自动求导),为神经网络训练提供动力。torch.autograd需要对…...

华硕z790让独显和集显同时工作
系统用了一段时间,现在想让显卡主要做深度学习训练,集显用来连接显示器。却发现显示器接到集显接口无信号。 打售后客服也没有解决,现在把解决方案记录一下。 这是客服给的方案: 请开机后进BIOS---Advanced---System Agent (SA)…...

提高编程思维的python代码
1.通过函数取差。举例:返回有差别的列表元素 from math import floordef difference_by(a,b,fn):b set(map(fn, b))return [i for i in a if fn(i) not in b] print(difference_by([2.1, 1.2], [2.3, 3.4], floor))2.一行代码调用多个函数 def add(a, b):return …...