牛客周赛 Round 39题解

 题目讲解:牛客周赛39讲题直播回放_哔哩哔哩_bilibili

题号标题已通过代码通过率我的状态
A小红不想做炸鸡块粉丝粉丝题点击查看1978/2610未通过
B小红不想做鸽巢原理点击查看1172/8606未通过
C小红不想做完全背包(easy)点击查看1261/3574未通过
D小红不想做完全背包 (hard)点击查看416/5728未通过
E小红不想做莫比乌斯反演杜教筛求因子和的前缀和点击查看557/3456未通过
F小红不想做模拟题点击查看346/1750未通过
G小红不想做平衡树点击查看31/3150未通过

B.小红不想做鸽巢原理

思路:贪心,由于最后一定会剩下sum%k个球,我们想让球的颜色最少,最好的方法是让剩下的球全部是一个颜色的。所以先求一下sum%k看剩几个球,再对数组排序,倒着取看结果是否为负,若为负则表示当前颜色是不能取完的(很直觉的做法,感觉也可以从前往后进行模拟,比较符合正常思路)。

#include<bits/stdc++.h>
using namespace std;
int main(){long long n,k,sum=0;cin>>n>>k;vector<long long> a(n+1);for(int i=1;i<=n;i++){cin>>a[i];sum+=a[i];}sort(a.begin()+1,a.end());sum %= k;long long cnt = 0;for(int i=n;i;i--){if(sum<=0){cout<<cnt<<endl;return 0;}sum-=a[i];cnt++;}cout<<n<<endl;return 0;
}

C&D.小红不想做完全背包

思路:dp。dp[i]表示%p后能凑出i这个数字使用最少的数字的个数。dp是考虑从哪个状态枚举到哪个状态。但好像没讲全对,可能是状态转移的更新部分不太对。本题也可以使用bfs解决,感觉很妙。

正确的dp代码:代码查看 (nowcoder.com)

以下是bfs的正确代码。 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int f[2000+10],vis[2000+10];
int main()
{int n,p;cin>>n>>p;ll a[n+10];queue<pair<ll,ll>>q;for(int i=1;i<=n;i++){cin>>a[i];if(f[a[i]%p]==0){f[a[i]%p]=1;q.push({a[i]%p,1});vis[a[i]%p]=1;}}while(q.size()){ll x=q.front().first,y=q.front().second;if(x==0){cout<<y<<endl;return 0;}for(int i=0;i<p;i++){if(f[i]==1&&vis[(i+x)%p]==0){q.push({(i+x)%p,y+1});vis[(i+x)%p]=1;}}q.pop();}return 0;
}

E.小红不想做莫比乌斯反演杜教筛求因子和的前缀和

思路:推公式,不是很难,题目完全是在迷惑大家。

#include<bits/stdc++.h>
using namespace std;int main() {int n, m, p, x;cin >> n >> m >> p >> x;int ans = 0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(x-i*j<=0) continue;int up = x-i*j,down = (2*(i+j));if(up%down!=0) continue;int h = up/down;if(h<=p) ans++;}}cout<<ans<<endl;return 0;
}

F.小红不想做模拟题

思路:带懒标记的线段树。

