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

posted @ 2024-02-28 12:44  SFlyer  阅读(12)  评论(0编辑  收藏  举报