AcWing 第 12 场周赛
题目链接:Here
AcWing 3805. 环形数组
签到题,循环减少出现次数,如果是 cnt[x] = 1 的话加入新的数组中
const int N = 1e3 + 10;
int cnt[N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
memset(cnt, 0, sizeof(cnt));
int n; cin >> n;
vector<int> a(n);
for (int &x : a) cin >> x, cnt[x] += 1;
vector<int> b;
for (int i = 0; i < n; ++i) {
if (cnt[a[i]] == 1) b.push_back(a[i]);
cnt[a[i]] -= 1;
}
cout << b.size() << "\n";
for (int x : b) cout << x << " ";
cout << "\n";
}
}
AcWing 3804. 构造字符串
参考了一下 Y总的代码,
主要思路在于分情况考虑
- \(k > n\) 时,找到字符串中最小的字符
c,先输出S然后输出 \(k - n\) 个c - \(k \le n\) 时,如同背包一样逆序处理,具体请看代码理解
bool cnt[30];
int n, k; string s;
char get_min() {
for (int i = 0; i < 26; ++i) if (cnt[i]) return i + 'a';
return -1;
}
char get_nxt(int t) {
for (int i = t + 1; i < 26; ++i) if (cnt[i]) return i + 'a';
return -1;
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
memset(cnt, 0, sizeof(cnt));
cin >> n >> k >> s;
for (int i = 0; i < n; ++i) cnt[s[i] - 'a'] = 1;
if (k > n) {
cout << s;
char c = get_min();
for (int i = n; i < k; ++i) cout << c;
cout << "\n";
} else {
string ss(k, 'a');
for (int i = k - 1; i >= 0; --i) {
char c = get_nxt(s[i] - 'a');
if (c != -1) {
ss[i] = c;
for (int j = 0; j < i; ++j) ss[j] = s[j];
break;
}
ss[i] = get_min();
}
cout << ss << "\n";
}
}
}
AcWing 3805. 环形数组
经典 线段树 板子,注意数组大小为 \(n\) 的 \(4\) 倍
const ll N = 2e5 + 10, inf = 1e18;
int n, m, w[N];
struct node {int l, r; ll dt, mn;} tr[N << 2];
void pushup(int u) { tr[u].mn = min(tr[u << 1].mn, tr[u << 1 | 1].mn); }
void pushdown(int u) {
auto &root = tr[u], &l = tr[u << 1], &r = tr[u << 1 | 1];
l.dt += root.dt, l.mn += root.dt;
r.dt += root.dt, r.mn += root.dt;
root.dt = 0; // 更新 LZ 标记
}
void build(int u, int l, int r) {
if (l == r) tr[u] = {l, r, 0, w[l]};
else {
tr[u] = {l, r};
int mid = l + r >> 1;
build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);
pushup(u);
}
}
void update(int u, int l, int r, int d) {
if (tr[u].l >= l && tr[u].r <= r) tr[u].dt += d, tr[u].mn += d;
else {
pushdown(u);
int mid = tr[u].l + tr[u].r >> 1;
if (l <= mid) update(u << 1, l, r, d);
if (r > mid) update(u << 1 | 1, l, r, d);
pushup(u);
}
}
ll query(int u, int l, int r) {
if (tr[u].l >= l && tr[u].r <= r) return tr[u].mn;
else {
pushdown(u);
int mid = tr[u].l + tr[u].r >> 1;
ll ans = inf;
if (l <= mid)ans = query(u << 1, l, r);
if (r > mid) ans = min(ans, query(u << 1 | 1, l, r));
return ans;
}
}
int main() {
// cin.tie(nullptr)->sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; ++i) cin >> w[i];
build(1, 0, n - 1);
cin >> m;
while (m--) {
int l, r, d; char c;
scanf("%d %d%c", &l, &r, &c);
// cin >> l >> r >> c;
if (c == '\n') {
if (l <= r) cout << query(1, l, r);
else cout << min(query(1, l, n - 1), query(1, 0, r));
cout << "\n";
} else {
cin >> d;
if (l <= r)update(1, l, r, d);
else update(1, l, n - 1, d), update(1, 0, r, d);
}
}
}
AcWing 第 12 场周赛的更多相关文章
- AcWing第85场周赛
这场周赛是手速局hh 死或生 某国正在以投票的方式决定 2 名死刑犯(编号 1∼2)的生死. 共有 n 组人员(编号 1∼n)参与投票,每组 10 人. 每组成员只参与一名死刑犯的投票,其中第 i 组 ...
- AcWing 第11场周赛题解
计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...
- AcWing第78场周赛
今天想起来了,就补一下吧~ 第一题 商品分类 货架中摆放着 n 件商品,每件商品都有两个属性:名称和产地. 当且仅当两件商品的名称和产地都相同时,两件商品才视为同一种商品. 请你统计,货架中一共有多少 ...
- LeetCode-第 166 场周赛
LeetCode-第 166 场周赛 1281.subtract-the-product-and-sum-of-digits-of-an-integer 1282.group-the-people-g ...
- LeetCode 第 165 场周赛
LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...
- LeetCode--第180场周赛
LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<v ...
- Leetcode第 217 场周赛(思维量比较大)
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...
- 【AcWing】第 62 场周赛 【2022.07.30】
AcWing 4500. 三个元素 题目描述 给定一个长度为 \(n\) 的数组 \(r\_1,r\_2,-,r\_n\). 请你找到其中的三个元素 \(r\_a,r\_b,r\_c\),使得 \(r ...
- LeetCode第151场周赛(Java)
这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...
- Leetcode 第133场周赛解题报告
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
随机推荐
- 线上ES集群参数配置引起的业务异常案例分析
作者:vivo 互联网数据库团队- Liu Huang 本文介绍了一次排查Elasticsearch node_concurrent_recoveries 引发的性能问题的过程. 一.故障描述 1.1 ...
- 关于Delphi
# 关于Delphi ··Delphi中使用的面向对象pascal编程语言. ··Pascal语言最初由瑞士苏黎士理工学院的尼古拉斯-沃斯(Niklaus Wirth)教授在1971年设计. ··19 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-33-处理https 安全问题或者非信任站点-上篇
1.简介 这一篇宏哥主要介绍playwright如何在IE.Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续 ...
- 湖南省网络攻防邀请赛 RE 题解
ez_apkk 解题过程: 将apk拖入jadx,查看MainActivity,发现是简单RC4加密,密钥是"55667788",最后再将加密结果+1 public String ...
- DevOps|研发提效-敏捷开发之每日站立会
对于研发效能团队建设和组织,本文不再赘述,可以参考之前的文章,已经讲得很透彻了.本文重点讲我们日常是怎么开站立会,怎么让团队跑起来,高效能产出的.每日站立会,15分钟到30分钟,看似非常短的一个会,但 ...
- 如何收集pod重启前现场
之前分享过几篇优化pod重启的文章,有朋友发私信问:看你的优化文章很过瘾,可否分享下如何收集pod重启前的现场. 案例分享-full gc导致k8s pod重启 记一次k8s pod频繁重启的优化之旅 ...
- [CF1854E] Game Bundles
题目描述 Rishi is developing games in the 2D metaverse and wants to offer game bundles to his customers. ...
- Tensorflow2.0:使用Keras自定义网络实战
tensorflow2.0建议使用tf.keras作为构建神经网络的高级API 接下来我就使用tensorflow实现VGG16去训练数据 背景介绍: 2012年 AlexNet 在 ImageNet ...
- SpringBoot测试用例的一些小技巧~
场景一:不想因为测试而对数据库产生脏数据 @Test public void testInsert() { User user = new User(); user.setUsername(" ...
- Cloudeye对接Prometheus实现华为云全方位监控
本文分享自华为云社区<Cloudeye对接Prometheus实现华为云全方位监控>,作者:可以交个朋友 . 一. 背景 云眼系统Cloudeye服务为我们提供了针对弹性云服务器.宽带等资 ...