| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 2022-05-31每日刷题打卡 -> 正文阅读 |
|
[C++知识库]2022-05-31每日刷题打卡 |
2022-05-31每日刷题打卡代码源——每日一题最长的 X - 题目 - Daimayuan Online Judge给定一个由 X 和 . 组成的字符串 S。 你能对字符串 S 做以下操作 0 到 K 次(包括 0 和 K): 将一个 . 替换为 X 请问操作完的字符串 S 中最多可能有多少个连续的 X? 输入格式第一行一个字符串 S 第二行一个整数 K 输出格式一个整数,表示答案 样例输入
样例输出
问题解析双指针写法,为了方便我们这里先预处理一个前缀和数组,我们把字符串的’.'看成1,'X’看成0来计算前缀和。 然后快慢指针遍历前缀和数组,如果快指针r到慢指针l这一段的区间和: 小于等于k,说明这一段的‘.‘我们都可以把他们变成’X’,那么这一段都可以是‘X’,快指针走一步。 如果大于k了,说明这一段的’.‘我们并不能全变成‘k’,即这一段并不是连续的’X’,那么我们慢指针走一步,如果两个指针是在同一个位置,那么快指针也要走一步。 每次计算完一个区间值后,我们更新一下最大区间长度,最后把维护的值输出即可。 AC代码
力扣699. 掉落的方块在二维平面上的 x 轴上,放置着一些方块。 给你一个二维整数数组 positions ,其中 positions[i] = [lefti, sideLengthi] 表示:第 i 个方块边长为 sideLengthi ,其左侧边与 x 轴上坐标点 lefti 对齐。 每个方块都从一个比目前所有的落地方块更高的高度掉落而下。方块沿 y 轴负方向下落,直到着陆到 另一个正方形的顶边 或者是 x 轴上 。一个方块仅仅是擦过另一个方块的左侧边或右侧边不算着陆。一旦着陆,它就会固定在原地,无法移动。 在每个方块掉落后,你必须记录目前所有已经落稳的 方块堆叠的最高高度 。 返回一个整数数组 ans ,其中 ans[i] 表示在第 i 块方块掉落后堆叠的最高高度。
提示:
问题解析线段树+离散化。 因为放置方块是以lefti为起点放置一个sideLengthi*sideLengthi的方块,我们可以把问题看成是每次给区间lefti~sideLengthi+lefti加上sideLengthi,至于下落在另一个方块上的情况,我们可以求一下这个区间的最大值,我们必然就会落在这个最大值的顶部,那么这段区间的高度就会更新为(sideLengthi+区间最大值)。所以我们需要一个能实现区间赋值+求区间最值的线段树。同时因为值的范围过大,我们要进行一下离散化。 不过有个问题,如果两个方块相邻挨着,那他们是不会叠到一起的,比如一个方块的右边界是5,另一个方块的左边界也是5,那么这两个方块应该是相邻的,而不是一个叠到另一个上。但在我们的线段树里,这个是会叠在一起的(我们算的是一个区间的最值,那么第一个方块的右边界我们也会记上),这样显然是不对的,所以我们可以把每个方块的左边界+1,而右边界不变,这样就可以杜绝这种情况的发生。 AC代码
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:28:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |