2.22 比赛

2.22 比赛

也就是说,输出个 No,输出个 \(n-1\),分就比我四个半小时高了,哈哈!

difficulty:2748,2871,3272

A

Subtask 1 (30pts)

考虑状态压缩动态规划,dp[S][ans] 表示当状态为 S 时,目前答案为 ans 时的方案个数。

我们发现每一次概率 \(\div n\),都一定会多一个 X。所以概率即为 \(\frac{1}{n^{点的个数}}\)

转移是容易的,我们发现 dp[S][ans] 可以对所有 \(s_i=X\) 的位做转移,代价为 最接近的点到 \(i\) 的距离。

时间复杂度 \(O(2^n\times n)\)。理论复杂度低但是实现起来有难度,(不知道是否可以避免)但反正常数比较大。

Subtask 2 (65pts)

出题人你好会造数据呀qwq。

输出 No 即可获得 50pts。综合 Subtask 1 可以获得 65pts

upd:原来是 spj 只检查了第一组问询。那出题人你好会写 spj 呀qwq。

Subtask 3(100pts)

解法显然是 dp。考虑怎么 dp。

\(P_{l,r}\) 表示将 \([l,r]\) 区间全部改为 X 的方案数。

\(f_{l,r}\) 表示将 \([l,r]\) 区间全部改为 X 的 \(ans\) 之和。

答案:枚举最后一次的操作,设最后一次把第 \(k\) 个位置从 . 变成 X ,答案为

\[\sum^n_{i=1} p(i+1,i+n),(f(i+1,i+n)+\frac{n-1}2)\]

\(c(l,r)\) 为原序列中 \([l,r]\) . 的数量。

枚举上一次从 . 变成 X 的位置 \(k\)

\(c(l,r-1)-1\) 次,必须:

  • \(a=c(l,k)-1\) 次随机到 \([l,\cdots,k]\) 中,每次概率为 \(\frac{k-l+1}{r-l+1}\)

  • \(b=c(k+1,r-1)\) 次随机到 \([k+1,\cdots,r-1]\) 中,每次概率为 \(\frac{r-k-1}{r-l+1}\)

\(c(l,r-1)\) 次,必须随机到 \([l,k]\) 中,概率为 \(\frac{k-l+1}{r-l+1}\)

概率为

\[t(l,r,k)=\binom{a+b}{a}(\frac{k-l+1}{r-l+1})^a(\frac{r-k-1}{r-l+1})^b\frac{k-l+1}{r-l+1} \]

\[p(l,r)=\sum^{r-1}_l t(l,r,k)p(l,k)p(k+1,r)\]

\[f(l,r)=\frac{\sum^{r-1}_l(f(l,k)+f(k+1,r)+\frac{r-l}2)t(l,r,k)p(l,k)p(k+1,r)}{p(l,r)}\]

B

TestCase 1

考虑 100circle \((X,Y)\) 能追到这个人 \((x,y)\) 有哪些可能。

如果 \(y<Y\),那这两个人相当于做相遇问题,一定可以遇到。

反之,100circle 的运动相当于变成了四方向。所以一定会存在一个点 \((x,Y)\) 是相遇点。 100circle 必须赶在厕所小兵之前到达相遇点。

\(|x-X|>d-b\) 就追不到。

TestCase 6

观察样例的答案文件可知,答案似乎一定是 \(n-1\)\(n\)。这一点是好证明的。

然后合理猜测,越大的 \(n\) 会使得答案为 \(n-1\) 的概率越大(当然你也可以看一下样例四)

输出 \(n-1\) 可以得到这 10pts。

TestCase 2,3

因此,我们发现只要保住一个厕所小兵不憋屈致死就变成了小 F 的最大目标。

小 F 可以放弃一个,去保住另外一个。

也就是两个厕所小兵不会同时憋屈致死当且仅当 \(|A_x-B_x|\ge \max(|A_y-B_y|,1)\)

TestCase 4,5

同理,手玩一下可以发现,三个厕所小兵可以保住其一当且仅当 \(|A_x-B_x|=1\)\(A_y=B_y\)\(C_x\neq A_x\)\(C_y\ge A_y\) 即可。

手玩能力很重要。

TestCase 6,7,8,9,10

若答案为 \(n\)100circle 看起来必定按照 \(y\) 从小到大去惩罚小兵。因为 \(y\to y+1\) 是八方向的,\(y\to y-1\)只有四方向。

如果 100circle 按照这样的路径惩罚所有 \(y<t\) 的士兵,但还是惩罚不了 \(t\) ,则答案必定为 \(n-1\)

如果不存在上述情况,则答案必定为 \(n\)

根据这个可以做到 \(\mathcal O(n^2)\)。不考虑排序部分,我们可以按照从小到大遍历 \(y\),需要特判 \(x\) 相等的情况,时间复杂度 \(\mathcal O (n\log n)\)

C

我要学 SAM。

posted @ 2024-02-29 15:01  wtcqwq  阅读(10)  评论(0)    收藏  举报