2024牛客寒假算法基础集训营4

D.守恒

阿宁有一个长度为 n 正整数数组 a。
可以进行任意次操作,每次操作选择数组 a 的两个元素,其中一个加 1,另一个减 1,要求每次操作后 a 的各元素仍然是正整数。
阿宁想知道操作结束后,数组的最大公约数可能有多少种不同的值?

数组的最大公约数指,该数组的所有数共有约数中最大的那个数。
例如数组 [20,12,16],共有的约数有 1,2,4,最大的数是 4,因此 [20,12,16] 的最大公约数是 4。

输入
第一行输入一个整数 n (1 ≤ n ≤ 2e5)。
第二行输入 n 个整数 ai (1 ≤ ai ≤ 2e5)。
 
输出
输出一个整数。

Input
3
2 4 8

Output
2

解析:
因为加一减一,和是不变的。
假设这些数的和是sum,这道题的本质上就是求,在sum的因子中,有多少个因子能把sum分解的个数是大于等于 n 个的。
当然,当 n=1时,要特判一下。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
int gcd(int a,int b) { return b? gcd(b,a%b) : a; }
typedef pair<int,int> PII;
const double PI=acos(-1.0);
const int N=2e5+10;
int n;
int a[N];
void solve()
{cin>>n;int sum=0;for (int i=1;i<=n;i++) cin>>a[i],sum +=a[i];if (n==1){cout<<1;return ;}int cnt=0;for (int i=1;i<=sum/i;i++){if (sum%i==0){if (i*i==sum){if (sum/i>=n) cnt++;}else {if (sum/i>=n) cnt++;if (i>=n) cnt++;}}}cout<<cnt;
}
signed main()
{ios;int T=1;//cin>>T;while (T--) solve();return 0;
}

E.漂亮数组

阿宁认为一个数组是漂亮数组,该数组需要存在一个总和是 k 的倍数的子数组。
现在阿宁有一个长度为 n 的数组 a,阿宁想要将数组 a 分割出若干个数组。
分割出的数组需要满足,按照分割顺序合并可以得到原数组a。
阿宁想知道将数组 a 分割,最多可以获得多少个漂亮数组?

输入
第一行输入两个整数 n,k (1 ≤ n ≤ 2e5,1 ≤ k ≤ 1e9)。
第二行输入 n 个整数 ai (1 ≤ ai ≤1e9)。
 
输出
输出一个整数。

Input
6 3
1 1 4 5 1 4

Output
2

解析:
贪心,对于 i 找它的左边离他最近的 j 使 [j,i] 的和为 k 的倍数。
前往后遍历,如果(从上个割点开始的)前缀和对 k 的余数,在位置 j 和位置 i 的相同,说明区间 [j+1,i]的和能整除 k ,(其中 j<i)。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
int gcd(int a,int b) { return b? gcd(b,a%b) : a; }
typedef pair<int,int> PII;
const double PI=acos(-1.0);
const int N=510;
set <int> s;
int n,k;
void solve()
{cin>>n>>k;int x,sum=0;s.insert(0);int cnt=0;for (int i=1;i<=n;i++){cin>>x;sum +=x;if (s.count(sum%k)) cnt++,sum=0,s.clear(),s.insert(0);else s.insert(sum%k);}cout<<cnt;
}
signed main()
{ios;int T=1;//cin>>T;while (T--) solve();return 0;
}

G.数三角形(easy)

阿宁认为一个大小为 x 的等腰三角形底边长度是 2×x+1,高是 x+1。
等腰三角形不可以旋转,并且形态只能是下面举例的形态。
以下分别是 1,2,3 的等腰三角形:


在一个字符矩阵中,三角形可以共用 '*'。因此上述举例中,大小为 2 和大小为 3 的三角形,都有两个大小为 1 的三角形。
现在给出一个 n 行 m 列的仅包含 '*' 和 '.' 的矩阵, 阿宁想要数一下有多少个满足要求的等腰三角形?

输入
第一行输出两个整数 n,m (1 ≤ n,m ≤ 500),表示字符矩阵大小。
接下 n 行,每行 m 个字符,表示所给的矩阵。字符仅包含 '*' 和 '.'。

输出
输出一个整数,表示等腰三角形的数量。

