Vijos Oct.28 NOIP2012模拟赛

      只做了第一题,得分100,有29人得分超过100,zzm140分,只有14个人比他高。这次比赛难度应该是比较大,应该把暴力写好,第三题30分还是比较好拿。第一题写的时间太长了。

A  进制转换

      小数转分数是百度搜的规律,应该多想一会。这题耽误很长时间,一直在纠结分数转二进制的时候哪个句子在哪个句子前边。还是思路不清楚的缘故。

      还有两个很好的思路。

      官方题解:不难发现,我们列方程的方法是将X的小数点向右移动若干位,移出两个正好错开了循环节长度为的小数,此时两个数相减,可以将循环部分消除,便可以解出方程。一般地,假设有p1位非循环位,非循环部分形成的十进制数是k1;有p2位循环节,循环节部分形成的十进制数是k2。
      可以得到方程:10^(p1+p2)*X-(10^p1)*X=(10^p2)k1+k2-k1。

      比较暴力的做法:直接模拟性价比较高,将十进制的循环部分扩增到1000位
然后不断*2,hash判重。

Code

  orzsjx的神模拟

Code

B 时区

      好神奇的题目,看了题解以后做的。发现一个人的时区确定了以后他前面的人的时区就有了上界,后面类似,每次找可选时区最少的搜索。

Code

C 建房子

      把每一个可能建房屋的左上角作为处理的对象是很重要的一个想法。然后利用单调队列和前缀和可以再平方的复杂度里算出所有的代价。然后用一个双向链表维护可建造的点,暴力删除。

Code

原文地址:https://www.cnblogs.com/lijianlin1995/p/2744761.html