确保获奖

1、算法思想维度

问题类型:二分、双指针

错误原因:Check时双指针 l == r 时没有退出,因为题目要求的是二元组个数。

正确思路:排序后,二分小明跟哪个人配对,双指针求出对数,判断是否可行。

2、实现细节维度

边界条件:双指针 l == r 时要退出循环,注意题目要求的是严格大于。

解题框架

bool C(int x) {
int cnt = 0;
for (int l = 2, r = n; l < r;) {
if (l == x) {
l++;
} else if (r == x) {
r--;
} else if (a[l] + a[r] > a[1] + a[x]) {
cnt++, l++, r--;
} else {
l++;
}
}
return cnt < m;
}

3、数学建模维度

复杂度计算:

  • 二分:\(O(n\log n)\)
  • 双指针:\(O(n)\)
  • 总复杂度:\(O(n\log n)\)

4、改进措施

  1. 多注意细节,在做题前手搓样例,验证程序。

序列生成器

知识点不会:线段树维护矩阵乘法。

方块游戏

1、算法思想维度

问题类型:线段树

错误原因:考试时分配时间不足,一看到长题面就跳过,没有深度思考,认真思考其实是可以想出来的

正确思路:手玩后转化成:区间加、全局查询大于 \(h\) 的点,维护懒标记线段树即可。

2、实现细节维度

边界条件:查询时记得 Push_Down,如果一个点大于 \(h\) 后要赋值成极小值,以免重复计算。

解题框架

void Make(int x, int l, int r, int val) {
tg[x] += val, mx[x] += val;
}
void PD(int x, int l, int r) {
if (tg[x]) {
Make(x * 2, l, mid, tg[x]);
Make(x * 2 + 1, mid + 1, r, tg[x]);
tg[x] = 0;
}
}
void A(int x, int l, int r, int qx, int qy, int val) {
if (qy < l || qx > r) return;
if (qx <= l && r <= qy) return Make(x, l, r, val);
PD(x, l, r);
A(x * 2, l, mid, qx, qy, val);
A(x * 2 + 1, mid + 1, r, qx, qy, val);
mx[x] = max(mx[x * 2], mx[x * 2 + 1]);
}
void Q(int x, int l, int r) {
if (mx[x] < h) return;
if (l == r) {
return cnt++, mx[x] = -1e18, void();
}
PD(x, l, r);
Q(x * 2, l, mid), Q(x * 2 + 1, mid + 1, r);
mx[x] = max(mx[x * 2], mx[x * 2 + 1]);
}

3、数学建模维度

复杂度计算:

  • 线段树:\(O(n\log n)\)
  • 总复杂度:\(O(n\log n)\)

4、改进措施

  1. 一道题在时间充足的情况下要思考 \(15min\) 才能放弃,要深度思考
  2. 看到长题面不能畏惧,要仔细读题,简化模型。

最长的LIS

1、算法思想维度

问题类型判定:dp、bitset

误判原因:对LIS问题模型不是很熟悉。

正确思路:设 \(f_i\) 为长度为 \(i\) 的上升子序列的结尾的最小值,用 bitset 维护转移。

2、实现细节维度

边界条件:bitset 长度要开 100001

解题框架

int p = b._Find_next(r - 1);
p < kMaxN && (b.reset(p), 0); // 将 >= r 的第一个位置删除
bitset<kMaxN> t = (~bitset<kMaxN>(0) << l) & (~(~bitset<kMaxN>(0) << r)), // 求出 [l,r) 全为 1 的bitset
t2 = b & t; // 由于 [l,r) 里的某些数 b 里可能没有,求出他们的交集
b &= ~t; // 将 b 里 x < l, x >= r,的数求出来
b |= (t2 << 1); //将 [l,r) 的数加一,与原集取并集
b.set(l); // 将 $l$ 设为 1

3、数学建模维度

复杂度计算:

  • 找到一个位置 \(>= r\) 的 \(1\):\(\frac{V}{w}\)
  • 将位置在 \([l,r)\) 的 \(1\) 加 \(1\):\(\frac{V}{w}\)
  • 将 \(l\) 设为 \(1\): \(O(1)\)
  • 总复杂度 \(n\frac{V}{w}\)

