AcWing 第 3 场周赛
比赛链接:Here
AcWing 3660. 最短时间
比较四个方向和 \((r,c)\) 的距离
void solve() {
ll n, m, r, c;
cin >> n >> m >> r >> c;
cout << max(max(r + c - 2, r + m - 1 - c), max(n + c - r - 1, n + m - r - c)) << "\n";
}
AcWing 3661. 重置数列
枚举相同值即可
void solve() {
int n, k; cin >> n >> k;
bool f[110] = {false};
vector<int>a(n + 1);
for (int i = 1; i <= n; ++i)cin >> a[i], f[a[i]] = true;
int cnt = n;
for (int i = 1; i <= 100; ++i) {
if (f[i]) {
int t = 0;
for (int j = 1; j <= n; ++j) {
if (a[j] == i)continue;
else t++, j = j + k - 1;
}
cnt = min(cnt, t);
}
}
cout << cnt << "\n";
}
AcWing 3662. 最大上升子序列和
(离散化,树状数组) \(O(nlogn)\)
众所周知,与求上升子序列相关的优化一般有两种:
- 单调栈 & 二分优化
- 线段树 | 树状数组 | 平衡树等数据结构优化
这里求的是上升子序列中所有元素的和的最大值,不太好用单调栈+二分,故想到用树状数组。
可能有些人对数据结构优化最长上升子序列不太了解,这里说一下思路。
先考虑暴力DP:设 \(f[i]\) 表示在 \(a_1∼a_i\) 中,且以 \(a_i\) 结尾的所有上升子序列中,元素和的最大值。
转移方程:
\]
将序列 \(a\) 离散化,考虑优化对 \(f_i\) 的转移。
设 \(g_x\) 表示所有 \(j < i\) 且 \(a_j = x\) 的 \(f_j\) 的最大值,那么 \(max_{0\le j<i,a_j<a_i}f[j]\) 就等于 \(max_{x <a_i}g_x\) ,注意到这项是 \(g\) 的一个前缀最大值,这恰可以用树状数组动态维护。
具体可见代码。
时间复杂度:
离散化 \(O(nlogn)\),树状数组 \(O(nlogn)\),故总复杂度为 \(O(nlogn)\)。
using ll = long long;
const int N = 1e5 + 10, mod = 1e9 + 7;
int n, a[N], diff[N], sz; // 离散化
// 树状数组
ll f[N], res;
inline void add(int x, const ll val) {for (; x <= sz; x += x & -x) f[x] = max(f[x], val);}
inline ll query(int x) {
ll res = 0;
for (; x; x &= x - 1)res = max(res, f[x]);
return res;
}
void solve() {
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> a[i], diff[i - 1] = a[i];
sort(diff, diff + n);
sz = unique(diff, diff + n) - diff;
for (int i = 1; i <= n; ++i) {
a[i] = lower_bound(diff, diff + sz, a[i]) - diff + 1;
ll t = diff[a[i] - 1] + query(a[i] - 1);
res = max(res, t), add(a[i], t);
}
cout << res << "\n";
}
AcWing 第 3 场周赛的更多相关文章
- 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 第133场周赛解题报告
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
- 第二场周赛(递归递推个人Rank赛)——题解
很高兴给大家出题,本次难度低于上一场,新生的六个题都可以直接裸递归式或者裸递推式解决,对于老生的汉诺塔3,需要找出一般式,后两题分别为裸ST算法(或线段树)/线性DP. 正确的难度顺序为 种花 角谷定 ...
随机推荐
- 实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库
C++ 是一种通用的编程语言,可以使用不同的库和驱动程序来连接各种数据库.以下是一些示例代码,演示如何使用 C++ 连接 SQL Server.MySQL.Oracle.ACCESS.SQLite 和 ...
- Cadence SPB 22.1 -- 元件库的创建02Day
一.原理图元件库工程 (1).新建工程:执行菜单命令"File"→"New"→"Project",输入工程名字.存储位置等基本信息保存即可: ...
- C# 面试常见递归算法
前言 今天我们主要总结一下C#面试中常见递归算法. C#递归算法计算阶乘的方法 一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1.自然数n的阶乘写作n!.180 ...
- c# 高并发必备技巧(三)
前面两篇文章主要是介绍了如何解决高并发情况下资源争夺的问题.但是现实的应用场景中除了要解决资源争夺问题,高并发的情况还需要解决更多问题,比如快速处理业务数据等, 本篇文章简要罗列一下与之相关的更多技术 ...
- 【UniApp】-uni-app-CompositionAPI应用生命周期和页面生命周期
前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-OptionAPI应用生命周期和页面生命周期 那么了解完了uni-app-OptionAPI应用生命周期和页面生命周期之后,这篇文章来 ...
- C++学习笔记二:变量与数据类型(整型)
1.int(整型数据): 1.1 进制的表示:十进制,八进制,16进制,二进制 int number1 = 15; // Decimal int number2 = 017; // Octal int ...
- Windows系统激活工具HK
下载:https://wwsi.lanzoum.com/iyUNn10e7foh 密码:g05d GitHub开源 .无毒 原文链接:https://github.com/zbezj/HEU_KMS_ ...
- 微软真是活菩萨,面向初学者的机器学习、数据科学、AI、LLM课程统统免费
微软真是活菩萨,面向初学者的机器学习.数据科学.AI.LLM课程统统免费 大家好,我是老章 推荐几个质量上乘且完全免费的微软开源课程 面向初学者的机器学习课程 地址:https://microsoft ...
- 单位换算详解:bit、Byte、bps、Bps、pps、Gbps的单位详细说明及换算
当谈论计算机存储和数据传输时,"bit"(比特)和"Byte"(字节)是两个常见的术语,它们具有不同的含义和用途. 位(bit):"位"来自 ...
- Kafka 万字精讲|工作五年这些你都知道吗?
目录 前言 一.Kafka 简介 1.1 事件流平台 1.2 Kafka 主要概念和术语 1.3 Zookeeper 二.Kafka 集群搭建和使用 2.1 使用 Docker Compose 搭建 ...