Input1
3 5
..*..
.*.*.
*****

Output1
3

Input2
3 5
..*..
.***.
*****

Output2
5

解析:
枚举三角形的最上面那个点,然后用一个前缀和来看下面是否有一条线。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
int gcd(int a,int b) { return b? gcd(b,a%b) : a; }
typedef pair<int,int> PII;
const double PI=acos(-1.0);
const int N=510;
char g[N][N];
int s[N][N];
int n,m;
void solve()
{cin>>n>>m;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)cin>>g[i][j];for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){s[i][j]=s[i][j-1];if (g[i][j]=='*') s[i][j]++;}int cnt=0;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){if (g[i][j]=='*'){int k=i+1,l=j-1,r=j+1;while (k<=n&&l>=1&&r<=m&&g[k][l]=='*'&&g[k][r]=='*') {if (s[k][r]-s[k][l-1]==r-l+1) cnt++;k++,l--,r++;}}}cout<<cnt;
}
signed main()
{ios;int T=1;//cin>>T;while (T--) solve();return 0;
}

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

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

相关文章

基于微信小程序的比赛赛程管理系统设计与实现

在全面健身的倡导下通过各级赛事的举办完成体育人才的选拔&#xff0c;当由于缺乏信息化的管理手段而只能通过人工完成比赛报名、赛程制定及成绩记录等流程的管理&#xff0c;因此常常因意外而导致比赛赛程管理不善、成绩不理想等问题出现。为了帮助比赛组织者优化赛程管理流程…

Java 那些诗一般的 数据类型 (1)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

善于利用GPT确实可以解决许多难题

当我设计一个导出Word文档的功能时&#xff0c;我面临了一个挑战。在技术选型时&#xff0c;我选择了poi-tl这个模板引擎&#xff0c;因为在网上看到了很多关于它的推荐。poi-tl可以根据模板快速导出Word文档。虽然之前没有做过类似的功能&#xff0c;而且项目中也没有用过&…

基于Python的热点分析预警系统

项目&#xff1a;基于Python的热点分析预警系统 摘 要 基于网络爬虫的数据可视化服务系统是一种能自动从网络上收集信息的工具&#xff0c;可根据用户的需求定向采集特定数据信息的工具&#xff0c;本项目通过研究爬取微博网来实现微博热点分析数据信息可视化系统功能。对于采…

顺序表详解(SeqList)

本文使用C语言进行顺序表的代码实现。 博主将使用代码和相关知识相结合的方式进行讲解&#xff0c;简单易懂&#xff0c;懵懂的大学生一听就会~ 顺序表是一种线性表的存储结构&#xff0c;它将数据元素存储在一段连续的存储空间中&#xff0c;每个元素占据一个存储单元&#x…

Java入门-可重入锁

可重入锁 什么是可重入锁? 当线程获取某个锁后&#xff0c;还可以继续获取它&#xff0c;可以递归调用&#xff0c;而不会发生死锁&#xff1b; 可重入锁案例 程序可重入加锁 A.class,没有发生死锁。 sychronized锁 package com.wnhz.lock.reentrant;public class Sychroniz…

【Linux】git操作 - gitee

1.使用 git 命令行 安装 git yum install git 2.使用gitee 注册账户 工作台 - Gitee.com 进入gitee&#xff0c;根据提示注册并登录 新建仓库 仓库名称仓库简介初始换仓库 3.Linux-git操作 进入仓库&#xff0c;选择“克隆/下载” 复制下面的两行命令进行git配置 然后将仓库clo…

搜索中关于稀疏检索和稠密向量检索的召回效果比较

不同检索方式说明 最近在做搜索召回提升相关的研究工作。对比了稀疏检索和稠密向量检索的效果。其中使用的搜索引擎为elasticsearch8.x版本。稀疏检索包括BM25的检索方式&#xff0c;以及es官方在8.8之后版本提供的稀疏向量模型的方式。稠密向量检索&#xff0c;是指借助机器学…

基于springboot实现的音乐网站

一、系统架构 前端&#xff1a;html | js | css | bootstrap 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk1.8 | mysql | maven 二、 代码及数据库 三、功能介绍 01. 登录页 02. 用户注册 03. 首页 04. 喜欢 05. 查询

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码&#xff0c;而这次需要分析的就是78、79行的两个中断。首先&#xff0c;需要确认NVIC_SYSPRI2寄存器的作用。 进一…

