The 2018 ACM-ICPC Asia Shenyang Regional Contest

地址

RankSolvedABCDEFGHIJKLM
--/--4/13..O.O.O.ØOØ..

O: 当场通过

Ø: 赛后通过

.: 尚未通过

A Sockpuppets

unsolved


B Sequences Generator

unsolved


C Insertion Sort

solved by chelly


chelly's solution

D Diameter of a Tree

unsolved


E The Kouga Ninja Scrolls

solved by chelly&ch


chelly's solution

首先曼哈顿距离转成切比雪夫距离,于是x坐标和y坐标就独立出来了
问题转化成了,有n个位置,每个位置有一个数字和一个颜色,修改可以改变一个位置的数字或者颜色,询问[l,r]内相差最大的不同颜色数字
ch提出了可以用线段树维护区间的最大值 与最大值颜色不同的次大值 最小值 与最小值颜色不同的次小值

F Counting Sheep in Ami Dongsuo

unsolved


G Best ACMer Solves the Hardest Problem

solved by chelly


chelly's solution

注意到坐标范围很小,并且因为都是整点,所以距离一个整点欧几里得距离恰好为\(\sqrt{K}\)的整点个数并不会很多,打个表发现,顶多会有48*4个
所以对于每个操作就可以暴力了,可以用二维数组存下整个图
注意清空二维数组时候的技巧

H Rainbow Graph

unsolved


I Distance Between Sweethearts

upsolved by chelly


chelly's solution

如果权值式子没有前面那一坨max,后面显然可以异或卷积维护,直接FWT
现在考虑前面的max取值,显然只有0~2000,我们可以枚举前面最大值的取值,然后后面做一次FWT,这样只需要做2000次的FWT,时间复杂度是可以接受的
如果我们枚举每个最大的取值,会发现右边三个数组的初值很难界定,我们可以这样做:

  • 求出max<=k情况下的三个数组初值,然后fwt得到它们的异或卷积,于是我们知道了当max<=k的时候,对于右边六个数字异或出来的异或值,各自都有多少种方案
  • 求出max<k情况下的三个数组初值,然后fwt得到它们的异或卷积,于是我们知道了当max<k的时候,对于右边六个数字异或出来的异或值,各自都有多少种方案
  • 将上面两个结果的对应位置相减,于是就知道max=k时候右边六个数字异或出来的异或值,各自都有多少种方案

至于“max<=k情况下的三个数组初值”,可以在“max<=k-1情况下的三个数组初值”基础上加上数字差恰好为k的pair得到

J How Much Memory Your Code Is Using?

solved by chelly


chelly's solution

模拟一下

K Let the Flames Begin

upsolved by Feynman1999

首先,对于经典的约瑟夫环问题,我们记\(f(n,m)\)表示初始有\(n\)个人,第\(m\)个出队的人是谁(从0号开始报数)。则有递推式\(f(n,m)=(f(n-1,m-1)+k)\ \%\ n\) 其中\(k\)表示每报数\(k\)次一个人出队,注意编号从0开始

递推式的证明: 考虑现在有\(n\)个人围成一圈,然后从0开始报数。假设第一个出队的人是\(x\) ,这时还有\(n-1\)个人,我们从刚刚出去的那个人的下一个人从0重新编号,那么以当前局面重新开始,第\(m-1\)个出队的人是初始所求的同一个人,但编号不同,差多少呢?即\(f(n,m)=(f(n-1,m-1)+k)\ \%\ n\) 。 +1 -1 细节手玩一下。

回到本题,由于\(m,k\)可能会很大,但不会同时很大,当\(m\)较小的时候(\(m<=k\)),直接递推即可。

下面考虑\(m>k\)的情况,会发现模数大部分情况下远大于\(k\),也就是说可以用乘法代替多次加法,这样可以降低时间复杂度。具体代替多少次呢?考虑\(f(a,b)=ans\), 假设代替\(x\)次,则\(f(a+x,b+x) = ans+x*k\) 进行取模的等价条件是\(ans+x*k > =a+x\),即\(x>=\frac{a-ans}{k-1}\) 即代替次数确定了(整除不整除,快加到\(m\)了等细节注意一下即可)。

时间复杂度 \(O(感觉能过)\)


L Machining Disc Rotors

unsolved


M Renaissance Past in Nancy

unsolved

Replay

本场是由chelly,ch,Feynman1999打的
开始chelly找到了签到题J,于是写掉;ch开了K题约瑟夫,于是chelly把大白书丢给ch,ch学到了约瑟夫环的递推解法之后觉得可以魔改一下,于是上机;此时Feynman在跟榜读题。
ch的K题写的是递归,一直RE;Feynman告知chelly C题题意,chelly于是想C,Feynman去读其它题;随后chelly一直卡在C的计数,ch一直卡在K,陷入江局= =。
过了一段时间后,chelly想出了C题的做法,于是切掉,了解了G题之后,想了一会发现可以暴力,于是暴力莽了过去;ch成功放弃了K;
接下来三人一起讨论E题,chelly提出可以先转成切比雪夫距离使得问题简化,然后ch提出可以用线段树维护最大次大最小次小,于是chelly准备了一下上去码码码,在chelly码的同时,Feynman和ch讨论L题的几何,似乎讨论出了正解;
chelly在还剩40分钟的时候过掉了E,于是ch上机敲几何,最后由于精度问题WA到终场QvQ;在临近结束的时候chelly和Feynman读了I题,发现是个傻比FWT+计数,比E好写多了TAT

转载于:https://www.cnblogs.com/Amadeus/p/9944072.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值