【持续更新】2024牛客寒假算法基础集训营1题解 | JorbanS

本文主要是介绍【持续更新】2024牛客寒假算法基础集训营1题解 | JorbanS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • [A - DFS搜索](https://ac.nowcoder.com/acm/contest/67741/A)
  • [B - 关鸡](https://ac.nowcoder.com/acm/contest/67741/B)
  • [C - 按闹分配](https://ac.nowcoder.com/acm/contest/67741/C)
  • [E - 本题又主要考察了贪心](https://ac.nowcoder.com/acm/contest/67741/E)
  • [F - 鸡数题!](https://ac.nowcoder.com/acm/contest/67741/F)
  • [G - why买外卖](https://ac.nowcoder.com/acm/contest/67741/G)
  • [H - 01背包,但是bit](https://ac.nowcoder.com/acm/contest/67741/H)
  • [I - It's bertrand paradox. Again!](https://ac.nowcoder.com/acm/contest/67741/I)
  • [L - 要有光](https://ac.nowcoder.com/acm/contest/67741/L)
  • [M - 牛客老粉才知道的秘密](https://ac.nowcoder.com/acm/contest/67741/M)

A - DFS搜索

字符串匹配

int n;
string DD = "DFS", dd = "dfs";void solve() {int D = 0, d = 0;string s; cin >> n >> s;for (int i = 0; i < n; i ++)if (s[i] == DD[D]) D ++;else if (s[i] == dd[d]) d ++;cout << (D >= 3) << ' '  << (d >= 3) << endl;
}

B - 关鸡

有以下四种基本图形,排列组合即可

在这里插入图片描述

int n;
pii a[N];int solve() {cin >> n;for (int i = 0; i < n; i ++) cin >> a[i].bb >> a[i].aa;sort(a, a + n);int res = 3;bool down = false, L = false, R = false, left = false, right = false;bool ll = false, rr = false;for (int i = 0; i < n; i ++) {if (a[i].aa == 0 && a[i].bb == 2) down = true;if (a[i].aa == -1 && a[i].bb == 1) left = true;if (a[i].aa == 1 && a[i].bb == 1) right = true;if (a[i].aa < 0) ll = true;if (a[i].aa > 0) rr = true;if (i) {if (a[i].aa == a[i - 1].aa) {if (a[i].aa < 0) L = true;else R = true;} else if (a[i].aa - 1 == a[i - 1].aa && a[i].bb + a[i - 1].bb == 3) {if (a[i - 1].aa < 0) L = true;else if (a[i].aa > 0) R = true;}}}if (L && R || down && left && right) return 0;if (L && right && down || R && left && down) return 0;if (down && left || down && right || left && right) return 1;if (L && right || R && left || L && down || R && down) return 1;if (L && rr || R && ll) return 1;if (left && down && rr || right && down && ll) return 1;if (L || R || down || left || right || ll && rr) return 2;return 3;
}

C - 按闹分配

排序后,前缀和人等待的时间,二分查找鸡插队的时间点

int n, m;
ll t, q;
ll a[N];bool check(ll x) {int l = upper_bound(a + 1, a + n + 1, x) - a;ll res = (n - l + 1) * t;return res <= q;
}ll solve() {ll l = 0, r = a[n];while (l < r) {ll mid = (l + r) / 2;if (check(mid)) r = mid;else l = mid + 1;}return l + t;
}int main() {FastIOcin >> n >> m >> t;for (int i = 1; i <= n; i ++) cin >> a[i];sort(a + 1, a + n + 1);for (int i = 1; i <= n; i ++) a[i] += a[i - 1];while (m --) {cin >> q;cout << solve() << endl;}return 0;
}

E - 本题又主要考察了贪心

题为贪心误导人,暴力枚举情况,复杂度为 O ( T × 3 n ) ≤ 6 × 1 0 6 O(T\times 3^n)\le6\times 10^6 O(T×3n)6×106

int n, m, res;
int a[N], c[N];void dfs(int d = 0) {if (d == m) {for (int i = 1; i <= n; i ++) c[i] = a[i];sort(c + 1, c + n + 1);int t = upper_bound(c + 1, c + n + 1, a[1]) - c - 1;t = n + 1 - t;res = min(res, t);return;}int u = b[d].aa, v = b[d].bb;a[u] += 3;dfs(d + 1);a[u] -= 3;a[v] += 3;dfs(d + 1);a[v] -= 3;a[u] ++, a[v] ++;dfs(d + 1);a[u] --, a[v] --;
}int solve() {cin >> n >> m;for (int i = 1; i <= n; i ++) cin >> a[i];for (int i = 0; i < m; i ++) cin >> b[i].aa >> b[i].bb;res = n;dfs();return res;
}

F - 鸡数题!


G - why买外卖

前缀和即可

int n, m;
pii a[N];ll solve() {cin >> n >> m;for (int i = 0; i < n; i ++) cin >> a[i].aa >> a[i].bb;sort(a, a + n);for (int i = 1; i < n; i ++) a[i].bb += a[i - 1].bb;for (int i = n - 1; i >= 0; i --)if (a[i].aa - m <= a[i].bb) return a[i].bb + m;return m;
}

H - 01背包,但是bit


I - It’s bertrand paradox. Again!

概率分析,第一个人的概率更平均,答案不唯一,我大概意思一下,一发过了

int n, a, b;string solve() {cin >> n;a = b = 0;while (n --) {int x, y, r; cin >> x >> y >> r;x = max(abs(x), abs(y));if (x <= 70) a ++;else b ++;}if (1.0 * a / b > 1.2) return bb;return aa;
}

L - 要有光

计算阴影部分面积即可

double solve() {double c, d, h, w; cin >> c >> d >> h >> w;return c * w * 3;
}

M - 牛客老粉才知道的秘密

int solve() {int n; cin >> n;int res = n / 6;return n % 6 ? res * 2 : res;
}

这篇关于【持续更新】2024牛客寒假算法基础集训营1题解 | JorbanS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

Pandas利用主表更新子表指定列小技巧

《Pandas利用主表更新子表指定列小技巧》本文主要介绍了Pandas利用主表更新子表指定列小技巧,通过创建主表和子表的DataFrame对象,并使用映射字典进行数据关联和更新,实现了从主表到子表的同... 目录一、前言二、基本案例1. 创建主表数据2. 创建映射字典3. 创建子表数据4. 更新子表的 zb

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键