牛客周赛 Round 69

news/2024/11/28 16:39:10/文章来源:https://www.cnblogs.com/Kescholar/p/18574474

构造C的歪

思路

\(|a-b|+\max(a,b)\) 即可构造第三项。

代码

#include <bits/stdc++.h>using namespace std;using i64 = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int a, b;cin >> a >> b;int d = abs(a-b);cout << max(a,b) + d << "\n";return 0;
}

不要三句号的歪

思路

采用C语言 \(scanf\) 的模式串读取即可得到 \(a,b,c\),然后输出 \(c-b-1\) 即可。

代码

#include <bits/stdc++.h>using namespace std;using i64 = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);i64 a, b, c;scanf("%lld,%lld,...,%lld", &a, &b, &c);printf("%lld\n", c - b - 1);return 0;
}

仰望水面的歪

思路

实际上就是将坐标按照水面对称后得到新的点与原点建立向量即可。

代码

#include <bits/stdc++.h>using namespace std;using i64 = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, h;cin >> n >> h;while (n --) {i64 x, y, z;cin >> x >> y >> z;z = h + abs(h - z);i64 nx = x, ny = y, nz = z;i64 g = gcd(nx, gcd(ny, nz));nx /= g,ny /= g,nz /= g;cout << nx << " " << ny << " " << nz << "\n";}return 0;
}

小心火烛的歪

思路

注意到 \(p\le 7\),那么我们可以直接二进制枚举每个计划选还是不选即可,对选出的计划处理出最终的方案是否与草地互补即可。

代码

#include <bits/stdc++.h>using namespace std;using i64 = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, m, q;cin >> n >> m >> q;vector<string> cs(n);for (auto &i : cs) {cin >> i;for (auto &j : i) {j = ((j - '0') ^ 1) + '0';}}vector has(q, vector<string>(n));for (auto &i : has) {for (auto &j : i) {cin >> j;}}int ans = -1;vector<int> res;auto check = [&](int x)->void{vector<string> now(n, string(m, '0'));vector<int> ok;for (int i = 0; i < q; i ++) {if (x >> i & 1) {ok.emplace_back(i + 1);for (int j = 0; j < n; j ++) {for (int k = 0; k < m; k ++) {if (has[i][j][k] == '1') {now[j][k] = '1';}}}}}if (now == cs) {if (ans == -1 || ok.size() < ans) {ans = ok.size();swap(res, ok);}}};for (int i = 0; i < (1 << q); i ++) {check(i);}cout << ans << "\n";for (auto i : res) {cout << i << " ";}return 0;
}

喜欢切数组的红

思路

要分成和相等的三部分,那么总体的和也一定是三的倍数。

然后做个前缀和,对达到 \(\frac{sum}{3}\) 的再去遍历后续是否存在满足要求的划分即可。

赛时没想过这样暴力,后来看别人代码这样过了,我想这样可以做的原因大概是因为能满足前缀和等于 \(\frac{sum}{3}\) 的条件很少,所以第二个循环并不会跑太多次(但是假如塞一堆 \(0\) 去增加条件 \(1\) 的判定不知道会不会超时,不懂)。

代码

#include <bits/stdc++.h>using namespace std;using i64 = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;vector<i64> pre(n + 1), has(n + 1);vector<int> a(n + 1);for (int i = 1; i <= n; i ++) {cin >> a[i];pre[i] += pre[i - 1] + a[i];has[i] += has[i - 1] + (a[i] > 0);}if (pre[n] % 3 != 0 || has[n] < 3) {cout << 0 << "\n";return 0;}i64 avg = pre[n] / 3, ans = 0;for (int i = 1; i <= n; i ++) {if (!has[i] || pre[i] != avg) {continue;}for (int j = i + 1; j <= n; j ++) {if (pre[j] - pre[i] != avg || has[j] - has[i] == 0) {continue;}if (pre[n] - pre[j] != avg || has[n] - has[j] == 0) {continue;}ans ++;}}cout << ans << "\n";return 0;
}

