P8340 [AHOI2022] 山河重整 做题记录

给定 n,pn,p,求有多少个 {1,2,3,,n}\{1,2,3,\dots,n\} 的子集 SS,满足 1xn,TS,x=yTy\forall 1\le x\le n,\exist T\subseteq S,x=\sum\limits_{y\in T} y,对给定正整数 pp 取模。

也就是求有多少个子集 SS 满足其 01 背包可以表示出 [1,n][1,n] 中的所有数。

1n5×105,2p1.01×1091\le n\le 5\times 10^5,2\le p\le 1.01\times 10^9时限 33 s

阅读全文 »

CF1874G Jellyfish and Inscryption 做题记录

给定一张 nn 个点 mm 条边的 DAG,每条边 uiviu_i\to v_i 都满足 ui<viu_i<v_i

点有五种类型:

  1. 无特殊事件;
  2. 走到这里会获得一个二元组 (a,b)(a,b)
  3. 走到这里可以选择一个之前获得的二元组,将其的 aa 增加 xx
  4. 走到这里可以选择一个之前获得的二元组,将其的 bb 增加 xx
  5. 走到这里会获得一个数 ww

你要从点 11 走到点 nn,保证点 11 和点 nn11 类点。

走到点 nn 时可以选择一个之前获得的二元组,将其的 bb 乘上 10910^9

最大化最终获得的所有二元组的 a×ba\times b 的和加上获得的数 ww 的和。

1n2001\le n\le 2001mmin(n(n1)2,2000)1\le m\le \min(\frac{n(n-1)}{2},2000)1a,b,x2001\le a,b,x\le 2001w1061\le w\le 10^6

阅读全文 »

P14170 二分图最大匹配期望 做题记录

给定 n,mn,m 和一个 n×mn\times m 的非负整数矩阵 aaai,j[0,100]a_{i,j}\in [0,100]

根据这个矩阵构造一个二分图,其有 nn 个左部点和 mm 个右部点,连接第 ii 个左部点和第 jj 个右部点的无向边 (i,j)(i,j)ai,j100\frac{a_{i,j}}{100} 的概率存在。

求这个二分图的最大匹配大小的期望。

1n,m91\le n,m\le 9

阅读全文 »

AGC009D Uninity 做题记录

如下定义一棵树的海胆度:

  • 一个单点的海胆度是 00
  • 一棵树的海胆度是最小的 kk 满足删掉其某个节点后剩下的连通块的海胆度都 k1\le k-1

给定一棵 nn 个点的树,求它的海胆度。

1n1051\le n\le 10^5

阅读全文 »

ARC184E Accumulating Many Times 做题记录

对于一个长 mm0101 序列 a[1,m]a_{[1,m]},定义变换 ff

  • f(a)i=(jiaj) mod 2f(a)_i=\left(\sum\limits_{j\le i}a_j\right)\text{ mod 2}

也就是做一次异或意义下的前缀和。

对于两个长 mm 的序列 a,ba,b,定义 g(a,b)g(a,b) 为:

  • 至少对 aa 做多少次变换 ff 才能令 i,ai=bi\forall i,a_i=b_i,如果无论做多少次变换都不可能,那么 g(a,b)g(a,b)00

现在给定 nn 个长 mm 的序列 a[1,n]a_{[1,n]},求 i<jg(ai,aj)\sum\limits_{i<j}g(a_i,a_j),对 998244353998244353 取模。

1n×m1061\le n\times m\le 10^6ai,j{0,1}a_{i,j}\in \{0,1\}

阅读全文 »

AGC036D Negative Cycle 做题记录

有一个 nn 个点的带权有向图,刚开始:

  • 1i<n\forall 1\le i<n 存在边 ii+1i\to i+1,边权为 00,这些边不可删除
  • 1i<jn\forall 1\le i<j\le n,存在边 iji\to j,边权为 1-1
  • 1i<jn\forall 1\le i<j\le n,存在边 jij\to i,边权为 11

给定 n×nn\times n正整数矩阵 AA,删除可删除的 iji\to j 的有向边的代价为 Ai,jA_{i,j},求最小的代价使得图中不存在负环。

1n5001\le n\le 500

阅读全文 »

AT_joisc2017_c 手持ち花火 (Sparklers) 做题记录

nn 个人在一条数轴上,第 ii 个人位于 XiX_i

每个人手中有一个烟花,每一个烟花可以燃烧 TT 秒。(可加强到每个人烟花燃烧时间不同)

00 秒时,第 kk 个人的烟花开始燃烧。

人们可以在数轴上以相同的速度 ss 奔跑(即每秒奔跑 ss 个单位)。当两个人位于同一个位置,并且某一个人手中的烟花是点燃状态且另一个人手中的烟花未点燃,那么他们可以选择是否传火,即点燃另一个人手中的烟花。

求最小的非负整数 ss 使得所有人的烟花都可以被点燃。

1n1051\le n\le 10^50Xi,T1090\le X_i,T\le 10^9XiXi+1X_i\le X_{i+1}

阅读全文 »