牛客小白月赛87 A-G 题解 | JorbanS

文章目录

  • [A - 小苯的石子游戏](https://ac.nowcoder.com/acm/contest/73854/A)
  • [B - 小苯的排序疑惑](https://ac.nowcoder.com/acm/contest/73854/B)
  • [C - 小苯的IDE括号问题(easy)](https://ac.nowcoder.com/acm/contest/73854/C)
  • [D - 小苯的IDE括号问题(hard)](https://ac.nowcoder.com/acm/contest/73854/D)
  • [E - 小苯的数组构造](https://ac.nowcoder.com/acm/contest/73854/E)
  • [F - 小苯的数组切分](https://ac.nowcoder.com/acm/contest/73854/F)
  • [G - 小苯的逆序对](https://ac.nowcoder.com/acm/contest/73854/G)

A - 小苯的石子游戏

string solve() {cin >> n;for (int i = 0; i < n; i ++) cin >> a[i];int A = 0, B = 0, mode = 0;for (int i = n - 1; i >= 0; i --, mode ^= 1)if (mode & 1) B += a[i];else A += a[i];return A > B ? "Alice" : "Bob";
}

B - 小苯的排序疑惑

string solve() {cin >> n;for (int i = 0; i < n; i ++) cin >> a[i], b[i] = a[i];sort(a, a + n);return a[0] == b[0] || a[n - 1] == b[n - 1] ? yes : no;
}

C - 小苯的IDE括号问题(easy)

双指针

void solve() {cin >> n >> m >> s;int l = s.find('I') - 1, r = l + 2;while (m --) {string op; cin >> op;if (op[0] == 'b') {if (l != -1) {if (r != n && s[l] == '(' && s[r] == ')') r ++;l --;}} else {if (r != n) r ++;}}for (int i = 0; i <= l; i ++) cout << s[i];cout << 'I';for (int i = r; i < n; i ++) cout << s[i];cout << endl;
}

D - 小苯的IDE括号问题(hard)

用两个栈模拟

void solve() {cin >> n >> m >> s;int idx = s.find('I');stack<char> l, r, t;for (int i = 0; i < idx; i ++) l.push(s[i]);for (int i = n - 1; i > idx; i --) r.push(s[i]);while (m --) {string op; cin >> op;if (op[0] == 'b') {if (!l.empty()) {if (!r.empty() && l.top() == '(' && r.top() == ')') r.pop();l.pop();}} else if (op[0] == 'd') {if (!r.empty()) r.pop();} else if (op[0] == '<') {if (!l.empty()) {r.push(l.top());l.pop();}} else {if (!r.empty()) {l.push(r.top());r.pop();}}}while (!l.empty()) t.push(l.top()), l.pop();while (!t.empty()) cout << t.top(), t.pop();cout << 'I';while (!r.empty()) cout << r.top(), r.pop();cout << endl;
}

E - 小苯的数组构造

贪心,让 a [ i ] + b [ i ] = m a x j = 1 i − 1 a j a[i]+b[i]=max_{j=1}^{i-1}a_j a[i]+b[i]=maxj=1i1aj

void solve() {cin >> n;for (int i = 0; i < n; i ++) cin >> a[i];int Max = -1e9;for (int i = 0; i < n; i ++) {b[i] = max(0, Max - a[i]);Max = max(Max, a[i]);}for (int i = 0; i < n; i ++) cout << b[i] << ' ';cout << endl;
}

F - 小苯的数组切分

由于一个数如果给 ∣ | 操作只会多不会少,但是给 & \& & 操作只会少不会多,因此贪心地让 & \& & 操作只包含 a [ n ] a[n] a[n],接下来遍历一下前两个操作的分界点即可

ll solve() {cin >> n;for (int i = 1; i <= n; i ++) cin >> a[i], b[i] = a[i] ^ b[i - 1];ll res = 0, cnt = a[n - 1];for (int i = n - 2; i; i --) {res = max(res, cnt + b[i]);cnt |= a[i];}return res + a[n];
}

G - 小苯的逆序对

树状数组维护逆序对, f [ i ] = n u m i ∣ a r r [ k ] − f [ 2 i ] − f [ 3 i ] − … f [ ⌊ n i ⌋ i ] f[i]=num_{i|arr[k]}-f[2i]-f[3i]-…f[\left \lfloor \frac n i \right \rfloor i] f[i]=numiarr[k]f[2i]f[3i]f[ini]

其中逆序操作保证 f [ 2 i ] , f [ 3 i ] , … … f [ ⌊ n i ⌋ i ] f[2i],~f[3i],~……~f[\left \lfloor \frac n i \right \rfloor i] f[2i], f[3i], …… f[ini] 是已经求得的

ll f[N];struct BIT {int tr[N];inline int lowbit(int x) { return x & -x; }void modify(int x, int k) {while (x) tr[x] += k, x -= lowbit(x);}int query(int x) {int res = 0;while (x <= n) res += tr[x], x += lowbit(x);return res;}
} bit;ll solve() {cin >> n;for (int i = 1; i <= n; i ++) {int x; cin >> x;a[x] = i;}for (int i = n; i; i --) {for (int j = i; j <= n; j += i) {f[i] += bit.query(a[j]);bit.modify(a[j], 1);}for (int j = i; j <= n; j += i) {bit.modify(a[j], -1);if (j != i) f[i] -= f[j];}}return f[1];
}

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

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

相关文章

向爬虫而生---Redis 探究篇3<`Redis事务`和`Sql事务`区别>

前言: 在数据管理和应用开发中&#xff0c;事务的概念至关重要。事务用于组织和管理一系列对数据进行更新或操作的步骤&#xff0c;确保数据的一致性和可靠性。事务能够保证在一组相关操作中的原子性、一致性、隔离性和持久性&#xff0c;从而确保数据库的可靠性。 Redis和My…

idea中maven配置(一次成功,全部细节都有)

写这篇文章的原因是maven的配置很简单&#xff0c;但是也很容易出错&#xff0c;我连配了两台电脑的maven出现了各种小错误&#xff0c;参考了以下两篇博文IDEA配置Maven教程&#xff08;超详细版~)_idea maven配置教程-CSDN博客 一次包会——最新IDEA配置Maven指南&#xff0…

python 基础知识点(蓝桥杯python科目个人复习计划57)

今日复习计划&#xff1a;做题 例题1&#xff1a;笨笨的机器人 问题描述&#xff1a; 肖恩有一个机器人&#xff0c;他能根据输入的指令移动相应的距离。但是这个机器人很笨&#xff0c;他永远分不清往左边还是往右边移动。肖恩也知道这一点&#xff0c;所以他设定这个机器人…

mysql 远程不允许连接 1130 -Host ‘‘ is not allowed to connect to this MySQL server

1、docker 进入mysql 命令 sudo docker exec -it 0c58 /bin/bash 2、连接mysql mysql -u root -ppwd 3、 use mysql; 4、更改表所有root用户都可以连接 update user set host ‘%’ where user‘root’; 5、刷新权限 flush privilege&#xff1b; ok解决&#xff1b;

五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等

hello&#xff0c;我是贝格前端工场&#xff0c;本次介绍跨平台开发的框架&#xff0c;欢迎大家评论、点赞。 一、什么是跨平台桌面应用开发框架 跨平台桌面应用开发框架是一种工具或框架&#xff0c;它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的…

3.2日学习打卡----初学FastDFS(二)

3.2日学习打卡 目录: 3.2日学习打卡SpringBoot整合FastDFS实战开发文件上传 FastDFS集成Nginx环境搭建 SpringBoot整合FastDFS 由GitHub大牛tobato在原作者YuQing与yuqih发布的JAVA客户端基础上进行了大量重构工作&#xff0c;并于GitHub上发布了FastDFS-Client1.26.5。 主要特…

代码随想录算法训练营Day33 || leetCode 860.柠檬水找零 || 406.根据身高重建队列 || 452. 用最少数量的箭引爆气球

860.柠檬水找零 贪心的思路就是&#xff0c;先把最没用的钱给找出去。本题中&#xff0c;20元没法花出去&#xff0c;只有10和5能找零&#xff0c;但10只能找零20&#xff0c;而5可以找零10与20&#xff0c;所以就想办法把10先花出去即可。之后按照收入顺序来记录钱数并选择找…

现货大宗商品发售平台搭建须知

在搭建现货大宗商品发售平台时&#xff0c;需要考虑以下关键因素&#xff1a; 目标市场分析&#xff1a;首先要明确你的平台将服务于哪些大宗商品市场&#xff0c;如农产品、金属、能源等。了解这些市场的特点、参与者、交易规则等&#xff0c;有助于你设计出更符合市场需求的…

chromedriver,Chrome驱动的实时更新

发现自己的selenium项目跑不起来了 效验驱动版本 下载链接(可能需要魔法) https://registry.npmmirror.com/binary.html?pathchromedriver/ https://googlechromelabs.github.io/chrome-for-testing/ 找到驱动位置 1. 默认安装路径&#xff1a;Chrome驱动通常会默认安装在系…

Python中常用的库-sklearn的介绍和代码案例

Python中常用的库-sklearn的介绍和代码案例 关注B站查看更多手把手教学&#xff1a; 肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) 今天我们来一起说下最近python中常用的机器学习库-sklearn。 Scikit-learn是一个基于Python的开源机器学习库&#xff0c;…

详解JavaScript的函数

详解 JavaScript 的函数 函数的语法格式 创建函数/函数声明/函数定义 function 函数名(形参列表) { 函数体 return 返回值; // return 语句可省略 } 函数调用 函数名(实参列表) // 不考虑返回值 返回值 函数名(实参列表) // 考虑返回值 示例代码 //定义的没有参数列表&am…

实验:依赖注入之setter注入

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

【数据结构与算法】整数二分

问题描述 对一个排好序的数组&#xff0c;要求找到大于等于7的最小位置和小于等于7的最大位置 大于等于7的最小位置 易知从某个点开始到最右边的边界都满足条件&#xff0c;我们要找到这个区域的最左边的点。 开始二分&#xff01; left指针指向最左边界&#xff0c;right…

2024-03-01(金融AI行业与大数据生态圈)

1.金融这一块的算法&#xff0c;不像推荐系统&#xff0c;图像等领域&#xff0c;金融领域的算法都比较成熟了。现在来说门槛低&#xff0c;属于初期阶段&#xff0c;上升期。 2.反欺诈的数据标签比较少&#xff0c;有一种“标签染色”的方法来做反欺诈模型的标签。 3.常用反…

官宣 | 凯琦供应链成为亚马逊SPN物流服务商!

再播一条喜讯&#xff01;在亚马逊官方平台的筛选考核下&#xff0c;凯琦供应链近日正式入驻亚马逊SPN服务商平台&#xff0c;成为亚马逊SPN第三方承运商。 这也标志着凯琦9年来在FBA物流领域的服务质量得到了客户、官方及行业的广泛认可&#xff0c;未来凯琦将继续为亚马逊卖家…

测试开发实习岗---测试用例

目录 对于抖音投放广告这项业务&#xff0c;如何设计测试用例get和post的接口如何设计测试用例依赖于登录状态的接口如何测试 对于抖音投放广告这项业务&#xff0c;如何设计测试用例 广告展示&#xff1a;测试广告在抖音中的展示情况&#xff0c;包括广告位置、展示时机、展示…

第六讲:函数

函数 1. 函数的概念2. 库函数2.1 标准库和头文件2.2 库函数的使用方法2.2.1 功能2.2.2 头文件包含2.2.3 实践2.2.4 库函数文档的一般格式 3. 自定义函数3.1 函数的语法形式3.2 函数的举例 4. 形参和实参4.1 实参4.2 形参4.3 实参和形参的关系 5. return语句6. 数组做函数参数7.…

ubuntu个人系统软件安装配置备忘

1. 替换软件源 /etc/apt/source.list 2. 安装必要软件 安装基础软件 sudo apt update sudo apt install -y python3-pip git vim curl wget clang clang-format flameshot docker升级pip3 python3 -m pip install --upgrade pip 安装google浏览器 https://deb.pkgs.org/…

Excel 按奇数偶数列处理数据

目录 一. 需求背景1.1 获取偶数列的数据1.2 奇偶列数据互换 二. 解决方式2.1 为列添加奇偶辅助列2.2 通过公式将奇偶列互换 一. 需求背景 1.1 获取偶数列的数据 ⏹ 最近在整理歌单&#xff0c;发现部分歌曲没有歌词&#xff0c;于是打算自己制作一份。 从网上找到了歌词&…

JavaScript-关于事件、事件流(捕获、冒泡)、事件源、常用事件

1.如何注册事件(如何绑定事件) ​ 何为注册事件&#xff0c;就是给元素添加事件&#xff0c;其方式有传统注册事件、方法监听注册事件。 0、1级事件&#xff08;传统注册事件&#xff09;不允许多个响应程序 我们在元素内或js内使用on的方式就是传统注册事件&#xff0c;这种形…