研究red子序列的红

思路

唐了,刚开始看了一眼还以为树状数组能写,然后写到后面越发觉得不对劲,没想到线段树去维护,还是得多写orz

求区间内(实际上就是\([1,n]\))的子序列 red 的数量,对于交换操作,实际上就是单点修改,所以可以用线段树维护 r,e,d,re,ed,red \(6\) 个子串的个数,往上传的时候 re=r \(\times\) e+左儿子re+右儿子re,其他同理。

代码

#include <bits/stdc++.h>using namespace std;using i64 = long long;template<class Node>
struct SegmentTree {
#define lc u<<1
#define rc u<<1|1const int n, N;vector<Node> tr;SegmentTree(): n(0) {}SegmentTree(int n_): n(n_), N(n * 4 + 10) {tr.reserve(N);tr.resize(N);}SegmentTree(string &init) : SegmentTree(init.size() - 1) {function<void(int, int, int)> build = [&](int u, int l, int r) {tr[u].l = l, tr[u].r = r;if (l == r) {tr[u] = {l, r, {init[l] == 'r', init[l] == 'e', init[l] == 'd', 0, 0, 0}};return ;}i64 mid = (l + r) >> 1;build(lc, l, mid);build(rc, mid + 1, r);pushup(tr[u], tr[lc], tr[rc]);};build(1, 1, n);}void pushup(Node& U, Node& L, Node& R) { //上传U.l = L.l, U.r = R.r;for (int i = 0; i < 6; i ++) {U.res[i] = L.res[i] + R.res[i];}U.res[3] += L.res[0] * R.res[1];U.res[4] += L.res[1] * R.res[2];U.res[5] += L.res[0] * R.res[4] + L.res[3] * R.res[2];}void modify(int u, int x, char c, int k) {if (tr[u].l >= x && tr[u].r <= x) {if (c == 'r') tr[u].res[0] += k;else if (c == 'e') tr[u].res[1] += k;else if (c == 'd') tr[u].res[2] += k;return ;}int mid = (tr[u].l + tr[u].r) >> 1;if (x <= mid)modify(lc, x, c, k);if (x > mid)modify(rc, x, c, k);pushup(tr[u], tr[lc], tr[rc]);}i64 get() {return tr[1].res[5];}
};struct Node { //线段树定义int l, r;array<i64, 6> res;
};int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, q;cin >> n >> q;string s, t;cin >> s >> t;s = " " + s, t = " " + t;string pa = "red";SegmentTree<Node> st(s), tt(t);while (q--) {int x;cin >> x;if (pa.find(s[x]) != -1) {st.modify(1, x, s[x], -1);}if (pa.find(t[x]) != -1) {tt.modify(1, x, t[x], -1);}swap(s[x], t[x]);if (pa.find(s[x]) != -1) {st.modify(1, x, s[x], 1);}if (pa.find(t[x]) != -1) {tt.modify(1, x, t[x], 1);}cout << st.get() - tt.get() << "\n";}return 0;
}

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

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

相关文章

鲲鹏ARM64环境、银河麒麟KylinOSV10 下源码移植安装MariaDB 10.5.19参考

1 硬件 鲲鹏920处理器2 操作系统 银河麒麟V10 SP33 配置编译环境 3.1 配置代理 3.1.1 打开/etc/profile文件 vim /etc/profile 3.1.2 在/etc/profile文件中增加以下内容(根据实际情况填写)。 export http_proxy="http://用户名:密码@代理IP:代理端口" export …

从入门到精通:安徽京准GPS北斗卫星时间同步系统

从入门到精通:安徽京准GPS北斗卫星时间同步系统从入门到精通:安徽京准GPS北斗卫星时间同步系统 从入门到精通:安徽京准GPS北斗卫星时间同步系统 京准电子科技官微——ahjzsz 第一部分 网络时间同步显示系统概述: 医院、学校网络时间同步显示系统是由高精度GPS(北斗)网络母…

