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

Acwing 蓝桥杯 第二章 二分与前缀和

今天来补一下之前没写的总结,题是写完了,但是总结没写

感觉没什么好总结的啊,就当打卡了

789. 数的范围 - AcWing题库

思路:

一眼二分,典中典

先排个序,再用lower_bound和upper_bound维护相同的数的左界和右界就好了

注意特判无解

Code:

#include <bits/stdc++.h>
#define int long long
const int mxn=1e5+10;
const int mxe=2e5+10;
using namespace std;int n,q,x;
int a[mxn];
bool check(int x){return x>=0&&x<=n-1;
}
void solve(){cin>>n>>q;for(int i=0;i<n;i++) cin>>a[i];while(q--){cin>>x;int pos1=lower_bound(a,a+n,x)-a;int pos2=upper_bound(a,a+n,x)-a-1;if((!check(pos1)||!check(pos2))||(pos1>pos2)) cout<<-1<<" "<<-1<<'\n';else cout<<pos1<<" "<<pos2<<'\n';}
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

790. 数的三次方根 - AcWing题库

思路:

注意到答案具有单调性,因此二分即可

Code:

#include <bits/stdc++.h>
#define int long long
const int mxn=1e5+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;double n,ans;
bool check(double x){return x*x*x>=n;
}
void solve(){cin>>n;double l=-10000.0,r=10000.0;while(abs(r-l)>eps){double mid=(l+r)/2;if(check(mid)){ans=mid;r=mid;}else l=mid;}cout<<fixed<<setprecision(6)<<ans<<'\n';
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

AcWing 795. 前缀和 - AcWing

思路:

大一学弟也会写的前缀和板子

Code:

#include <bits/stdc++.h>
#define int long long
const int mxn=1e5+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;int n,m,l,r;
int a[mxn],sum[mxn];
void solve(){cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i],sum[i]=sum[i-1]+a[i];while(m--){cin>>l>>r;cout<<sum[r]-sum[l-1]<<"\n";}
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

796. 子矩阵的和 - AcWing题库

同样是大一学弟也会的二维前缀和,但是我可能不太会,嘻

Code:

#include <bits/stdc++.h>
#define int long long
#define y1 Y1
const int mxn=1e3+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;int n,m,q,x1,y1,x2,y2;
int a[mxn][mxn],sum[mxn][mxn];
void solve(){cin>>n>>m>>q;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) cin>>a[i][j];}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) sum[i][j]=sum[i-1][j]+sum[i][j-1]+a[i][j]-sum[i-1][j-1];}while(q--){cin>>x1>>y1>>x2>>y2;cout<<sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]<<'\n';}
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

730. 机器人跳跃问题 - AcWing题库

思路:

答案具有二分性,可以直接二分

然后在check函数里去模拟这个过程,如果中间存在能量值<0的情况就false,否则如果出现大于maxH的情况,那么剩下的只会得到,因此直接true就好了

Code:

