当前位置: 首页 > article >正文

笔试专题(九)

文章目录

  • 十字爆破(暴力)
    • 题解
    • 代码
  • 比那名居的桃子(滑动窗口/前缀和)
    • 题解
    • 代码
  • 分组(暴力枚举 + 优化二分)
    • 题解
    • 代码

十字爆破(暴力)

题目链接

题解

1. 暴力 + 预处理
2. 如果单纯的暴力写法是会超时的,遍历n*m的矩阵和每次在循环里求当前行和列,n * m * (n+m)->2e9的时间复杂度
3. 在输入的时候就预处理每一行的和和每一列的和,可以在后面输出的时候直接用,row[i] + col[j] - a[i][j],注意一个细节就是当前点会加两次,减去一次

代码

#include<iostream>using namespace std;
typedef long long ll;
ll n,m;
const int N = 1e6 + 10;
ll row[N];// 行
ll col[N];// 列int main()
{scanf("%lld %lld",&n,&m);ll a[n][m];for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){scanf("%lld",&a[i][j]);// 预处理每一行// 预处理每一列row[i] += a[i][j];col[j] += a[i][j];}}    for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){printf("%lld ",row[i] + col[j] - a[i][j]);}cout << '\n';}return 0;
}

比那名居的桃子(滑动窗口/前缀和)

题目链接
在这里插入图片描述

题解

1. 暴力解法是维护一个长度为k的区间,每次都要重新从一个点出发走k个点的距离
2. 滑动窗口是两个指针维护一个k大小的固定区间,每次找到happy值大的区间更新begin,如果happy值相同的话并且羞耻值小的话,更新begin,注意一下细节,天数是从1开始的
3. 前缀和也是维护一个区间的快乐值和羞耻度,思路和滑动窗口是一样的

在这里插入图片描述
优先级最高的就是快乐值多的,其次就是快乐值相同,羞耻度小的优先,快乐值和羞耻度都相等是不用判断的,因为在前面判断的有一个这种值,后面也不更新,不就是最早的了
在这里插入图片描述

代码

