随笔分类 -  C++算法 / 卡常

摘要:本题做法 位运算。 思路 这题的数据范围使用 int 存储不下,得用 unsigned int。 读入后,我们就要开始考虑如何获取高低位的问题了。 我们都知道,C++ 中的右移运算是可以将一个正整数的二进制右移一位的,我们要忽略后 16 位,我们就可以通过 n>>16 获取高位。 那怎么获取低位呢? 阅读全文
posted @ 2025-04-10 12:53 2789617221guo 阅读(27) 评论(0) 推荐(0)
摘要:本题做法 二分+优先队列。 思路 这题有几个坑点: 二分的 \(l,r\) 最好使用 unsigned long long 类型,以及需要特判答案可能是 0 的情况。 二分开始时 \(r\) 设置成 \(1\text e18\) 会被卡常,最好的方法是设置成 \(\max(s,len)\)。 二分答 阅读全文
posted @ 2025-04-08 22:21 2789617221guo 阅读(33) 评论(0) 推荐(0)
摘要:本题做法 二分答案+贪心。 思路 二分一个答案\(x\),每次检测\(x\)是否可行。 遍历每一件衣服,先将原本的湿度值减去\(x\cdot a\),再判断,若已经干了(即湿度值\(\le0\)),则不再处理,否则使用烘干机烘干,记录使用的时间。最后若总时间小于等于\(x\),返回true;否则返回 阅读全文
posted @ 2025-03-02 15:44 2789617221guo 阅读(74) 评论(0) 推荐(0)
摘要:本题做法 二分答案+并查集。 思路 二分答案\(x\),使用并查集判断在\(x\)时刻内是否能够形成连通块。 若任意2点的曼哈顿距离(即\(x\)坐标和\(y\)坐标的差值之和)小于等于\(2x\)(因为2个点是同时在扩散的),则这2点在\(x\)时刻内是可以形成连通块的。将2点在并查集内连边在一起 阅读全文
posted @ 2025-03-02 13:15 2789617221guo 阅读(29) 评论(0) 推荐(0)
摘要:洛谷P1010 [NOIP 1998 普及组] 幂次方 题解 题目传送门。 思路 使用一个函数 \(dfs\) 作为递归函数,传入一个参数 \(n\) 表示要分解 2 次幂的数。如果 \(n=1\),直接输出 \(2(0)\);如果 \(n=2\),输出 \(2\)。随后输出 \(2\),使用一个变 阅读全文
posted @ 2025-02-20 13:43 2789617221guo 阅读(65) 评论(0) 推荐(0)