12 2020 档案

摘要:由于博主太懒,所以停止更新 阅读全文
posted @ 2020-12-22 07:31 celerity1
摘要:先考虑流。 $s->i$连流量$d_i$费用$0$ $i->t$连流量$u_i$费用$p_i$ $i->i+1$连流量$\inf$费用$c_i$ $i+1->i$连流量$\inf$费用$m_i$ 然而我们并不能通过此题。 考虑从左到右枚举所有和源点连边的边进行增广。这样子的好处是不用考虑向左增广后的 阅读全文
posted @ 2020-12-20 09:03 celerity1
摘要:和某atcoder题的idea很像。 转化比较巧妙。 把两种学校的课程作为两维。 把平面划分成$(n+2)*(m+2)$个矩形。 把$x,y$作前缀和。 如果$x$有一个值$a$,则画一条$x=a$的线。 如果$y$有一个值$b$,则画一条$y=b$的线。 然后我们就要在这些直线的交点上选择一个矩形 阅读全文
posted @ 2020-12-19 10:04 celerity1
摘要:较为简单的数据结构题。 考虑如下贪心过程: ts=s st=初始鱼的集合 ans=0 while(1){ p=st的小于s的最大数 如果st没有小于s的数 break ans+=1 ts+=p } 正确性是显然的。 然而这样子做时间复杂度并不正确。 如果鱼的重量为$100000,1,1,1,(100 阅读全文
posted @ 2020-12-19 08:45 celerity1
摘要:题目的询问是个经典模型。 令$s_i=a_1+a_2+...+a_i$(前缀和),则我们询问一下能够得到$s_r-s_$ 考虑图$0...n$的一个生成树,边$(l,r)\(的代价是\)\gcd(a_{l+1}...a_r)$ 显然我们得知了生成树,即可推出所有$s$,所以我们要求最小生成树。 但是 阅读全文
posted @ 2020-12-18 07:49 celerity1
摘要:先考虑一个多项式做法: 根据套路从高到低位确定答案。 令当前位$i$为$0$,贪心的让后面合法。显然把$1~i-1$位都设成$1$进行判定。 考虑当前$a$的最大值$v$,扫到第$j$位。 如果$v$的长度大于$j$显然无解 否则如果$v$的第$i$位为$0$,则删除最大值继续判定。 如果$v$的第 阅读全文
posted @ 2020-12-16 12:00 celerity1
摘要:一道简单的数据结构题。 题目要区间赋值,所以使用颜色段均摊。 使用一个set维护相同颜色的连续区间。 维护若干个线段树,线段树的下标$i$表示:如果线段树上当前位置的颜色等于线段树对应的颜色,则该下标处的值为1,否则为0。 更新这些线段树可以使用区间加法。 在set更新区间的时候顺便在线段树上加法。 阅读全文
posted @ 2020-12-16 10:01 celerity1
摘要:。 阅读全文
posted @ 2020-12-16 08:33 celerity1
摘要:考虑如何计算操作后的奇数个数。 假设在行操作了$i$,列操作$j$次。 由补集转化,操作后奇数个数$=im+jn-ij$ 令$f_i$表示为行操作$i$次的答案,$g_i$表示列操作$i$次的答案,则答案就是符合要求的所有$f_ig_j$。 列出答案的EGF。 由于每行是相同的,强制让选择的$i$行 阅读全文
posted @ 2020-12-16 07:49 celerity1
摘要:在sub2中,我们使用并查集维护每一个颜色相同连续段。 在并查集的根部存储当前的颜色和连续段的左/右端点。 每次尝试拓展一下。 在sub3中,根据sub2的启发,我们也维护连通块使得相邻的连通块颜色不同。 在修改时,如果我们成功把当前点修改成另一个颜色,则当前点的所有相邻点都会和这个点合并。 维护一 阅读全文
posted @ 2020-12-15 11:54 celerity1
摘要:题目正着做不好做。 然而考虑逆向思维。 把时间轴反转,则问题变成了每次会运来一些菜,询问最大的价值。 先考虑如何回答一个询问。 从$p$开始倒推。 我们当前的最高价值的菜一定会卖掉。这是因为如果拖到后面会占用更多的空间,后面很可能会有更高价值的菜运过来。 于是可以维护一个大根堆$x$。首先把所有当前 阅读全文
posted @ 2020-12-13 10:01 celerity1
摘要:由于问题id,把答案写成带组合数的形式: \(\sum_{i=1}^T{D+i-1\choose L}\sum_{j=0}^{K-1}\left(D+i-1\right)^jA^{K-j-1}{K-j-1\choose j}\) $j$是在枚举吃了多少道菜。 后面的组合数是指:把所有吃菜的行为插入到 阅读全文
posted @ 2020-12-12 08:16 celerity1
摘要:考场上连$n=2$都不会。 在场外想$n=2$也花了一定时间。 现在看到快排后随便想一下就想出来了。 考虑快排。选择一个中心$md$,维护两个集合$s1,s2$,把$\leq md$的所有球放入$s1$,其他放入$s2$。 注意到这样子我们只需要关注球的权值是否$\leq md$。 所以问题转化成了 阅读全文
posted @ 2020-12-09 12:01 celerity1
摘要:一个和标算不同的做法 题目中说所有颜色最多只会在询问中出现一次。 注意到一个修改操作中,只有它包含的节点构成的虚树有贡献。 对于一个修改操作,把所有它包含的颜色(设有$k$个)拿出来建虚树。 这样子建虚树的节点数是$O(n)$的。 在虚树上,所有子树颜色个数$=k$的点都会对答案产生贡献。 求出这些 阅读全文
posted @ 2020-12-09 08:22 celerity1
摘要:设$\gcd(l...r)$表示$l...r$路径上的$\gcd$ \(ans=[\gcd(l...r)]=\sum_{d|\gcd(l...r)}vu(d)\) \(=\sum_{i=1}^{1000000}vu(d)\sum_{d|\gcd(l...r)}1\) 一个显然的想法:注意到只有$vu 阅读全文
posted @ 2020-12-06 10:51 celerity1
摘要:#include<bits/stdc++.h> using namespace std; #define N 1000010 #define int long long struct no{ int x,y; }; vector<no>qu[N]; int n,s,q,e,h[N],v[N*2],n 阅读全文
posted @ 2020-12-02 08:44 celerity1
摘要:一开始看成了每次不一定要选一个连续的区间,结果死活不会做。 一个显然的想法: 设$f_{i,j,k}$表示成功划分前$i$个元素,划分了$j$段,$xor$和为$k$是否可行。 根据xor的封闭性,在前3个sub内,$k$只需要开到2048。 然而后面的数据$a$非常大。 考虑按位贪心。 对于个数限 阅读全文
posted @ 2020-12-01 10:01 celerity1