【dc-dc】世微AP5125 外置MOS 5-100V 8A平均电流型LED降压恒流驱动器 SOT23-6

产品描述 AP5125 是一款外围电路简单的 Buck 型平均电流检测模式的 LED 恒流驱动器&#xff0c;适用于 8-100V 电压范围的非隔离式大功率恒流 LED 驱动领域。芯片采用固定频率 140kHz 的 PWM 工作模式&#xff0c; 利用平均电流检测模式&#xff0c;因此具有优异的负载调整 率特…

SICTF round#3 web

1.100&#xff05;_upload url可以进行文件包含&#xff0c;但是flag被过滤 看一下源码 <?phpif(isset($_FILES[upfile])){$uploaddir uploads/;$uploadfile $uploaddir . basename($_FILES[upfile][name]);$ext pathinfo($_FILES[upfile][name],PATHINFO_EXTENSION);$t…

Linux程序性能分析60秒+

Linux性能分析大师Brendan Gregg有一篇非常著名的博客&#xff0c;介绍在性能分析开始的60秒内&#xff0c;利用标准的Linux命令行工具&#xff0c;执行一次充分的性能检查&#xff0c;获得系统资源利用率和进程运行情况的整体概念&#xff0c;查看是否存在异常、评估饱和度。本…

【数据结构】二叉树的三种遍历

目录 一、数据结构 二、二叉树 三、如何遍历二叉树 一、数据结构 数据结构是计算机科学中用于组织和存储数据的方式。它定义了数据元素之间的关系以及对数据元素的操作。常见的数据结构包括数组、链表、栈、队列、树、图等。 数组是一种线性数据结构&#xff0c;它使用连续…

com.alibaba.fastjson.JSONException: toJSON error的原因

问题&#xff1a; 导出接口报错&#xff0c;显示json格式化异常 发现问题&#xff1a; 第一个参数为HttpResponse,转换成json的时候报错 修改方法&#xff1a; 1.调换两个参数的位置 2.在aop判断里边 把ServletAPI过滤掉 Before("excudeWebController()")pub…

苍穹外卖学习-----2024/02/21

1.新增员工 /*** 处理SQL异常* param sqlIntegrityConstraintViolationException* return*/ExceptionHandlerpublic Result exceptionHandler(SQLIntegrityConstraintViolationException sqlIntegrityConstraintViolationException){//String message sqlIntegrityConstraintV…

String字符串,FastJson常用操作方法

JSON字符串操作 1、创建配置环境 # 引入测试包testImplementation group: org.springframework.boot, name: spring-boot-starter-test, version: 2.2.6.RELEASE # 创建测试类RunWith(SpringRunner.class)SpringBootTestpublic class JsonTest {Testpublic void test(){Syste…

第100讲:MHA+Atlas实现MySQL主从复制读写分离分布式集群

文章目录 1.Atlas读写分离简介2.搭建MHA高可用MySQL主从复制集群3.部署配置Atlas读写分离中间件3.1.安装Atlas读写分离中间件3.2.配置读写分离3.3.启动Atlas读写分离 4.读写分离集群测试5.生产环境中创建一个用户通过Atlas使用6.Atlas通过管理接口实现在线管理7.Atlas自动分表 …

Linux下解压tar.xz文件的命令

tar -c: 建立压缩档案-x&#xff1a;解压-t&#xff1a;查看内容-r&#xff1a;向压缩归档文件末尾追加文件-u&#xff1a;更新原压缩包中的文件 ------------------------------------------ 这五个是独立的命令&#xff0c;压缩解压都要用到其中一个&#xff0c;可以和别的…

【 Maven 】花式玩法之多模块项目

目录 一、认识Maven多模块项目 二、maven如何定义项目的发布策略 2.1 版本管理 2.2 构建配置 2.3 部署和发布 2.4 依赖管理 2.5 发布流程 三、使用Jenkins持续集成Maven项目 四、总结 如果你有一个多模块项目&#xff0c;并且想将这些模块发布到不同的仓库或目标位置&…