#include <bits/stdc++.h>
#define int long long
#define y1 Y1
const int mxn=1e5+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;int n,mx=-1;
int h[mxn];
bool check(int x){int res=x;for(int i=0;i<=n;i++){if(h[i+1]>res){res-=(h[i+1]-res);}else{res+=(res-h[i+1]);}if(res>=mx) return true; if(res<0) return false;}return res>=0;
}
void solve(){cin>>n;for(int i=1;i<=n;i++) cin>>h[i],mx=max(mx,h[i]);int l=0,r=1e5;int ans;while(l<=r){int mid=l+r>>1;if(check(mid)){ans=mid;r=mid-1;}else l=mid+1;}//check(19);cout<<ans<<'\n';
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

AcWing 1221. 四平方和 - AcWing

思路:

四指针枚举,想到先把两个指针的结果哈希一下,然后再去枚举两个指针,一个指针的复杂度是sqrt(n),两个就是O(n)的了

Code:

#include <bits/stdc++.h>
#define int long long
#define y1 Y1
const int mxn=2e5+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;map<int,pair<int,int> > v;
int n,len=0;
void solve(){cin>>n;for(int i=0;i*i<=n;i++){for(int j=0;i*i+j*j<=n;j++){v[i*i+j*j]={i,j};}}for(int i=0;i*i<=n;i++){for(int j=0;i*i+j*j<=n;j++){if(v.count(n-i*i-j*j)){cout<<i<<" "<<j<<" "<<v[n-i*i-j*j].second<<" "<<v[n-i*i-j*j].first<<'\n';return;}}}
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

1227. 分巧克力 - AcWing题库

思路:

直接去二分边长,然后去check函数计算能有多少巧克力块就行

Code:

#include <bits/stdc++.h>
#define int long long
#define y1 Y1
const int mxn=1e5+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;
struct ty{int h,w;
}p[mxn];int n,k;
bool check(int x){int res=0;for(int i=1;i<=n;i++){res+=(p[i].h/x)*(p[i].w/x);}return res>=k;
}
void solve(){cin>>n>>k;for(int i=1;i<=n;i++) cin>>p[i].h>>p[i].w;int l=1,r=1e5;int ans;while(l<=r){int mid=l+r>>1;if(check(mid)){ans=mid;l=mid+1;}else r=mid-1;}cout<<ans<<'\n';
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

99. 激光炸弹 - AcWing题库

思路:

数据范围都比较小,因此可以直接求个二维前缀和,然后求二维差分,维护最大值即可

#include <bits/stdc++.h>
//#define int long long
#define y1 Y1
const int mxn=5e3+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;int n,r,x,y,w;
int a[mxn][mxn];
void solve(){cin>>n>>r;r=min(r,5001);for(int i=1;i<=n;i++){cin>>x>>y>>w;x++,y++;a[x][y]+=w;}for(int i=1;i<=5001;i++){for(int j=1;j<=5001;j++) a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];}int ans=-1e9;for(int i=1;i+r-1<=5001;i++){for(int j=1;j+r-1<=5001;j++){int x1=i,y1=j;int x2=i,y2=j+r-1;int x3=i+r-1,y3=j;int x4=i+r-1,y4=j+r-1;int S=a[x4][y4]-a[x2-1][y2]-a[x3][y3-1]+a[x1-1][y1-1];ans=max(ans,S);}}cout<<ans<<'\n';
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

1230. K倍区间 - AcWing题库

思路:

很典,直接求前缀和,然后对前缀和取模k,两个模为0的点就可以作为k倍区间端点,然后用动态map维护即可,也可以算C(n,2)

Code:

#include <bits/stdc++.h>
#define int long long
#define y1 Y1
const int mxn=1e5+10;
const int mxe=2e5+10;
const double eps=1e-8;
using namespace std;map<int,int> mp;
int n,k;
int a[mxn],sum[mxn];
void solve(){cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i],sum[i]=sum[i-1]+a[i],sum[i]%=k;int ans=0;for(int i=1;i<=n;i++){ans+=mp[sum[i]];mp[sum[i]]++;}cout<<ans+mp[0]<<'\n';
}
void init(){}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;init();while(__--)solve();return 0;
}

相关文章:

Acwing 蓝桥杯 第二章 二分与前缀和

今天来补一下之前没写的总结&#xff0c;题是写完了&#xff0c;但是总结没写感觉没什么好总结的啊&#xff0c;就当打卡了789. 数的范围 - AcWing题库思路&#xff1a;一眼二分&#xff0c;典中典先排个序&#xff0c;再用lower_bound和upper_bound维护相同的数的左界和右界就…...

CSDN原力增长规则解读 实测一个月

CSDN原力越来越难了&#xff0c;当然&#xff0c;这对生态发展来说也是好事。介绍下原力增长有哪些渠道吧。发布原创文章&#xff1a;10分/次&#xff0c;每日上限为15分、2篇回答问题&#xff1a;1分/次&#xff0c;每日上限2分&#xff0c;2回答发动态&#xff1a;1分/次&…...

HDMI协议介绍(三)--InfoFrame

目录 Auxiliary Video information (AVI) InfoFrame AVI InfoFrame包结构 Header Body 举个例子 附录 Audio InfoFrame Audio InfoFrame包结构 Header Body Vendor Specific InfoFrame Vendor Specific InfoFrame包结构 Header Body AVI/AUDIO/VSI Infoframe都…...

【RocketMQ】源码详解:Broker端消息储存流程、消息格式

消息存储流程 入口&#xff1a; org.apache.rocketmq.remoting.netty.NettyRemotingAbstract#processRequestCommand org.apache.rocketmq.broker.processor.SendMessageProcessor#asyncProcessRequest 消息到达broker后会经过netty的解码、消息处理器等&#xff0c;最后根据…...

IoT项目系统架构案例2

项目背景 1.这个项目是对之前的案例的升级改造参考&#xff1a;IoT项目系统架构案例_iot案例_wxgnolux的博客-CSDN博客2.基于方案1的项目实施过程中碰到的问题,对硬件设备标准化的理念及新的功能需求(如根据天气预报温度调水温,APP界面可操作性优化等)•采用目前IoT主流厂商的架…...

Vue echarts封装

做大屏的时候经常会遇到 echarts 展示&#xff0c;下面展示在 Vue2.7 / Vue3 中对 echarts &#xff08;^5.4.0&#xff09; 的简单封装。 文章首发于https://blog.fxss.work/vue/echarts封装.html&#xff0c;样例查看 echarts 封装使用 props 说明 参数说明类型可选值默认…...

蓝桥杯入门即劝退(二十二)反转字符(不走寻常路)

欢迎关注点赞评论&#xff0c;共同学习&#xff0c;共同进步&#xff01; ------持续更新蓝桥杯入门系列算法实例-------- 如果你也喜欢Java和算法&#xff0c;欢迎订阅专栏共同学习交流&#xff01; 你的点赞、关注、评论、是我创作的动力&#xff01; -------希望我的文章…...

数据仓库Hive

HIve介绍 Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具&#xff0c;可以用来进行数据提取转化加载&#xff0c;可以简称为ETL。 Hive 定义了简单的类SQL查询语言&#xff0c;称为HQL&#xff0c;它允许熟悉SQL的用户直接查询Hadoop中的数据&#xf…...

嵌入式 STM32 步进电机驱动,干货满满,建议收藏

目录 步进电机 1、步进电机驱动原理 2、步进电机驱动 3、步进电机应用 1、第一步&#xff1a;初始化IO口 2、设置行进方式 四、源码 步进电机 步进电机被广泛应用于ATM机、喷绘机、刻字机、写真机、喷涂设备、医疗仪器及设备、计算机外设及海量存储设备、精密仪器、工业…...

详讲函数.2.

目录 5. 函数的嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 小结&#xff1a; 6. 函数的声明和定义 6.1 函数的声明&#xff1a; 6.2 函数的定义&#xff1a; 5. 函数的嵌套调用和链式访问 函数和函数之间可以根据实际的需求进行组合的&#xff0c;也就是互相调用的…...

行测-判断推理-图形推理-位置规律-旋转、翻转

短指针每次逆时针旋转60&#xff08;排除法选C走人&#xff09;长指针每次顺时针旋转120选C左上菱形每次顺时针旋转90&#xff08;排除C D&#xff09;右上每次旋转180&#xff08;选B走人&#xff09;左下每次保持不变右下每次逆时针旋转90选B左上和右上为左右翻转&#xff0c…...

linux shell 入门学习笔记15 shell 条件测试

概念 shell的条件测试目的是得出真和假。 shell 提供的条件测试语法 test 命令 [] 中括号命令 语法*&#xff1a; test条件测试 test命令用来评估一个表达式&#xff0c;他的结果是真&#xff0c;还是假&#xff0c;如果条件为真&#xff0c;那么命令执行状态结果就为0&…...

Apollo(阿波罗)分布式配置安装详解

Apollo&#xff08;阿波罗&#xff09; Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#…...

Vue3之组件

何为组件 组件化的概念已经提出了很多年了&#xff0c;但是何为组件呢&#xff1f;组件有啥优势&#xff1f;本文将会做出解答&#xff0c;首先我们需要弄清楚何为组件。在VUE的官网中的解释是&#xff1a; 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对…...

【网络】套接字 -- UDP

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【网络】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文章…...

Lambda原理及应用

Lambda原理及应用 Lambda介绍 Lambda 是 JDK8 以后版本推出的一个新特性&#xff0c;也是一个重要的版本更新&#xff0c;利用 Lambda 可以简化内部类&#xff0c;可以更方便的进行集合的运算&#xff0c;让你的代码看起来更加简洁,也能提升代码的运行效率。 Lambda语法 非…...

运动耳机推荐、最值得入手的运动耳机清单共享

现在市面上各式各样的运动蓝牙耳机着实让人挑花了眼,怎样才能从纷繁复杂的市场中挑选出专业性、安全性、舒适性等各个方面都做地可圈可点的运动蓝牙耳机可真不是一件易事啊&#xff0c;甚至连不少老朋友都会踩坑&#xff0c;为了能让大家挑到真正的运动蓝牙耳机&#xff0c;为此…...

c盘爆满--如何清理电脑C盘

问题 c盘饱满很多天了&#xff0c;今天终于忍无可忍&#xff0c;开始展开对c盘的处理 c盘的基本处理有两步&#xff0c; 第一步&#xff0c;电脑系统清理 1,c盘右键属性&#xff0c;有个磁盘清理&#xff0c;好像是系统更新的一些缓存资源&#xff0c;可以直接清理 当然这只…...

Nginx配置web服务器及部署反向代理

Nginx配置web服务器及部署反向代理配置web服务器location语法部署反向代理代理转发配置web服务器 项目部署到linux上的静态文件代理给Nginx处理。当访问服务器IP时&#xff0c;可以自动返回静态文件主页。 主配置文件中server块对应的次配置include /etc/nginx/conf.d/*.conf…...

mvvm和mvc

mvvm是model-view-viewmodel的缩写&#xff0c;前端开发的架构模式 m&#xff1a; model&#xff1a;模型&#xff0c;指的是数据和交互业务逻辑 v&#xff1a; view&#xff1a;视图&#xff0c;用户看到的ui界面 vm&#xff1a; viewmodel&#xff1a;视图模型&#xff0…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

前端工具库lodash与lodash-es区别详解

lodash 和 lodash-es 是同一工具库的两个不同版本&#xff0c;核心功能完全一致&#xff0c;主要区别在于模块化格式和优化方式&#xff0c;适合不同的开发环境。以下是详细对比&#xff1a; 1. 模块化格式 lodash 使用 CommonJS 模块格式&#xff08;require/module.exports&a…...