#include<bits/stdc++.h>
#define lc u<<1
#define rc u<<1|1
using namespace std;
int n,q,a[101010],b[101010];
struct node{int l,r,c1,c2,c;int lz1,lz2;
}tr[404040];
void push_up(int u){tr[u].c1 = tr[lc].c1+tr[rc].c1;tr[u].c2 = tr[lc].c2+tr[rc].c2;tr[u].c = tr[lc].c+tr[rc].c;
}
void build(int u,int l,int r){tr[u] = {l,r,a[l],b[l],a[l]&b[l]};if(l==r) return;int mid = l+r>>1;build(lc,l,mid);build(rc,mid+1,r);push_up(u);
}
void push_down(int u){if(tr[u].lz1){int lz = tr[u].lz1;tr[lc].c1 = tr[lc].r - tr[lc].l + 1;tr[lc].c = tr[lc].c2;tr[rc].c1 = tr[rc].r - tr[rc].l + 1;tr[rc].c = tr[rc].c2;tr[rc].lz1 = 1;tr[lc].lz1 = 1;tr[u].lz1 = 0;}if(tr[u].lz2){int lz = tr[u].lz2;tr[lc].c2 = tr[lc].r - tr[lc].l + 1;tr[lc].c = tr[lc].c1;tr[rc].c2 = tr[rc].r - tr[rc].l + 1;tr[rc].c = tr[rc].c1;tr[rc].lz2 = 1;tr[lc].lz2 = 1;tr[u].lz2 = 0;}
}
void modify(int u,int l,int r,int op){if(l<=tr[u].l&&tr[u].r<=r){if(op==1){tr[u].c1 = tr[u].r - tr[u].l +1;tr[u].c = tr[u].c2;tr[u].lz1 = 1;}else{tr[u].c2 = tr[u].r - tr[u].l +1;tr[u].c = tr[u].c1;tr[u].lz2 = 1;}return;}push_down(u);int mid = tr[u].l+tr[u].r>>1;if(l<=mid) modify(lc,l,r,op);if(r>mid) modify(rc, l, r, op);push_up(u);
}
int main(){string A,B;cin>>n>>A>>B>>q;int ans = 0;for(int i=0;i<n;i++){a[i+1] = A[i] - '0';b[i+1] = B[i] - '0';}build(1,1,n);while(q--){char op;int l,r;cin>>op>>l>>r;int x = op-'A'+1;modify(1, l, r, x);cout<<tr[1].c<<endl;}return 0;
}

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

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

相关文章

双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟

以全球变暖为主要特征的气候变化已成为全球性环境问题&#xff0c;对全球可持续发展带来严峻挑战。2015年多国在《巴黎协定》上明确提出缔约方应尽快实现碳达峰和碳中和目标。2019年第49届 IPCC全会明确增加了基于卫星遥感的排放清单校验方法。随着碳中和目标以及全球碳盘点的现…

[stm32]DMA使用

自动重装和M2M(软件trig)不能一起使用&#xff0c;否则会停不下来 void MyDMA_Init(uint32_t AddrA,uint32_t AddrB,uint16_t Size){RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_InitTypeDef DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddrAddrA;//外…

爬楼梯(c)

文章目录 描述分析思路关键代码运行结果 描述 给定一个整数数组 cost &#xff0c;其中 cost[i]是从楼梯第i 个台阶向上爬需要支付的费用&#xff0c;下标从0开始。-旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶 要求&#xff1a;请你计算并返回达到楼梯顶部的…

在使用lombok的@Slf4j时,启动项目报错。java:找不到符号

问题背景&#xff1a; 在使用lombok的Slf4j时&#xff0c;启动项目报错。 java&#xff1a;找不到符号符号&#xff1a; 方法info(java.lang.String,java.lang.String)位置&#xff1a; 类型为org.apache.ibatis.logging.Log的变量 log解决方式&#xff1a; 在如图所示位置加…

在线预约家政服务小程序上门服务源码系统 带完整的安装代码包以及搭建教程

随着互联网的快速发展&#xff0c;家政服务行业也逐渐向线上化、智能化转型。为了满足广大用户的需求&#xff0c;罗峰给大家分享一款在线预约家政服务小程序上门服务源码系统。该系统不仅功能完善&#xff0c;而且操作简单&#xff0c;是您打造高效、便捷的家政服务平台的首选…

MySql 表中的id突然变很大,如何给id重新排序

目录 一、场景 二、解决方法 一、场景 我们在开发过程中&#xff0c;难免遇到id突然增大的情况。 由于id突然增大很多&#xff0c;我们重新增加数据时候id会默认加1 那么如何让id 重新从1按顺序排序呢 二、解决方法 点击编辑表&#xff0c;然后新建一个字段id2&#xff0c;将…

探索分布式系统监控zabbix-------------监控Windows

扩展windows 10 server2012 server2016 server2019 监控 一、在虚拟机中安装zabbix的客户端 下载网站 Download and install Zabbix 安装系统一直托不进虚拟机中&#xff1b;因为没安装Tools组件 点击虚拟机&#xff0c;选择安装VMware Tools 查看主机名 二、在web页…

每天五分钟计算机视觉:基于卷积操作完成滑动窗口的图片分类?

