HDU 4417 Super Mario:离线处理与线段树求区间不超过 K 的元素和
题目大意 数列 a[1..N],查询 [L, R, K]:区间内 ≤ K 的元素之和。N, M ≤ 100000。 离线 + 线段树 将元素与查询按 值从大到
HDU 3333 Turing Tree:离线查询与线段树求区间不同元素之和
题目大意 给定数列,多次查询:区间 [L, R] 内所有值不同的元素之和(即每个值只算一次)。N ≤ 30000, M ≤ 100000。 离线 + 线段树
POJ 2135 Farm Tour:最小费用最大流解决往返不重路径
题目大意 农场主从家 (1) 到谷仓 (N) 再返回,要求去回路径不重复边。每条边有费用,求最小总费用。无向图,N ≤ 1000,M ≤ 200000。 建模
POJ 1014 Dividing:多重背包二进制优化判断公平分割
题目大意 有 1~6 面值的硬币,各若干枚。问能否分成两堆面值相等。总枚数 ≤ 20000。 转化为 0-1 背包 总面值 sum 若为奇数直接 No。目标:
ZOJ 1610:线段树区间覆盖与颜色统计
题目大意 在数轴 [1, 8000] 上进行 N 次区间涂色操作(覆盖),最后统计每种颜色覆盖的线段数量(连续同色算一段)。 线段树 + Lazy 标记 区间
POJ 2104:分块树求区间第 K 大元素详解
题目大意 给定长度 N 的数组,多次查询:区间 [L, R] 中第 K 小的数。N ≤ 100000,查询数 M ≤ 5000。 数据结构:分块树 又称“划分
HDU 2897 邂逅明下:巴什博弈变形必胜策略分析
题目大意 一堆 n 个石子,A、B 轮流取,每次必须取 [p, q] 个。若剩余 < p 则必须全取。取最后一颗者输(误ère Nim)。给 n, p,
大数据过滤算法实战:Bitmap 与 Bloom Filter 原理与 C++ 实现
背景 面试高频题:“10 亿 URL 判重”、“1~1 亿整数找缺失”。核心需求:海量数据、极小内存、O(1) 查询。Bitmap 与 Bloom Filter
UVa 127 Accordian Patience:纸牌游戏模拟与链表操作
题目大意 52 张牌按顺序发牌,从左向右铺开。每发一张牌,若其与左边第 1 堆或第 3 堆的牌顶花色或点数相同,则移动到那堆上(优先移到左 3,再左 1;可连续
深度探索 C++ 对象模型:虚表、单继承与多重继承内存布局
引言 理解 C++ 对象内存布局是掌握多态、继承、性能优化的基础。本文基于 WinDbg 实测,系统剖析:类实例组成、虚表位置与内容、novtable 优化、单
HDU 4294 Multiple:数论与 BFS 求最小进制倍数
题目大意 给定 N, K,求最小正整数 M,使得: M 是 N 的倍数。 M 用 K 进制表示时,使用的不同数字种类最少;若并列,取 M 最小。 核心数论
HDU 3625 Examining the Rooms:第一类斯特林数与概率计算
题目大意 n 个房间,每个房间随机放一把钥匙(共 n 把)。你最多可砸开 k 扇门(第一扇必须用钥匙开)。求能打开所有门的概率。 数学建模:排列与环 钥匙分布
C++ 陷阱:构造函数中调用虚函数的多态失效
现象复现 基类构造函数中调用虚函数 Init(),期望派生类重写生效,实际调用的是基类版本。析构函数同理。 问题代码 class Base { public:
POJ 2886 Who Gets the Most Candies?:约瑟夫环与反素数的线段树解法
题目大意 N 个小孩围圈,每人有姓名和数值 v。从第 1 个开始报数,报到 K 的出列,其数值 v 决定下一轮起始位置与方向(正:顺时针,负:逆时针,绝对值为步
C++ 陷阱:虚析构函数缺失导致的内存泄漏
现象复现 同事通过 VLD(Visual Leak Detector)调试内存泄漏,定位到 new Derived() 处。代码逻辑看似正确:创建对象、使用、d
HDU 2492 Ping Pong:树状数组统计非递减/非递增三元组
题目大意 给定长度为 N 的数列,求满足 a ≤ b ≤ c 或 c ≤ b ≤ a 的三元组 (i, j, k)(i < j < k)的个数。N ≤ 1000
HDU 1556 Color the Ball:树状数组区间更新与点查询
题目大意 给定长度为 N 的区间,进行 N 次操作:每次对子区间 [A, B] 内每个点染色一次。最后输出每个点的染色次数。 核心技巧:差分数组 + 树状数组