YASKAWA安川机器人DX100轴控制基板维修解析知识

ASKAWA安川机器人DX100轴控制基板的维修是一项复杂而精细的工作,要求具备丰富的知识和实践经验。通过与子锐机器人维修联系,希望能企业提供一些有益的参考和帮助,在面对轴板故障时能够迅速准确地找到问题所在并妥善处理。 一、YASKAWA安川机器人维修步骤与方法 1、故障诊断:…

半导体制造领域中的粒子缺陷(Particle Defect)

随着半导体技术的进步,制造过程中的质量控制已成为提高半导体器件性能和可靠性的核心。粒子缺陷不仅会显著降低器件的电气性能,例如导致电路短路或开路等故障,而且对器件的长期可靠性产生严重影响,从而增加了器件性能退化和失效的可能性。 Part1 引 言 半导体制造行业是现…

DSPf28335-GPIO

GPIO(通用输入输出端口 general purpose intput output) DSP TMS320F28335一共176个引脚。包括:电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚。 除了上述的5类引脚外的GPIO引脚一共88个,88个GPIO引脚又分为A、B、C三类。 A类为0~31; B类为32~63; C类为64…

iOS手机免越狱群控系统:实现同步投屏与多设备管理的新工具

免越狱群控系统概述 免越狱群控系统是一种基于苹果官方接口和网络通信技术的电脑端软件,通过合法合规的方式接入并操控多台iOS设备。该系统无需对iOS设备进行越狱,即可实现集中化、自动化控制。其核心功能包括:同步投屏:实时查看和控制多台iOS设备的屏幕。 批量操作:一键执…

NeRF学习笔记

NeRF 学习笔记参考资料十分钟带你快速入门NeRF原理_哔哩哔哩_bilibili 任务概述网络结构:输入 1. 采样点位置数据集是五维数据。theta phi决定了射线的方向,xyz是相机位置。 但是感觉x,y,z,theta phi为什么不直接用xyz表示?感觉剩下两个信息是冗余的。因为可能和射线有关,所…

考研打卡(29)

开局(29) 开始时间 2024-11-28 14:45:31 结束时间 2024-11-28 15:17:32 明天是1125今天去学冠领了几份资料数据结构具有5层节点的AVL树至少有_______个节点。(南昌大学 2015年) A 10 B 12 C 15 D 17B 答案设Nh表示深度为h的平衡二叉树中含有的最少节点数…

解决水库安全监测难题 长期无外接电源 低功耗设备智能化监测系统

解决水库安全监测难题 长期无外接电源 低功耗设备智能化监测系统国内某水库安全监测项目需要监测点分散,且无外接供电。项目年限为4年,不允许使用太阳能电板。因此,我们需要设备具备低功耗且内置电池的功能。为了满足客户的要求,我们的研发团队将采集仪从NLM511T升级到电池…

Android11修改摄像头前后置方法,触觉智能RK3568开发板演示

RK3566/3568安卓Android11系统下,修改摄像头前后置的方法,触觉智能EVB3568开发板演示本文介绍在Android11系统下,修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、An…

70%效率提升:开源AI技术在医疗用药咨询中的应用

一、系统概述 在医疗行业中,信息的准确性和实时性至关重要。我们的开源免费软件——思通数科AI多模态能力平台,通过集成先进的语音识别(ASR)技术,为医疗行业提供了一个全新的解决方案。该平台不仅能够理解多人对话中的语音指令,还能提供精准的药物咨询和用药指导,极大地…

Symbolic Discovery of Optimization Algorithms

目录概Lion代码Chen X., Liang C., Huang D., Real E., Wang K., Liu Y., Pham H., Dong X., Luong T., Hsieh C., Lu Y. and Le Q. V. Symbolic discovery of optimization algorithms. NeurIPS, 2024.概 本文搜索出了一个优雅的, 且经验上似乎更好的优化器: Lion. Lion作者通…