摘要:
A 同联盟的朋友连一条权值为$0$的边,不同联盟的朋友连一条权值为$1$的边,即可以把每一次换联盟看成走一条权值为1的边。那么以每一个人为起点的话终点就是这个人到其他所有人中最短路的最大值。求这些最大值的最小值即可。 #include <bits/stdc++.h> using namespace 阅读全文
摘要:
转化一下询问即为区间$max - min + 1 = cnt$,其中$cnt$表示区间内数的种类数。 即求有多少区间$max - min - cnt=-1$,注意到任意区间的$max-min-cnt \geq -1$,那么即维护区间$max-min-cnt$的最小值和最小值的个数,再看最小值等不等于 阅读全文
摘要:
[传送门] 这种区间内相同数字只能被统计一次/只有区间内数字都不相同才对答案有贡献的题都可以用扫描线扫右端点,表示当前区间右端点为$r$。然后当前线段树/树状数组维护区间左端点为$[1,r)$时对应的答案,那么新加一个数对区间$[last[a[r] + 1, r]$多了$a[r]$的贡献。这道题也一 阅读全文
摘要:
题意是,有$n$个石头,每个石头有初始能量$E_i$,每秒能量增长$L_i$,以及能量上限$C_i$,有$m$个收能量的时间点,每次把区间$\left[S_i, T_i\right]$石头的能量都给收掉,石头的能量都置零重新开始增长。问最后收了多少能量。 看完题解觉得好有道理...我好菜...考虑每 阅读全文
摘要:
[传送门] 题意就是单点加以及查询下标为等差数列位置上的值之和。刚开始看到这道题。我以为一个数的倍数是log级别的。就直接写了发暴力。就T了。还在想为啥,优化了几发才发现不太对劲。然后才想到是$\dfrac {n}{x}$级别的。不过看到$\dfrac {n}{x}$应该就出来了。当$x \leq 阅读全文
摘要:
A. World Football Cup #include <bits/stdc++.h> using namespace std; const int N = 60; char name[N][N]; map<string, int> mp; char s[N]; struct P { int 阅读全文
摘要:
A. Twins 题意就是问取最少的物品使价值严格大于总价值的一半。 排序就OK了。 #include <bits/stdc++.h> using namespace std; const int N = 1011; int a[N]; int main() { int n; scanf("%d", 阅读全文
摘要:
A 签到。 C 源点向每个软件连边。把每个软件拆成对应版本数个点,每个软件向版本连边。把每个conflict也看成一个点。每个版本向它对应的conflict连边,conflict向汇点连边。没有在conflict里的版本直接向汇点连边。所有边的容量都是$1$,跑最大流即可。conflict的意思也就 阅读全文
摘要:
[传送门] 把一个询问拆成4个询问,即二维前缀和的形式,又变成了二维矩阵求和/RMQ的问题,有了[51nod 1463找朋友]的启发,直接按$x$排序,再对$y$查询即可,区间前缀和可以用树状数组来实现,常数小而且好写。 #include <bits/stdc++.h> using namespac 阅读全文
摘要:
由于每个元素贡献是线性的,那么等价于求每个元素出现在多少个异或和为$0$的子集内。因为是任意元素可以去异或,那么自然想到线性基。先对整个集合A求一遍线性基,设为$R$,假设$R$中元素个数为$r$,那么任取一个不在$R$内的元素,$R$中肯定存在一种取法能和这个元素异或和为$0$。同理,取定一个不在 阅读全文