本文重点 我们前面学习了使用不同大小的滑动窗口来滑动图片,然后切分成许多小的图片,然后依次应用到我们已经训练好的图像分类模型中,但是这种方式效率太低了,本节课程我们学习一种新的方式,来看一下如何并行识别这些剪切的图片。 原始结构 首先我们先来看一下,如何把…

InCopy2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 InCopy是一种专业的文字处理软件&#xff0c;由Adobe公司开发。它通常与Adobe InDesign一起使用&#xff0c;主要用于协作式工作流程中的文本编辑和校对。通过与InDesign的集成&#xff0c;InCopy实现了文本编辑和设计分离&#…

初步了解InnoDB存储引擎的架构设计

1. 更新语句在MySQL中是如何执行的&#xff1f; 之前我们已经分析了MySQL架构上的整体设计原理&#xff0c;现在对一条SQL语句从我们的系统层面发送到MySQL中&#xff0c;然后一步一步执行这条SQL的流程&#xff0c;都有了一个整体的了解。 我们已经知道了&#xff0c;MVSQL最…

Springboot 初始化操作

在使用Springboot过程中&#xff0c;或多或少我们会遇到在Springboot启动时要初始化类&#xff0c;或者加载文件之类的一些操作。关于初始化&#xff0c;主要分为两类&#xff0c;一类是在程序启动后的执行初始化操作&#xff0c;另一类是Bean实例化时执行初始化操作&#xff0…

3D Tiles 规范(一概述)

3D Tiles 专为流式传输和渲染大量 3D 地理空间内容而设计&#xff0c;例如摄影测量、3D 建筑、BIM/CAD、实例化要素和点云。它定义了分层数据结构和一组提供可渲染内容的Tile格式。3D Tiles 没有定义内容可视化的明确规则&#xff1b;客户可以根据自己认为合适的方式可视化 3D …

如何理解Vue 3组件的component关键字

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Verilog仿真跨模块调用内部信号的方法

在Verilog仿真时如果需要调用某子模块中的信号在本模块中使用可以使用层次化引用的方法&#xff0c;而不需要在rtl部分用端口引出来。 引用方式&#xff1a;当前例化模块名.子例化模块名.子子例化模块名.参数 将需要的信号引出。 注意是用例化模块名而不是用子模块名&#xff…

【C++】二维数组传参方式

最近刚开始刷剑指offer&#xff0c;刚做到第三题的时候&#xff0c;发现C二维数组的传参方式和C语言略有些不同&#xff0c;所以在这篇博客中&#xff0c;会列出C/C常见的二维数组传参方式。&#xff08;本方式和代码都是基于vs环境所编写&#xff09; 一.C语言二维数组传参方式…

CCF区块链论文录用资讯--ICSE 2024

ICSE是CCF A类会议 &#xff08;软件工程/系统软件/程序设计语言&#xff09; 其2024录用了13篇区块链论文 Smart Contract and DeFi Security Tools: Do They Meet the Needs of Practitioners? 智能合约和 DeFi 安全工具&#xff1a;它们满足从业者的需求吗&#xff1f; St…

SegAnyGAussians(SAGA)项目配置和运行

GitHub项目地址&#xff1a;Jumpat/SegAnyGAussians: The official implementation of SAGA (Segment Any 3D GAussians) (github.com) 一、项目准备 1、下载原项目的zip包解压 2、下载third_party目录下的两个模块&#xff0c;放到对应目录下 3、下载预训练模型和数据集 数据…

非计算机专业,如何从事研发岗位的建议!

首先&#xff0c;非计算机专业的毕业生通过读研和专门的培训是完全可以进入IT行业的&#xff0c;目前IT行业内也有大量非计算机专业毕业的技术开发&#xff08;研发&#xff09;人员&#xff0c;其中有不少人也非常优秀&#xff0c;发展空间同样比较大。 虽然IT行业内整体的人才…

IPFS分布式存储系统

一、 引言 IPFS是InterPlanetary File System的缩写。它是一个分布式的网络传输协议&#xff0c;它可以把文件分成很多小块放到服务器的不同地方&#xff0c;然后用一种特别的方式来寻找和传输这些小块。这样&#xff0c;我们就可以更快、更安全、更抗容错了的存储文件了。 可能…

从小到大输出四个整数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int a, b, c, d;int t 0;//提示用户&#xff1b;printf("请输入四个整数a b c d&…