【持续更新】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

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

LeetCode11. 盛最多水的容器题解

LeetCode11. 盛最多水的容器题解 题目链接: https://leetcode.cn/problems/container-with-most-water 示例 思路 暴力解法 定住一个柱子不动,然后用其他柱子与其围住面积,取最大值。 代码如下: public int maxArea1(int[] height) {int n = height.length;int

创新、引领、发展——SAMPE中国2024年会在京盛大开幕

绿树阴浓夏日长,在这个色彩缤纷的季节,SAMPE中国2024年会暨第十九届国际先进复合材料制品原材料、工装及工程应用展览会在中国国际展览中心(北京朝阳馆)隆重开幕。新老朋友共聚一堂,把酒话桑麻。 为期4天的国际学术会议以“先进复合材料,引领产业创新与可持续化发展”为主题,设立了34个主题分会场,其中包括了可持续化会场、国际大学生会场、中法复合材料制造技术峰会三个国际会场和女科技工作者委员会沙龙,

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

[FPGA][基础模块]跨时钟域传播脉冲信号

clk_a 周期为10ns clk_b 周期为34ns 代码: module pulse(input clk_a,input clk_b,input signal_a,output reg signal_b);reg [4:0] signal_a_widen_maker = 0;reg signal_a_widen;always @(posedge clk_a)if(signal_a)

PS的一些操作~持续抄袭中....

套索工具使用时移动图片——按住空格键,鼠标左键按住,拖动!