4、改进措施

  • 加强对 LIS 模型的理解。

小明的oj 2025 2月Div.1总结的更多相关文章

  1. 小明的存钱计划 南阳acm54

    小明的存钱计划 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 小明的零花钱一直都是自己管理.每个月的月初妈妈给小明300元钱,小明会预算这个月的花销,并且总能做到实际花 ...

  2. 一道月薪3W的java面试题 (小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日)

    小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3 ...

  3. nyist oj 19 擅长排列的小明(dfs搜索+STL)

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 小明十分聪明.并且十分擅长排列计算.比方给小明一个数字5,他能立马给出1-5按字典序的全排列,假设你想 ...

  4. hdu----(4521)小明系列问题——小明序列

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  5. 小明系列问题——小明序列(Lis 相距大于d的单调上升子序列)

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  6. hdu4521 小明系列的问题——小明序列(LIS变种 (段树+单点更新解决方案))

    链接: huangjing 题目:中文题目 思路: 1:这个题目假设去掉那个距离大于d的条件,那么必定是一个普通的LIS.可是加上那个条件后就变得复杂了.我用的线段树的解法. . .就是採用延迟更新的 ...

  7. scauoj 18025 小明的密码 数位DP

    18025 小明的密码 时间限制:4000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC Description 小明的密码由N(1<=N& ...

  8. hdu 4521 小明系列问题——小明序列 线段树+二分

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Pro ...

  9. 2018.07.08 hdu4521 小明系列问题——小明序列(线段树+简单dp)

    小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Proble ...

  10. HDUOJ-----4506小明系列故事——师兄帮帮忙

    小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

随机推荐

  1. Elasticsearch+logstash安装部署

    ELK安装部署 ELK安装部署 ELK是elastic公司提供的一套完整的收集日志并分析展示的产品,分别表示Elasticsearch.Logstash和kibana. Elasticsearch简称 ...

  2. Exceptionless 5.x 无法正常发送邮件的问题解决

    你有碰到过通过docker部署Exceptionless无法发送邮件的问题吗?此解决办法适用于Exceptionless 5.x版本(如果你不想升级6.x的话). 1.问题起因 去年这个时候,得知Ex ...

  3. Mybatis - 精巧的持久层框架-缓存机制的深刻理解

    Mybatis缓存机制 Mybatis的缓存机制是其性能优化的核心,也是面试中的高频考点.理解它不仅能写出更高性能的代码,还能明白框架设计中对性能与数据一致性权衡的智慧. 此教程从概念到实战,从基础到 ...

  4. Docker 一键安装部署 JumpServer 堡垒机

    一.环境准备 bash   # 更新系统 sudo apt update && sudo apt upgrade -y # 安装 Docker sudo apt install -y ...

  5. FastAPI WebSocket:你的双向通信通道为何如此丝滑?

    扫描二维码 关注或者微信搜一搜:编程智域 前端至全栈交流与成长 发现1000+提升效率与开发的AI工具和实用程序:https://tools.cmdragon.cn/ # 示例代码运行环境 # Pyt ...

  6. 字节开源的AI Coding Agent —— Trae Agent深入浅出

    1. 项目概述 从Cursor到Trae,从claude code到gemini cli,AI Coding都是火热的战场,现在字节开源了新的trae-agent(https://github.com ...

  7. C# 对比两个byte[]是否一样

    [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] static extern int B ...

  8. SciTech-Mathmatics-Probability+Statistics: How to Read and Interpret a $\large Regression\ Table$

    How to Read and Interpret a Regression Table BY ZACH BOBBITTPOSTED ON MARCH 20, 2019 https://www.sta ...

  9. SciTech-BigDataAI-ImageProcessing-OpenCV-Edge Detection(边缘检测) + Background Subtraction(背景差分过阈值) Methods + NumPy + Pandas

    https://docs.opencv.org/3.4/d1/dc5/tutorial_background_subtraction.html Edge Detection(边缘检测) Laplaci ...

  10. ASCII码是什么--九五小庞

    ASCII(发音:,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语 ...