牛客周赛 Round 39题解

ops/2024/9/25 21:27:38/

 题目讲解:牛客周赛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.ppmy.cn/ops/5139.html

相关文章

贵阳市人民政府副市长刘岚调研珈和科技

4月9日&#xff0c;贵阳市人民政府副市长、党组成员刘岚一行到珈和科技走访调研&#xff0c;珈和科技总经理冷伟热情接待了考察团&#xff0c;就企业算力需求与合作&#xff0c;特色产业园区建设&#xff0c;科技成果转化落地等方面进行深入交流。 贵阳市教育局局长李波&#…

中立分析腾讯云故障相关的事件

最近腾讯云的故障&#xff0c;让一堆云计算爱好者兴奋地远看指点江山、近看沐猴而冠。我比这群爱好者们更了解云计算&#xff0c;但是我尊重我的读者&#xff0c;你们从我这里看到的科普信息&#xff0c;不仅仅只有情绪价值。 在信息爆炸的时代&#xff0c;大家关注和信任某个媒…

记录golang日常错误处理

golang工作错误记录 1.报错:invalid flag in #cgo LDFLAGS: -Wl,–rpath./ 解决方式: export CGO_CFLAGS_ALLOW".*" export CGO_LDFLAGS_ALLOW".*"2.go get失败 解决方式: go env -w GO111MODULEon3.go代理设置 go env -w GOPROXYhttps://goproxy.cn,d…

MATLAB 计算点投影到平面上的坐标(59)

MATLAB 计算点投影到平面上的坐标(59) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 点投影到平面,计算投影点的坐标,下面提供MATLAB版本的计算程序,直接运行即可,内有验证数据,具体看代码即可。 二、算法实现 1.代码 代码如下(示例): % 平面上的三个点分…

mysql 基础

目录 1.数据库表列类型 1.整数类型 2.浮点数类型 3.字符串类型 4.日期和时间类型 2 .DML_添加数据 3.DML_修改&#xff0c;删除数据 4.DDL_修改&#xff0c;删除数据库表 5.删除数据 【1】 删除数据的两种操作 【2】【2】delete和truncate的区别&#xff1a; 6.根据原有…

Golang context 原理分析

1. 说在前面2. 场景分析 2.1 链式传递2.2 主动取消2.3 任务超时2.4 数据存储 3. 源码解读 3.1 一个核心数据结构 3.1.1 Context 3.2 四种具体实现 3.2.1 emptyCtx3.2.2 cancelCtx3.2.3 timerCtx3.2.4 valueCtx 3.3 六个核心方法 3.3.1 Background() && TODO()3.3.2 Wit…

部署ELFK+zookeeper+kafka架构

目录 前言 一、环境部署 二、部署ELFK 1、ELFK ElasticSearch 集群部署 1.1 配置本地hosts文件 1.2 安装 elasticsearch-rpm 包并加载系统服务 1.3 修改 elasticsearch 主配置文件 1.4 创建数据存放路径并授权 1.5 启动elasticsearch是否成功开启 1.6 查看节点信息 …

VBN1/VBN2/VBN3中免费货物维护计算类型/计算规则

本博文主要介绍SAP销售业务中&#xff0c;免费货物主数据中&#xff0c;计算类型的参数定义。如果需要进一步了解SAP SD 销售与分销业务中&#xff0c;免费货物的标准解决方案概览&#xff0c;可先了解本博客博文&#xff1a;SAP销售与分销中的免费货物和SAP SD 销售业务中免费…