20260319模拟赛

20260319模拟赛

切割大师

题面:

\(n\) 件物品,每件有两个属性 \(v_i,m_i\),你可以至多进行两次切割操作,选则一件物品和实数 \(p\),变成 \((pv_i,pm_i)\)\(((1-p)v_i,(1-p)m_i)\) 两件物品。最后将所有物品分为两组 \(S,T\),最小化 \(\epsilon=\dfrac{|\sum_{i\in S}v_i-\sum_{i\in T}v_i|}{\sum v_i}+\dfrac{|\sum_{i\in S}m_i-\sum_{i\in T}m_i|}{\sum m_i}\) 输出方案。
\(n\leq 10^6\)

题解:

结论是一定有 \(\epsilon=0\)。把 \(S-T\) 的式子变成全集 \(U-2S\),现在是每个物品属性是 \((2v_i,2m_i)\) 切割并选择一个集合使得 \(\sum_{i\in S} 2v_i=\sum v_i,\sum_{i\in S} 2m_i=\sum m_i\)。相当于二维平面上有若干线段和两次切割操作,找到一条路径到达点 \((\sum v_i,\sum m_i)\)

将所有线段按斜率从小到大顺次连接称凸壳,每次删除斜率最小的线段,在这个过程中必有一个时刻凸壳扫过目标点。找到这个时刻删除的线段和扫过目标点的线段,切割删除的线段使他删除一部分让凸壳经过目标点,再把目标点之上的凸壳全部删掉。至此构造出了 \(\epsilon=0\) 的方案。

染色序列

题面:

\(n\) 个数排成一圈,每次选择一个数 \(a_i\),将 \((a_{i-1},a_i,a_{i+1})\) 变为 \((a_{i-1}+a_i,-a_i,a_{i+1}+a_i)\),求最少操作次数使得所有数非负。\(n\leq 3\times 10^5\)

题解:

考虑序列怎么做,操作 \(i\) 本质为交换 \(i\)\(i-1\) 的前缀和,要求 \(s_i\geq s_{i-1}\),所以答案是前缀和逆序对数。

考虑环上做广义前缀和,\(s_i=s_{i-1}+a_{i\bmod n}\),操作一次 \(i\) 的效果是交换所有 \(s_{i-1+kn}\)\(s_{i+kn}\)。令 \(r_i\) 表示 \(j<i,s_j>s_i\)\(j\) 的数量,当 \(s_n>0\)\(r_i\) 是有限的,且 \(r_i=r_{i+n}\)。显然 \(s_n\leq 0\) 时除了初始全是 \(0\) 都无解。

每次操作 \(a_i\) 时如果 \(a_i>0\)\(r_i\) 总和加一,\(a_i<0\)\(r_i\) 总和减少一,要求最后都是 \(0\)。即答案就是所有 \(r_i\) 之和。由于 \(s_{i+n}=s_i+s_n\),考虑 \(s_i>s_j\)\(s_i\) 会给 \(s_{j+kn}\)\(r\) 有多少贡献。\(r_i\) 总和就是 \(\sum_{i=1}^n\sum_{k=1}^{n-1}\big[s_i>s_{i+k}\big](\lfloor\dfrac {s_i-s_{i+k}-1}{s_n}\rfloor+1)\)

\(s_i=p_is_n+q_i(0\leq q_i< s_n)\),答案式子变为 \(\sum_{i=1}^n\sum_{j=i+1}^{i+n-1}\big[s_i>s_j\big](p_i-p_j+[q_i>q_j])\)。这个式子等于 \(\sum [s_i>s_j](p_i-p_j+[q_i>q_j]-[i>j])\)。证明可以依据 \(s_{i+n}=s_i+s_n\) 通过分讨 \(s_i-s_j,s_n\) 的关系证明。

posted @ 2026-03-21 17:47  programmingysx  阅读(2)  评论(0)    收藏  举报
Title