duel prob/duel chall 随记
CF 1672 F1
-
\(2000\)。构造。
-
\(2k\) 卡了好久。
-
类别为 /duel chall。\(2024/2/27\)。
因为难过度为 \(n-\texttt{# of cycles}\),所以求 \(\min \texttt{# of cycles}\) 就可以了。设出现最多的为 \(k\) 次。那么一定 \(\texttt{# of cycles}\geq k\),我们想办法 \(=k\) 既可以了。这个可以想到直接对于每一个“个数”,都循环移位一次(先排序)。
CF 313 E
-
\(2300\)。构造,贪心。
-
简单 \(2k3\)。
-
类别为 /duel chall。\(2024/2/27\)。
有两种情况:
-
\(a_i+a_j<m\)。
-
\(a_i+a_j\geq m\),这时需要 \(-m\)。
先确定第一种情况。可以用一个 \(\texttt{stack}\) 贪心求出。然后确定第二种情况。这个也可以贪心求出。程序很好写。
CF 1516 E
-
\(2500\)。组合数学,dp。
-
不会的题,看了题解会了一种做法。
-
类别为 /duel chall。\(2024/2/27\)。
可以看题解,我写不好。
CF 1404 C
-
\(2300\)。离线,数据结构。
-
区区 \(2k3\),居然想了这么久,没救了。
-
类别为 /duel prob。\(2024/2/28\)。
可以先离线,\(r\) 端点从小到大排序。并且 \(a_i=i-a_i\),这样,若 \(a_i<0\),永远不能删掉。在 \(l\in[1,n]\) 都不行。
如果 \(a_i\geq 0\) 时,前面不能删多少它才不能删呢?有 \(i-a_i\) 个不能删是没有问题的。因此,维护一个数据结构可以查第 \(k\) 小就可以了。
CF 979 D
-
\(2200\)。\(01 \texttt{ trie}\)。
-
简单 \(2k2\),我有救了!
-
类别为 /duel chall。\(2024/2/28\)。
\(k\mid x,k\mid v \implies k\mid \gcd(x,v)\),\(x\mid v\) 可以直接判。
因此,可以把所有 \(k\mid a\) 中 \(a\) 插入 \(\texttt{trie}\) 中,后边直接跑 \(\texttt{trie}\) 找答案就可以了。
CF 628 F
-
\(2500\)。网络流(最大流),图的匹配。
-
看题!看题!特判!特判!
-
类别为 /duel prob。\(2024/2/28\)。
先按照 \(l\) 排序,并且特判掉明显不合法的情况。这样我们有了一些不相交区间的信息。
设 \((l,r]\) 内最多模 \(5\) 余 \(mod\) 的个数为 \(f(l,r,mod)\)。则可以这样建图:
-
\(s\rightarrow i\)。边权为对应的信息的个数。
-
\(i\rightarrow id_{mod}\),其中 \(id_mod\) 为模 \(5\) 为 \(mod\) 的总点,边权为 \(f(l,r,mod)\)。
-
\(id_{mod}\rightarrow t\),边权为 \(\frac{n}{5}\)。
跑最大流即可。如果 \(\texttt{max_flow}\neq n\),是 unfair
,否则为 fair
。