03 2020 档案
摘要:先成套买,剩下的的凑,凑不齐的退一套继续凑。 #include <cstdio> #include <algorithm> using namespace std; typedef long long ll; int n,m,k; ll ans,a[210000],f[210000]; int gc
阅读全文
摘要:题目让我们把序列ai重新排列,使得环上任意两个距离为ki的数字乘积之和最大。 乘法与加法不同,把四个数分为两组分别计算,再求和。 比如1 2 3 4四个数 (1 + 2)+(3 + 4) == (1 + 3) + (2 + 4) (1 * 2) + (3 * 4)>(1*3)+(2*4) 对于乘法而
阅读全文
摘要:首先现在操作2,一个+1,一个-1。就好比权值可以在两点之间流动。我们发现,把操作2当作边,则一个联同的子图,内部的权值是可以随便流动的。我们就这个把这个子图看多一个点。这个我们用并查集来实现。那么这个并查集内的s[i]也对应求和。 我们把操作2,都处理完了,我们再考虑操作2。对于操作1,我们连边,
阅读全文
摘要:让你求f(L)到f(R)的和。 我们考虑前缀和,F(x)必定是比f(x)次数高1的多项式,所以我们先插值插出f(n+1)。然后求出n+1个前缀和,插值出前缀和即可。 1 #include <cstdio> 2 using namespace std; 3 typedef long long ll;
阅读全文
摘要:先对8个点整体做斯坦纳树,再求出每个状态的最小代价。再看每个状态是否属于独立的,即包含的点都是成对的,我们去更新这些独立的状态即可。 1 #include <cstdio> 2 #include <cstring> 3 #include <string> 4 #include <map> 5 #in
阅读全文
摘要:给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于k的点有多少个。 所以我们边深搜边维护一个递归栈,然后不断在栈内滑动,保持窗口内边的权值和小于k。从而得出每个点会给多少个点的答案做贡献。然后使用树上差分维护。 1 #include <cstdio> 2 using namespace
阅读全文

浙公网安备 33010602011771号