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

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

A - 柠檬可乐

string solve() {int a, b, k; cin >> a >> b >> k;return a >= k * b ? "good" : "bad";
}

B - 左右互博

每次将一堆石子分成两堆,必然最后结果会多一个 1 1 1,因此只要看能多几个 1 1 1,即为可以操作的次数

string solve() {cin >> n;ll sum = 0;for (int i = 0; i < n; i ++) cin >> a[i], sum += a[i];return sum - n & 1 ? "gui" : "sweet";
}

C - 冬眠

暴力模拟

char solve() {cin >> n >> m >> x >> y;for (int i = 0; i < n; i ++) cin >> s[i];cin >> p >> q;for (int i = 0; i < q; i ++) {cin >> e[i].aa >> e[i].bb;e[i].bb --;}while (p --) {for (int i = 0; i < q; i ++) {if (e[i].aa == 1) {char c = s[e[i].bb][m - 1];for (int j = m - 1; j; j --) s[e[i].bb][j] = s[e[i].bb][j - 1];s[e[i].bb][0] = c;} else {char c = s[n - 1][e[i].bb];for (int j = n - 1; j; j --) s[j][e[i].bb] = s[j - 1][e[i].bb];s[0][e[i].bb] = c;}}}return s[-- x][-- y];
}

D - 守恒

重新分配数,由于 g c d × k = s u m , k ≥ n gcd\times k=sum,~k\ge n gcd×k=sum, kn,故 g c d ∣ n gcd|n gcdn

注意特判 n = 1 n=1 n=1

ll solve() {cin >> n;ll sum = 0, res = 0;for (int i = 0; i < n; i ++) cin >> a[i], sum += a[i];for (int i = 1; i <= sum / n; i ++)if (sum % i == 0) res ++;if (n == 1) return 1;return res;
}	

E - 漂亮数组

只许看前缀和相同的区间点,每次找到后 c l e a r clear clear 前面的已经被选择过的

int solve() {cin >> n >> k;int idx = 0;map<int, int> mp;for (int i = 1; i <= n; i ++) {cin >> a[i];a[i] += a[i - 1];a[i] %= k;}set<int> s;s.insert(0);int res = 0;for (int i = 1; i <= n; i ++) {if (s.count(a[i])) {res ++;s.clear();}s.insert(a[i]);}return res;
}

F - 来点每日一题


G - 数三角形(easy)

前缀和查询底边是否存在,总复杂度 O ( n 3 ) O(n^3) O(n3)

ll solve() {cin >> n >> m;for (int i = 0; i < n; i ++) cin >> s[i];for (int i = 0; i < n; i ++)for (int j = 0; j < m; j ++)a[i][j + 1] = a[i][j] + (s[i][j] == '*');ll res = 0;for (int i = 0; i < n; i ++)for (int j = 1; j < m - 1; j ++) {if (s[i][j] == '.') continue;for (int k = 1; k <= min(j, min(m - 1 - j, n - 1 - i)); k ++) {if (s[i + k][j - k] == '*' && s[i + k][j + k] == '*') {if (a[i + k][j + k + 1] - a[i + k][j - k] >= k * 2 + 1) res ++;} else break;}}return res;
}

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



http://www.chinasem.cn/article/727037

相关文章

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应