随笔分类 - 数据结构--Two Pointer
摘要:题目 链接:https://xjoi.net/contest/3538/problem/1 另见SCOI2009 生日礼物 分析 显然是个双指针,然后就没了。 代码 #include<bits/stdc++.h> using namespace std; template <typename T>
阅读全文
摘要:题目 分析 好像是经典套路,但是我还是不会。 区间异或和并不好直接维护,于是想到按位处理。 枚举二进制的每一位,然后直接对于原序列所有数模一个 \(2^{k+1}\) (假设枚举的是 \(k\) ) 然后对当前位有影响的就是和在区间 \([2^k,2^{k+1}-1]\) 和区间 \([2^k+2^
阅读全文
摘要:题目 给定n,k和一个长度为n的序列,求最长的最大值最小值相差不超过k的序列 分析 可以直接双指针+RMQ来维护,复杂度是 \(O(nlogn)\) 的(约束RMQ爬)。 这里讲一个单调队列的思路。 维护两个单调队列,一个单调上升,一个单调下降。 然后每加入一个元素先更新两个队列,然后看一下两个队首
阅读全文
摘要:题目 P6670 [清华集训2016] 汽水 给一棵树,边有边权,要求找到一条路径使得其平均值和 \(k\) 最接近。 分析 首先树上路径容易想到点分治。 然后发现这可以套一个 0/1 分数规划,于是我们可以把所有的边权减掉 \(k\),再二分 \(mid\)。 现在的问题就是判断了。 我们发现答案
阅读全文
摘要:SP744 LPERMUT - Longest Permutation 找到一个最长的子段,满足其重排后是 \(1,2,3,4...k\) ,其中 \(k\) 是子段长度。 一道思维题。 首先我们考虑找到这样的段的性质:序列长度为 \(k\) 且互不相同。 然后我们可以推出一个结论:这个序列中一定只
阅读全文

浙公网安备 33010602011771号