【蓝桥杯集训·周赛】AcWing 第96场周赛
文章目录
- 第一题 AcWing 4876. 完美数
- 一、题目
- 1、原题链接
- 2、题目描述
- 二、解题报告
- 1、思路分析
- 2、时间复杂度
- 3、代码详解
- 第二题 AcWing 4877. 最大价值
- 一、题目
- 1、原题链接
- 2、题目描述
- 二、解题报告
- 1、思路分析
- 2、时间复杂度
- 3、代码详解
- 第三题 AcWing 4878. 维护数组
- 一、题目
- 1、原题链接
- 2、题目描述
- 二、解题报告
- 1、思路分析
- 2、时间复杂度
- 3、代码详解
第一题 AcWing 4876. 完美数
一、题目
1、原题链接
4876. 完美数
2、题目描述
如果一个正整数能够被 2520 整除,则称该数为完美数。
给定一个正整数 n,请你计算 [1,n] 范围内有多少个完美数。
输入格式
一个整数 n。
输出格式
一个整数,表示 [1,n] 范围内完美数的个数。
数据范围
前 3 个测试点满足 1≤n≤3000。
所有测试点满足 1≤n≤1018。输入样例:
3000
输出样例:
1
二、解题报告
1、思路分析
(1)注意数据范围要开long long
。
(2)因为能够被2520整除的是2520的倍数,所以当前n是2520的多少倍(下取整),即存在多少个能够被2520整除的数。
2、时间复杂度
时间复杂度为O(1)
3、代码详解
#include <iostream>
using namespace std;
typedef long long LL;
LL n;
int main()
{ cin>>n; cout<<n/2520;return 0;
}
第二题 AcWing 4877. 最大价值
一、题目
1、原题链接
4877. 最大价值
2、题目描述
有一个容量为 n 的背包和 m+1 种物品,每种物品都有无限多个。
物品种类编号为 0∼m。
第 i 种物品的体积为 vi,价值为 wi。
在使用背包装入物品时,每种物品的限重如下:
- 第 0 种物品:重量忽略不计,在装入时没有重量限制。
- 第 1∼m 种物品:第 i 种物品的单个重量为 hi,如果该种物品的装入总重量超过 li,则视为超重。
现在,请你挑选物品装入背包,要求
- 所有装入物品的总体积不得超过背包容量。
- 所有存在重量限制的物品均不得超重。
- 满足以上所有条件的前提下,所有装入物品的总价值尽可能大。
输出总价值的最大可能值。
注意审题,不要将 n,m 的含义弄混。
输入格式
第一行包含四个整数 n,m,v0,w0。
接下来 m 行,每行包含四个整数 li,hi,vi,wi。
输出格式
一个整数,表示总价值的最大可能值。
数据范围
前 4 个测试点满足 1≤n≤100,1≤m≤2。
所有测试点满足 1≤n≤1000,1≤m≤10,1≤li,hi,vi,wi≤100。输入样例1:
10 2 2 1 7 3 2 100 12 3 1 10
输出样例1:
241
输入样例2:
100 1 25 50 15 5 20 10
输出样例2:
200
二、解题报告
1、思路分析
思路来源:y总讲解视频
y总yyds
(1)装入第0个物品相当于是0-1背包问题,而装入后面物品相当于是多重背包问题(也可以直接看成多重背包问题,将第一个物品的数量设置为正无穷)。
(2)按照上述思路进行求解即可。
2、时间复杂度
时间复杂度为O(n2)
3、代码详解
法1
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1010;
int dp[N],w[N],v[N],l[N],h[N];
int n,m;
int main(){cin>>n>>m>>v[0]>>w[0];for(int i=1;i<=m;i++) cin>>l[i]>>h[i]>>v[i]>>w[i];//完全背包,处理第0件物品for(int j=v[0];j<=n;j++) dp[j]=max(dp[j],dp[j-v[0]]+w[0]);//多重背包,处理后面物品for(int i=1;i<=m;i++){for(int j=n;j>=v[i];j--){for(int k=0;k*v[i]<=j&&k<=l[i]/h[i];k++){dp[j]=max(dp[j],dp[j-k*v[i]]+k*w[i]);}}}cout<<dp[n];return 0;
}
法2
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1010;
int v[N],w[N],l[N],h[N];
int dp[N];
int n,m;
int main()
{ cin>>n>>m>>v[0]>>w[0];l[0]=0x3f3f3f3f,h[0]=1; //初始化第0件物品可以装无限个,即l[0]/h[0]=正无穷for(int i=1;i<=m;i++){cin>>l[i]>>h[i]>>v[i]>>w[i];}//转化成多重背包问题求解for(int i=0;i<=m;i++){for(int j=n;j>=0;j--){for(int k=0;k<=l[i]/h[i]&&k*v[i]<=j;k++)dp[j]=max(dp[j],dp[j-k*v[i]]+k*w[i]); }}cout<<dp[n];return 0;
}
第三题 AcWing 4878. 维护数组
一、题目
1、原题链接
4878. 维护数组
2、题目描述
给定一个长度为 n 的整数序列 d1,d2,…,dn 以及三个整数 k,a,b。
初始时,所有 di 均为 0。
你需要对序列依次进行 q 次操作,操作分为以下两种:
1 x y
,将 dx 增加 y。2 p
,计算并输出输入格式
第一行包含 5 个整数 n,k,a,b,q。
接下来 q 行,每行描述一个操作,格式如题面所述。
输出格式
每个
2 p
操作,输出一行一个整数表示结果。数据范围
前 3 个测试点满足 1≤k≤n≤10,1≤q≤10。
所有测试点满足 1≤k≤n≤2×105,1≤b<a≤10000 ,1≤q≤2×105,1≤x≤n,1≤y≤10000,1≤p≤n−k+1。输入样例1:
5 2 2 1 8 1 1 2 1 5 3 1 2 1 2 2 1 4 2 1 3 2 2 1 2 3
输出样例1:
3 6 4
输入样例2:
5 4 10 1 6 1 1 5 1 5 5 1 3 2 1 5 2 2 1 2 2
输出样例2:
7 1
二、解题报告
1、思路分析
思路来源:y总讲解视频
y总yyds
(1)利用两个树状数组分别维护min(d[i],b)
、min(d[i],a)
。
(2)
tr1[]
维护min(d[i],b)
:即针对每次add()
操作,始终保持tr1[]
维护的数组(设为B[]
,每个d[i]
对应B[i]
,即B[]
对应的树状数组为tr1[]
,而且B[]
中的数均小于等于b
),即如果当d[x]
小于b
的时候需要判断d[x]+y
以之后的值与b
的大小关系:如果d[x]+y<=b
,则保留该增值(即让对应d[x]
的B[x]
中的数的值B[x]+y
);如果d[x]+y>b
,由于我们不能使维护的数组B[]
中的数大于b
,所以我们最多只能让其增加到b
(即让B[x]
增加它距离b
的差值b-d[x]
,也就是让他对应的维护的数组的值B[x]
只增加到b
)。如果此时d[x]>=b
,我们不再需要对维护的数组B[X]
进行增值操作,因为其对应的B[x]
中的值已经达到b
,无论对d[x]
增加多少都不会影响B[x]
。tr2[]
维护min(d[i],a)
,同理。
(3)问题所求即为:tr1[]
在[1,p-1]
的区间和+tr2[]
在[p+k,n]
的区间和。
2、时间复杂度
时间复杂度为O(nlogn)
3、代码详解
#include <iostream>
#include <algorithm>
using namespace std;
const int N=200010;
typedef long long LL;
int d[N],tr1[N],tr2[N];
int n,k,a,b,q;
//lowbit运算
int lowbit(int x){return x&-x;
}
//点更新,在tr[x]位置加c
void add(int tr[],int x,int c){for(int i=x;i<=n;i+=lowbit(i)){tr[i]+=c;}
}
//求[1,x]前缀和
int query(int tr[],int x){LL ans=0;for(int i=x;i;i-=lowbit(i)){ans+=tr[i];}return ans;
}
//求[i,j]区间和
int sum(int tr[],int i,int j){return query(tr,j)-query(tr,i-1);
}
int main()
{ cin>>n>>k>>a>>b>>q;while(q--){int op;cin>>op;if(op==1){int x,y;cin>>x>>y;if(d[x]<=b) add(tr1,x,d[x]+y>=b?b-d[x]:y); //维护min(d[i],b)if(d[x]<=a) add(tr2,x,d[x]+y>=a?a-d[x]:y); //维护min(d[i],a)d[x]+=y;}else{int p;cin>>p;LL ans=sum(tr1,1,p-1)+sum(tr2,p+k,n); //求题目两个区间和cout<<ans<<endl;} }return 0;
}
相关文章:
【蓝桥杯集训·周赛】AcWing 第96场周赛
文章目录第一题 AcWing 4876. 完美数一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4877. 最大价值一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4878. 维护数组一、题目1、原…...
【数据结构】顺序表的深度刨剖析
前言:在上一篇文章中,我们已经对数据结构有了一定了解,我们可以通过优化空间复杂度或者时间复杂度从而提高我们程序运行或存储速率。至此我们就知道了数据结构的重要性,所以今天我们将要了解和学习一种实用的数据结构——线性表。…...
Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例
Unity 之 使用原生UGUI实现随手移动摇杆功能实现效果一,实现思路1.1 原理解析1.2 思路概述二,实现代码2.1 随手落下2.2 摇杆转动三,源码分享3.1 场景搭建3.2 完整代码3.3 实现效果实现效果 本文最终实现效果: 一,实现…...
Linux内核源代码概述
Linux内核源代码非常庞大,截止到2015年据统计代码总量就已经超过1500万行(LOC,Line of Code),看代码总量非常吓人,具体看这1500万行代码的大致分布情况如下图。 显然占比最大的drivers和arch目录下的代码合…...
Nginx 教程-动静分离
一、Nginx 动静分离理论1、概念今天学习和梳理Nginx动静分离,动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,之所以要进行动静分离,其一为了提高前端…...
自己设计的网站,如何实现分页功能?(详细代码+注释)
目录 前言 实现分页功能 需求分析 客户端开发 服务器开发 前后端交互——两种前端得到 文章总页数 的方法,那种更合适? 前言 你在设计网站的时候是否有过这样的烦恼:“我设计的网站怎么就是从上到下一条线内容全部展开,一点都…...
STM32F407控制微型推拉式电磁铁(通过继电器)
1、继电器 继电器相当于开关,单片机通过io口高低电平的控制来控制继电器的开闭。采用继电器的好处除了能够用低电压控制高电压(如32单片机控制220V的电压)外,还可以防止电流反冲,弄烧单片机。 本文采用3.3v的电磁铁&am…...
VS Code工作区用法
背景VS Code可以通过"文件/打开文件夹"来打开本地项目,但是想要打开多个项目便需要来回切换,比较费劲。此时就可以使用工作区功能,将不同的项目放置到同一个工作区中,这样切换项目的时候就会非常方便。操作方法打开其中…...
Mybatis-Plus SQLFeatureNotSupportedException: getObject with type问题解决
问题描述: Error attempting to get column modify_time from result set. Cause: java.sql.SQLFeatureNotSupportedException: getObject with type ; getObject with type; nested exception is java.sql.SQLFeatureNotSupportedException: getObject with type…...
Unity | 发布Android的那些事儿
1.使用UnityWebRequest获取StreamingAssets中的json文件(1)直接根据不同平台指定url路径IEnumerator AITalPredZhanHui(){string url;string fileName "girl.json"; #if UNITY_EDITOR || UNITY_STANDALONEurl "file://" Applicat…...
git为什么要先commit,然后pull,最后再push?而不是commit完直接push?
情况是这样的,现在远程有一个仓库,分支就一个,是master。然后我本地的仓库是从远程的master上clone下来的。大家都是clone下来,再在自己本地改好,再commit然后pull然后push,大家都是这么做的。那么现在问题…...
若依框架----源码分析(@RateLimiter)
若依作为最近非常火的脚手架,分析它的源码,不仅可以更好的使用它,在出错时及时定位,也可以在需要个性化功能时轻车熟路的修改它以满足我们自己的需求,同时也可以学习人家解决问题的思路,提升自己的技术水平…...
页面的重排和重绘?
思路: 网页渲染HTML文件到浏览器的过程->定义->如何优化网页渲染HTML文件到浏览器的过程HTML 文件通过HTML解析器解析生成DOM树;CSS文件通过CSS解析器生成CSSOM树;DOM树和CSSOM树生成渲染树(render tree)&#x…...
人脸检测-python和c++实现
人脸检测是计算机视觉领域中的一个重要应用,其目的是从图像或视频中自动检测出其中的人脸,并对其进行识别、跟踪等操作。人脸检测技术已经广泛应用于安防、人机交互、娱乐等领域,具有广泛的应用前景。 人脸检测的基本思路可以分为以下几个步骤: 图像预处理:首先需要对输入…...
PowerJob源码环境搭建
一、IEDA导入PowerJob源码 gitgithub.com:PowerJob/PowerJob.gitPowerJob 由调度服务器(powerjob-server)和执行器(powerjob-worker)两部分组成 powerjob-server 负责提供 Web 服务和完成任务的调度powerjob-worker 则负责执行用…...
天梯赛刷题小记 —— L2
最近在重刷 天梯赛,浅浅记录一下,进入L2阶段了 L2-001 紧急救援 解题思路:典型的dijkstra模板题,带路径记录与权重,方案数记录,解析出过 Dijkstra(兼路径) #include <bits/stdc.h> #define inf…...
Prometheus监控实战系列十九:监控Kubernetes集群(上)
Kuberentes是一款开源的容器编排产品,由Google开发后发布到社区,并在2015年将该项目捐献给了云原生基金会(Cloud Native Computing Foundation)。从2014年第一个版本发布以来,Kubernetes便迅速获得开源社区的追捧&…...
番茄学习法——亲测超级好用
今天给大家分享下我最近使用的学习方法,真的非常好用!大家用起来! 在日常的学习和工作中,我们经常会遇到一些难以克服的问题:分心、效率低下、焦虑等。为了帮助人们更好地学习和工作,一些学习方法和工具应运…...
vue 项目中使用高德地图
一、账号准备 首先,需要注册并登录高德地图开放平台,申请密钥。操作指引:高德地图开放平台 二、安装高德地图加载器 npm 安装: npm i amap/amap-jsapi-loader --save或者 yarn 安装: yarn add amap/amap-jsapi-loa…...
【每日一题】病人排队
题目描述小理是个热爱生活的孩子。病人登记看病,小理想编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:1. 老年人(年龄 ≥≥ 60岁)比非老年人优先看病。2. 老年人按年龄从大到小的顺序看病,年龄…...
【数据结构】链表OJ题
目录面试题 02.04 分割链表剑指 Offer II 027 回文链表160 相交链表141 环形链表142 环形链表 II138 复制带随机指针的链表面试题 02.04 分割链表 定义lesshead和greaterhead链接小于和大于等于k的值分别设置哨兵位和尾节点指针最后将两表去除哨兵位再链接 struct ListNode* p…...
冒泡 VS 插入 VS 选择——谁更胜一筹?(附排序源码)
文章目录什么样的“排序算法”更加优质?排序算法的执行效率排序算法的内存消耗排序算法的稳定性冒泡排序(Bubble Sort)插入排序(Insertion Sort)选择排序(Selection Sort)最终的胜利者…...
[python tools] 今天看到另一个配置工具 YACS,所以做下笔记
YACS 实际上就只是把别人的readme翻译了一下 github: https://github.com/rbgirshick/yacs 样例代码: https://github.com/Wuziyi616/multi_part_assembly/blob/master/docs/config.md 一、使用方法 1. 首先搞一个config的python文件,用来存一下基本的配置信息 比…...
Prometheus cadvisor容器监控和node-exporter节点监控
往期文章 Prometheus监控系统 https://blog.csdn.net/qq_39578545/article/details/108754585 Docker之compose介绍 使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Comp…...
机器学习|正则化|评估方法|分类模型性能评价指标|吴恩达学习笔记
前文回顾:逻辑回归 目录 📚正则化 🐇过拟合的问题 🐇代价函数 🐇正则化线性回归 🐇正则化的逻辑回归模型 📚模型评估方法 🐇留出法(hold-out) &#…...
python迭代器详解
不懂的问题:什么是协变、逆变?渐进式? _T_co TypeVar("_T_co", covariantTrue) # Any type covariant containers.作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者&…...
关于Docker逃逸
关于Docker逃逸 文章目录关于Docker逃逸前言一、判断是否为docker容器?二、privileged特权模式启动容器逃逸三、 Docker Remote API未授权访问逃逸四、危险挂载导致Docker逃逸五、危险挂载Docker Socket逃逸六、 挂载宿主机procfs逃逸七、脏牛漏洞来进行docker逃逸八…...
@Autowired和@Resource区别
Autowired和Resource到底有什么区别 Autowired 和 Resource 都是用来实现依赖注入的注解(在 Spring/Spring Boot 项目中),但二者却有着 5 点不同: 来源不同:Autowired 来自 Spring 框架,而 Resource 来自…...
动态内存管理详细讲解
目录 1.为什么存在动态内存分配 2. 动态内存函数的介绍 2.1 malloc和free 2.2 calloc 2.3 realloc 今天要和大家分享的内容是的动态内存管理,我们先从他的定义入手学习。 1.为什么存在动态内存分配 我们到现在已经掌握了内存开辟的方式就是要么创建一个变量…...
Python和Excel的完美结合:常用操作汇总(案例详析)
在以前,商业分析对应的英文单词是Business Analysis,大家用的分析工具是Excel,后来数据量大了,Excel应付不过来了(Excel最大支持行数为1048576行),人们开始转向python和R这样的分析工具了&#…...
艺术设计教学资源网站建设标准/世界球队最新排名
一、处理JSON 1、将JavaScript数据转换为JSON对象(序列化) JSON.stringify(Object)2、将JSON数据转换为JavaScript对象(逆序列化) JSON.parse(stringJSON)二、Buffer模块缓冲数据(使用两位16进制表示一字节) 1、创建缓冲区 Buffer.from(array): returns …...
个人可以建设新闻网站吗/优质网站
你真的了解telnet吗?一 摘要Telnet的应用不仅方便了我们进行远程登录,也给hacker们提供了又一种***手段和后门,但无论如何,在你尽情享受Telnet所带给你的便捷的同时,你是否真正的了解Telnet呢?二 远程登录Telnet服务虽…...
超市网站设计/北京最新疫情最新消息
2019独角兽企业重金招聘Python工程师标准>>> 报错为 ERROR 1130 (HY000): Host 10.124.117.1 is not allowed to connect to this MySQL server 本地连接mysql mysql -u root -pGRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY password;注意在赋权的用户和连…...
社交类网站手机模版/软文营销的概念
目录 1、什么是自动化测试 2、自动化测试的发展前景怎么样 3、自动化测试难不难? 4、目前市场上自动化测试岗位的薪资是多少? 5、自动化测试学习方法好渠道 6、自动化测试怎么学? 学习基础知识 选择自动化测试框架 开始编写测试脚本 …...
centos。wordpress/网络营销形式
mac自带python和pip等工具,但是在使用安装scrapy时,报了一些错,因为对操作系统一些核心目录(比如/Library)没有可操作权限,mac有自己的一些权限控制程序(非sudo chmod能改变)&#x…...
做那个网站的小编比较好/域名查询系统
利用代码来记录当前时间值或求某步操作所用时间值,本例以执行图片像素改变为例! 代码如下: import cv2 as cv #导入openc包 import numpy as np #科学计数的包def access_pixels(image): #获取图片像素的函数print(image.shap…...