- 博客(6)
- 收藏
- 关注
原创 Kefa and Park
题目保证树故用dfs 搜索,当成无向图存储, (如 只有一条边2, 1 时有向图存储会导致错误)重点在于叶子结点的判断, 发现叶子结点e[u].size() == 1, 但非叶子结点(如根节点也可能子树为一), 故增加一个是否存在子树的判断。给出n个点及相应长度序列表示点的状态(0 或1), 求从根节点走到叶子路径(路径中不存在连续k 个1)数。
2024-06-04 16:15:27 213
原创 Given Length and Sum of Digits...
对于最大值的求解:先取最大可能(如len == 5, max == 99999, 此时总和sum == 45), 将其与m 比较, 为满足最大值条件故从低位向高位运算, 根据m - sum 的值进行相应操作直到两者相等(最小值同理)。特判:n个数之和存在最大值及最小值,若 max < m || min > m, 说明不存在答案, 输出-1, -1,否则必然两个都存在(也可能两个值相同);
2024-06-04 14:37:23 440
原创 Books
由于是连续的子串可先求出序列的后缀和数组, 从 n th开始用双指针维护一个总和小于k的子。给出序列及数k, 求序列从 i th 开始直到 n th 总和 <= k 的最大个数。
2024-06-04 12:52:03 177
原创 Interesting drink Codeforces
可以用树状数组的下标作为界限, 如添加3(add(3, 1))后, 那么每次询问的数(如:sum(5))只要大于等于3, 便会输出1;给出一个序列以及m次询问, 输出每次询问序列中小于等于询问值的数的数量。
2024-06-03 19:19:27 196
原创 双指针(尺取法)
异或的原理是 对应位不同则为1, 反之为0, 使得两数异或要么等于两数和(2 ^ 4 == 010 ^ 100 == 110), 要么更少(3 ^ 2 == 11 ^ 10 == 01), 即 a ^ b <= a + b, 当且仅当对应二进制位数不同时等号成立, 究其原因是每个二进制位要么不变(一者为一另一者为零 或 两者皆为零), 要么减少(两者皆为一);4. 最短区间的判断: 判断的最终目标是区间左端点的名师在维护区间中只有一幅作品(事实上判断是在不改变cnt的大小的前提下使得左端点最大);
2024-05-11 15:50:33 1750 2
原创 高精度 加减乘除
字符串的比较从0 - s.size() - 1, 遵循字典序的同时由单次比较决定(相同则继续,不同则得出结论, 不再比较接下来的字符);6. while (k < len - 1 && t[k] == '0') t.erase(t.begin()),每次运算后可能有前导0;4. x++ 最终的结果等同于(8 / 2) 后的 4, 当然也可以是(86 / 2)中的 十位数 4 和个位数3;= "" || x!2. string t 为被除数的切片, 首先取除数长度的t, 之后每次取一位;
2024-05-11 10:15:06 733
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人