摘要: [传送门](P3143 [USACO16OPEN] Diamond Collector S - 洛谷) 分析 解决问题只需枚举这样的两个组:使得每组中极差<=k,且两个组不交,求两个组元素 代码实现 #include<bits/stdc++.h> using namespace std; int k 阅读全文
posted @ 2025-11-10 21:21 Ahui2667d 阅读(0) 评论(0) 推荐(0)
摘要: [传送门](P4653 [CEOI 2017] Sure Bet - 洛谷) 分析 显然在同一类中选取灯泡越大越好。 如果某一类中选取灯泡比另一类比另一类多太多,会造成较大的浪费(每次选灯泡收益-1) 于是直觉告诉我们,AB两类的灯泡选取应该尽量平均 代码实现 #include<bits/stdc+ 阅读全文
posted @ 2025-11-10 20:43 Ahui2667d 阅读(1) 评论(0) 推荐(0)
摘要: 本文代码适用于c++ 树状数组 问题引入 思考这样一个问题:对于给定的数组[1,n],多次询问[l,r]的区间和。 当然,我们可以用前缀和sum[r]-sum[l-1],这是因为区间和减法的好性质。 下面我们介绍一种时间复杂度为(log n)的,针对一维数组前缀查询问题的高效数据结构 对树状数组的简 阅读全文
posted @ 2025-10-19 20:37 Ahui2667d 阅读(10) 评论(0) 推荐(0)
摘要: 本文代码适用于c++ 引入 现在来了一队女生共n人,但是我们得知其中有一位是小南娘。我们如何快速找到那位小南娘呢? 每次查询一个队列我们可以得到该队列中是否存在南娘。 不难想到,我们可以将这n人均分成两组,然后再将含有小南娘的那一组继续均分......直到最小的组只有一人。这样时间复杂度为O(log 阅读全文
posted @ 2025-10-18 19:14 Ahui2667d 阅读(8) 评论(0) 推荐(0)
摘要: https://ac.nowcoder.com/acm/contest/119664 E 计算f(l,r)需要判断[l,r]是否为[1,l-1]+[r+1,n]的子序列(对此我们可以用双指针实现); 如果每次枚举(l,r)时都去判断一次,得到时间复杂度为O(n3*logn)对于n=2000不够; 我 阅读全文
posted @ 2025-10-18 11:24 Ahui2667d 阅读(14) 评论(0) 推荐(0)
摘要: 引入 对于任意的整数n,都可以将他拆分为有限个二次幂的和(即二进制拆分)。 那么我们就可以将规模为n的大问题拆分为许多区间长度为二的幂次的小问题。 这样,如何快速解决区间长度为二的幂次的问题就是我们想关心的。 这就是倍增法想解决的问题。 倍增法快速幂 倍增法快速幂的解决的经典问题就是求a^x(mod 阅读全文
posted @ 2025-10-15 21:48 Ahui2667d 阅读(14) 评论(0) 推荐(0)
摘要: 单调栈 本文代码适用于c++ 例题均来自luogu 引入 先看一道例题:https://www.luogu.com.cn/problem/B3666 分析 显然,第i次操作后,ai一定是后缀最大值。 不难发现,若ai在第n次操作后(i<n)为后缀最大值的必要条件是ai在第i+1~第n-1次都为后缀最 阅读全文
posted @ 2025-10-14 23:12 Ahui2667d 阅读(21) 评论(0) 推荐(1)
摘要: 本文代码适用于c++ 什么是位运算 计算机中整数以二进制的形式存储在内存中。位运算即直接对整数的二进制进行二进制特有的运算。 一些约定 对于n位二进制整数,最右边为第0位(最低位),最左边为n-1位(最高位)。 默认对进行位运算的两个二进制整数位数相同(对位数较小的补0)。 暂时不考虑负数的位运算。 阅读全文
posted @ 2025-10-13 22:44 Ahui2667d 阅读(41) 评论(0) 推荐(1)