SRM 657 DIV2
-------一直想打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了,以后也会坚持参加每一场。
Every day is meaningful, keeping learning!