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的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
随机推荐
- 语言模型:GPT与HuggingFace的应用
本文分享自华为云社区<大语言模型底层原理你都知道吗?大语言模型底层架构之二GPT实现>,作者:码上开花_Lancer . 受到计算机视觉领域采用ImageNet对模型进行一次预训练,使得模 ...
- 【总结】IntelliJ IDEA 插件
1..iBATIS/MyBatis plugin轻松通过快捷键找到MyBatis中对应的Mapper和XML,CTRL+ALT+B 2.iBATIS/MyBatis plugin轻松通过快捷键找到My ...
- 无序对的GCD
求\(\sum_{i = 1}^n \sum_{j = i+1}^n GCD(a_i, a_j)\) \(N\)为上确界,\(n\)为\(a\)数组元素个数,\(D\)为约数个数. 方法一 \(1.\ ...
- Vue2.0 学习 第二组 语法模板
本笔记主要参考菜鸟教程和官方文档编写. 1.文本绑定 一般在dom中用{{}}标时,并且在vue构造体内的data中定义文本内容 <div id="app"> & ...
- Spring+SpringMVC+Mybatis+Vue+Axios+Thymeleaf整合案例
1.创建SSM-Parent父项目 修改配置文件 <?xml version="1.0" encoding="UTF-8"?> <projec ...
- Meta3D -- 开源的Web3D低代码平台
大家好,Meta3D是开源的Web3D低代码平台,快速搭建Web3D编辑器,共建开放互助的web3d生态 Github 进入平台 功能演示 加入UI Control 加入Action脚本 运行&quo ...
- [简单] 基于注解玩转excel导出导入
基于注解玩转excel导出导入 demo 请 加入 598347590 技术解决群获取 个人博客 https://yangbuyi.top 话不多说 开始 <!-- poi office --& ...
- 技本功|统计信息对SQL执行效率的影响
在一个风和日丽的下午,奋哥哥突然接到业务方线上业务数据库CPU资源告警信息,立马放下手里的枸杞登录业务方阿里云控制台查看具体问题. 对于数据库当前正在发生中的问题,我们首先从数据库实时会话信息中尝试抓 ...
- Redis的五大数据类型(简单使用)
1:Redis的简单介绍? Redis(Remote Dictionary Server ):即远程字典服务 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型Key-Val ...
- RSA加密--前端
流程 前端js使用公钥进行加密,后端使用私钥进行解密(C#或java语言). 注意:c#使用xml格式的公钥/私钥 Java,js都是pem格式 格式 xml: <RSAKeyValue> ...