2020 ICPC, Indonesia Multi-Provincial Contest
2020 ICPC, Indonesia Multi-Provincial Contest
和神仙 jzp,thecold 打力一场比赛,被带着拿到了 38 名,下面写下简要题解
A. Arena of Greed
一堆金币,两个人轮流拿
- 当前金币个数是奇数,只能拿一颗
- 当前金币个数是偶数,可以拿一半或一颗
两个人最优化操作,求先手获得金币个数最多是多少
思考一下,如果当前是奇数没得选,不再讨论,偶数就有可能选一半或一个。
如果选一半以后变成偶数,那么我就选一个,因为选一半代表着对方能拿走至少剩下石子的一半,而事实上我可以让它更少,选一个以后对方只能选一个,这时候再选主动权就还在自己手里,对方永远不会拿到石子的一半。
注意当 n 等于 4 的时候要特判
B. Blue and Red of Our Faculty!
给个花朵🌼一样的图,即中心节点是 1 号点,剩下是一些环,这些环互不相交,它们都挂在 1 号节点上。
两个人从 1 号点开始走,每秒同时走一条边,走过一条边就打上标记表示不可以再次经过,直到两人无路可走。
问方案数,两个方案不同当且仅当两种方案两人的路径集合不一样。
这题很好想到,就是有些细节,容易发现两人肯定在一个花瓣上相遇动弹不得,剩下的花瓣只能整片走过,所以我们枚举它们相遇的位置,剩下的部分背包即可,背包时直接记录两者路径长度之差,最后要特判在 1 号点相遇和在和 1 号点相邻的边处相遇的方案数。
C. Captain of Knights
暂时不会
D. Danger of Mad Snakes
所有数据都是 \(1000\) 级别的,给个地图,上面有些龙,龙有价值 \(b_i\),你选中 m 条龙,如果一条龙切比雪夫距离 d 内有选中龙,那么它对此方案有 $b_i $的贡献,一次选中方案的价值是所有龙贡献和的平方。
总价值和为
所以我们考虑两条龙都被选中的方案数,这个方案就是 (总方案数 - A 龙未被选中的方案数 - B 龙未被选中的方案数 + A,B 均未被选中的方案数)
利用二维前缀和就可以轻松求出了。
E. Excitation of Atoms
不想放题面了,大细节题。
容易发现 k 较大的没有用,直接来回变把次数浪费掉即可
分类讨论即可,对于 \(k = 0\),直接枚举要激活哪个即可
对于 \(k \ge 2\),就是拿价值的总和减去前 \(n-1\) 个中最小的代价即可。可以让最小的代价所在的点 x 指向 1 号点,让 x - 1 指向 x + 1 ,这样就有一条 \(x \to 1 \to x-1\to x+1\to n\) 的覆盖所有点的路径了,显然最优。
对于 \(k = 1\),细节较多
- 让 1 号点随便指,剩下的当 \(k=0\) 做
- 选一个前缀 \(1 \to i\),让 i 指向 1,激活 1 到 i 最小值的位置,这样就把 \(1 \to i\) 全部消掉了,然后后缀选个最大值即可。
- 如果 1 号点激活代价小,价值大,我们就不好舍弃它,激活一个点付出的代价太大,我们就不会激活第二个点,所以如果选 1 号点,那么除了第二种情况,也可以在中间跳一个价值小的点去
这样就可以通过此题了。确实不易思考全面。
F. Flamingoes of Mystery
太水不说
H. Huge Boxes of Animal Toys
太水不说
I. Impressive Harvesting of The Orchard
看了看别人的 ac 代码,清一色的全是暴力 \(\Theta(n^2)\),本机造了个极限数据,有个程序只跑了 \(2.93s\),这个故事告诉我们,暴力 yyds,考场白给了一道题/(ㄒoㄒ)/~~