SRM 657 DIV2

时间:2022-04-06 11:15:48

-------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了。但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了..

T1:

题目大意:

给出8*8的棋盘判断是不是每行每列都有且只有1个棋子.

题解:不知怎么写题解..


T2:

题目大意:

有E个E,EM个EM,M个M,MH个MH,H个H.  都小于等于100000。

然后1个EM可以变成1个E或者M,1个MH可以变成1个M或者H。

求max{min{E,M,H}}.

题解:

我是直接枚举几个EM变成E,然后让MH的分配使得M和H尽可能接近就好。细节有点恶心,浪费了较多时间。

更好的解法是二分答案,然后判断是否可行。


T3:

题目大意:

给出函数f(x)=ax2+bx+c,求一个x使得f(x)能被109整除。

题解:

如果c=0 答案就是0.

然后我想为什么不是109+7而是109呢,显然可以利用这个东西的性质。然后可以发现109=29*59=512*1953125.

f(x) mod 109 =0 <--> f(x) mod 512 = 0 && f(x) mod 1953125 = 0.

所以先求出1953125以内的满足f(x) mod 1953125 = 0的所有x,显然满足条件的x是很少的.对于每个x,搜索x+1953125*i 是否满足条件即可。

这个复杂度我不会证明,但是显然很快..


总结:手速太慢。。前2题竟然搞了半小时。T3一开始的想法是错的,最后15分钟才另起炉灶。看着边上的ZBT啪啪啪40分钟打完3题room rank 1 让我吓哭。 还是不习惯tc.编译错误找不到错误在哪里.  总之下次终于可以打div1了,以后也会坚持参加每一场。