// 滑动窗口
#include<iostream>using namespace std;typedef long long ll;
const int N = 1e5 + 10;
ll h[N],s[N];// 快乐值和羞耻度
ll n,k;int main()
{cin >> n >> k;for(int i = 0;i < n;i++) cin >> h[i];for(int i = 0;i < n;i++) cin >> s[i];ll hMax = 0,sMin = 0;ll hSum = 0,sSum = 0,begin = 0,left = 0,right = 0;while(right < n){// 进窗口hSum += h[right];sSum += s[right];// 判断出窗口while(right - left + 1 > k){hSum -= h[left];sSum -= s[left];left++;}// 更新结果if(right - left + 1 == k){if(hSum > hMax){hMax = hSum;sMin = sSum;begin = left;}if(hSum == hMax && sSum < sMin){hMax = hSum;sMin = sSum;begin = left;}}right++;}cout << begin + 1<< '\n';return 0;
}
// 前缀和
#include<iostream>using namespace std;typedef long long ll;
ll n,k;
const int N = 1e5 + 10;
int a[N];// happy
int b[N];// shy
ll h[N];
ll s[N];int main()
{cin >> n >> k;for(int i = 1;i <= n;i++) cin >> a[i];for(int i = 1;i <= n;i++) cin >> b[i];for(int i = 1;i <= n;i++) {h[i] = h[i-1] + a[i];s[i] = s[i-1] + b[i];}ll left = 1,right = k,hMax = 0,sMin = 0;ll hSum = 0,sSum = 0,begin;while(right <= n){hSum = h[right] - h[left-1];sSum = s[right] - s[left-1];if(hSum > hMax){hMax = hSum;sMin = sSum;begin = left;}else if(hSum == hMax && sSum < sMin){hMax = hSum;sMin = sSum;begin = left;}left++;right++;}cout << begin << '\n';return 0;
} 

分组(暴力枚举 + 优化二分)

题目链接
在这里插入图片描述

题解

1. 方法一:暴力枚举
2. 如果声部的数量大于小组的数量,那么无法分配,会输出-1,题意理解,让人数多的小组也尽可能要少的人数
3. 可以枚举每组的人数,从小到大枚举,统计每个声部可以分成的组数,这些组数相加,如果小于等于m,就是合法的,hmax是某种声部人数最多的,可以分成一组的最大人数
4. 第二种方法:二分法,产生了一个二段性,check(mid) <= m(合法的)和check(mid) > m(不合法的),合法的在右边,right = mid,不合法的在左边,left = mid + 1

在这里插入图片描述
在这里插入图片描述

代码

#include<iostream>
#include<unordered_map>
#include<algorithm>
using namespace std;unordered_map<int,int> cnt;// <种类,人数> 统计每种声部的人数
int n,m;bool check(int k)
{int ans = 0;for(auto& [a,b] : cnt){ans += b / k + (b % k == 0 ? 0 : 1);}return ans <= m;
}int main()
{cin >> n >> m;int hashmax = 0;// 统计可以枚举的最多的人数for(int i = 0;i < n;i++){int x;cin >> x;hashmax = max(hashmax,++cnt[x]);}int k = cnt.size();// 声部的种类// 声部的种类大于组数是无法分的if(k > m){cout << -1 << '\n';}else{//for(int i = 1;i <= hashmax;i++)//{//  if(check(i)) //{//  cout << i << '\n'; // break;// }//}// 二分int l = 1,r = hashmax;while(l < r){int mid = (l + r) / 2;if(check(mid)) r = mid;else l = mid + 1;}cout << l << '\n';}    return 0;
}

相关文章:

笔试专题(九)

文章目录 十字爆破&#xff08;暴力&#xff09;题解代码 比那名居的桃子&#xff08;滑动窗口/前缀和&#xff09;题解代码 分组&#xff08;暴力枚举 优化二分&#xff09;题解代码 十字爆破&#xff08;暴力&#xff09; 题目链接 题解 1. 暴力 预处理 2. 如果单纯的暴…...

3 VS Code 配置优化与实用插件推荐:settings.json 详解、CodeGeeX 智能编程助手及插件离线安装方法

1 优化 settings.json 文件 1.1 settings.json 简介 settings.json 是 VS Code 的核心配置文件&#xff0c;用于存储用户的个性化设置和偏好。通过该文件&#xff0c;用户可以自定义和覆盖 VS Code 的默认行为&#xff0c;包括但不限于以下方面&#xff1a; 编辑器外观&#…...

TA学习之路——1.6 PC手机图形API介绍

1前言 电脑的工作原理&#xff1a;电脑是由各种不同的硬件组成&#xff0c;由驱动软件驱使硬件进行工作。所有的软件工程师都会直接或者间接的使用到驱动。 定义&#xff1a;是一个图形库&#xff0c;用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序接口&#xff08;API)。…...

【android bluetooth 框架分析 02】【Module详解 2】【gd_shim_module 模块介绍】

1. 背景 上一章节 我们介绍了 module_t 的 大体框架 &#xff0c;本节内容我们就选择 我们的 gd_shim_module 模块为例子&#xff0c;具体剖析一下&#xff0c;它里面的逻辑。 static const char GD_SHIM_MODULE[] "gd_shim_module";// system/main/shim/shim.cc …...

从一堆新闻正文中,提取出“事实型句子(fact)”,并保存到新文件中

示例代码&#xff1a; import os import re import json import nltk from tqdm import tqdm from transformers import pipeline nltk.download(punkt) from nltk.tokenize import sent_tokenize ## Check If Fact or Opinion #lighteternal/fact-or-opinion-xlmr-elfact_opi…...

Matlab 调制信号和fft变换

1、内容简介 Matlab 194-调制信号和fft变换 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Git 常用命令集与实际使用 Demo

Git 常用命令集与实际使用 Demo 一、初始化 & 配置 命令说明Demogit init在当前目录初始化本地 Git 仓库&#xff0c;生成 .git/ 文件夹mkdir newProject && cd newProject git initgit config --global user.name “xxx”设置全局用户名git config --global use…...

KaiwuDB:面向AIoT场景的多模融合数据库,赋能企业数字化转型

引言 在万物互联的AIoT时代&#xff0c;企业面临着海量时序数据处理、多模数据融合和实时分析等挑战。KaiwuDB应运而生&#xff0c;作为一款面向AIoT场景的分布式、多模融合、支持原生AI的数据库产品&#xff0c;为企业提供了一站式数据管理解决方案。 产品概述 KaiwuDB是一…...

STM32 vs ESP32:如何选择最适合你的单片机?

引言 在嵌入式开发中&#xff0c;STM32 和 ESP32 是两种最热门的微控制器方案。但许多开发者面对项目选型时仍会感到困惑&#xff1a;到底是选择功能强大的 STM32&#xff0c;还是集成无线的 ESP32&#xff1f; 本文将通过 硬件资源、开发场景、成本分析 等多维度对比&#xf…...

100M/1000M 以太网静电浪涌防护方案

方案简介 以太网是一种生产较早且广泛应用的局域网通讯方式&#xff0c;同时也是一种协议&#xff0c;其核 心在于实现区域内&#xff08;如办公室、学校等&#xff09;的网络互联。根据数据传输速度的不同&#xff0c;以 太网大致可以划分为几个等级&#xff1a;标准以太网…...

使用ADB工具分析Android应用崩溃原因:以闪动校园为例

使用adb工具分析模拟器或手机里app出错原因以闪动校园为例 使用ADB工具分析Android应用崩溃原因&#xff1a;以闪动校园为例 前言 应用崩溃是移动开发中常见的问题&#xff0c;尤其在复杂的Android生态系统中&#xff0c;找出崩溃原因可能十分棘手。本文将以流行的校园应用&q…...

C语言中while的相关题目

一、题目引入 以下程序中,while循环的循环次数是多少次? 二、代码分析 首先要明确的一点 while循环是当循环条件为真 就会一直循环 不会停止 while中i是小于10的 说明i可以取到0 1 2 3 4 5 6 7 8 9 进入第一个if判断i小于1为真时执行continue i0是为真的 执行continue 后…...

关于使用 nuitka进行构建python应用的一些配置,以及github action自动构建;

1. 通用配置 # 设置输出目录和文件名output_dir "dist"app_name "CursorAutoFree"# 基础命令行选项base_options ["--follow-imports", # 跟踪导入"--enable-plugintk-inter", # 启用 Tkinter 支持"--include-packagecusto…...

[Dify] 基于明道云实现金融业务中的Confirmation生成功能

在金融业务的日常流程中,交易记录的处理不仅涉及数据录入、流程审批,更重要的是其最终输出形式——交易确认函(Confirmation)。本文将介绍如何通过明道云的打印模板功能,快速、准确地生成符合业务需求的交易Confirmation,提升工作效率与合规性。 为什么需要Confirmation?…...

「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题

如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾选&#xff0c;就会让图片导入设置中&#xff0c;不勾选Read/Write&#xff0c;就无法正确显示纹理的大小数字。 更进一步的问题是&#xff0c;使用Addressable打包的时候&#xff0c; 如…...

使用Java截取MP4文件图片的技术指南

在多媒体处理中&#xff0c;从视频文件中截取图片是一个常见的需求。本文将详细介绍如何使用Java结合FFmpeg实现从MP4文件中截取图片的功能。我们将通过几种不同的方法来实现这一目标&#xff0c;包括直接调用FFmpeg命令行工具、使用JavaCV库以及使用JAVE库。 环境准备 在开始…...

在C盘新建文本文档

设定 C: 的 NTFS 文件夹权限为 Users 或 Domain Users 具有写入权限&#xff1b; 1. 选中C盘 2. 点右键选中属性&#xff08;properties&#xff09; 3. 选“安全”&#xff08;Security&#xff09; Tab 4. Users 5. “编辑”&#xff08;Edit&#xff09; 6. Full Control …...

Xcode为不同环境配置不同的环境变量

一般有三种方式&#xff1a; 一、通过多Target 二、通过scheme,也就是多configurations 三、通过.xcconfig文件 先来看第二种方式&#xff1a;通过scheme,也就是多configurations,包括自定义User-settings 第一步&#xff1a;增加configurations,Xcode默认为我们生成了…...

阿里通义实验室发布图片数字人项目LAM,实现高保真重建

简介 LAM项目结合了3D Gaussian Splatting&#xff08;高斯点云渲染&#xff09;和大规模预训练模型的优势&#xff0c;解决了传统头部重建方法效率低、依赖多数据的痛点。其背景源于AI生成内容&#xff08;AIGC&#xff09;领域对实时、高保真3D头像生成的需求&#xff0c;尤其…...

面试算法高频05-bfs-dfs

dfs bfs 深度优先搜索(DFS)和广度优先搜索(BFS)是图和树遍历中的重要算法,二者在实现方式和应用场景上存在明显差异。 定义与概念:DFS在遍历树或图时,以深度优先,从起始节点出发,尽可能深入地探索分支,直至无法继续,再回溯;BFS则按层次逐层遍历,从起始节点开始,…...

镜像端口及观察端口的配置

配好路由器的各个接口的IP PC1ping PC3的IP&#xff0c;在路由器中抓2/0/0端口的包&#xff0c;可观察到无结果 输入observe-port interface g 2/0/0 命令配置观察端口 输入mirror to observe-port both命令 &#xff08;其中both表示接收来去的数据包&#xff0c;inboun…...

STM32——I2C通讯(软件模拟)

I2C概念 I2C:Inter-Integrated Circuit&#xff08;内部集成电路&#xff09; Philps公司80年代初期开发的&#xff0c;引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性广泛地使用在系统内多个集成电路&#xff08;IC&#xff09;间的低速通讯 简单的双向两线制总线协议…...

JetBrains Terminal 又发布新架构,Android Studio 将再次迎来新终端

不到一年的时间&#xff0c;JetBrains 又要对 Terminal 「大刀阔斧」&#xff0c;本次发布的新终端是重构后的全新的架构&#xff0c;而上一次终端大调整还是去年 8 月的 v2024.2 版本&#xff0c;并且在「Android Studio Ladybug | 2024.2.1」也被引入。 不知道你们用不用内置…...

论文:Generalized Category Discovery with Large Language Models in the Loop

论文下载地址&#xff1a;Generalized Category Discovery with Large Language Models in the Loop - ACL Anthology 1、研究背景 尽管现代机器学习系统在许多任务上取得了优异的性能&#xff0c;绝大多数都遵循封闭世界的设置&#xff0c;假设训练和测试数据来自同一组预定义…...

第十六届蓝桥杯 省赛C/C++ 大学B组

编程题目现在在洛谷上都可以提交了。 未完待续&#xff0c;写不动了。 C11 编译命令 g A.cpp -o A -Wall -lm -stdc11A. 移动距离 本题总分&#xff1a;5 分 问题描述 小明初始在二维平面的原点&#xff0c;他想前往坐标 ( 233 , 666 ) (233, 666) (233,666)。在移动过程…...

从输入URL到页面渲染:浏览器请求的完整旅程解析

&#x1f310; 从输入URL到页面渲染&#xff1a;浏览器请求的完整旅程解析 #网络协议 #浏览器原理 #性能优化 #Web开发 一、概览&#xff1a;一次请求的9大关键阶段 1. 用户输入URL → 2. DNS解析 → 3. 建立TCP连接 → 4. 发送HTTP请求 5. 服务器处理 → 6. 接收响应 → 7…...

【计网】网络交换技术之分组交换(复习自用,重要1)

复习自用的&#xff0c;处理得比较草率&#xff0c;复习的同学或者想看基础的同学可以看看&#xff0c;大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记&#xff1a; 电路交换 报文交换 一、分组交换的定义 1.定义 分组交换&#x…...

6.2 GitHub API接口设计实战:突破限流+智能缓存实现10K+仓库同步

GitHub Sentinel 定期更新 API 接口设计 关键词:GitHub API 集成、异步爬虫开发、RESTful 接口设计、请求限流策略、数据增量更新 1. 接口架构设计原则 采用 分层隔离架构 实现数据采集与业务逻辑解耦: #mermaid-svg-WihvC78J0F5oGDbs {font-family:"trebuchet ms&quo…...

考研单词笔记 2025.04.13

alleviate v减轻&#xff0c;缓解 alleviation n减轻&#xff0c;缓解 blunt a钝的&#xff0c;不锋利的&#xff0c;坦率的&#xff0c;直截了当的v使减弱&#xff0c;使变钝 dampen v抑制&#xff0c;减弱&#xff0c;使潮湿 dim v减弱&#xff0c;淡化&#xff0c;变昏暗…...

解密CHASE-SQL和XiYan-SQL多智能体AI如何最终实现TEXT2SQL的突破

想象一个世界,无论技术背景如何,任何人都能轻松查询海量数据库、挖掘深层洞察。比如:“我想知道安徽地区最畅销电子产品的第三季度销售额?”——只需一句话。“去年营销支出与客户获取成本之间的相关性如何?”——像聊天一样输入问题。这就是Text-to-SQL的承诺:将人类语言…...