您的位置:首页 > 其它

CF # 92 (Div. 2 Only)

2012-12-26 15:27 309 查看
伟健昨晚说今早要早起,估计现在已经到了吧,天府之国,ACM的征程。

昨晚CF 92 (Div. 2)。开始前还以为难度会和之前一样……酱油。谁知道并非如此。

最后又是遗憾了。

A题小水。

题意:一条队伍n个人,某个人能确定他前面有不少于a个人,后面不多于b个人。求可能站位的数目。

思路:如果把人标号成1到n 那么可能的站位只可以是[a+1,n]和[n-b,n]的交集。

不知道是不是本人脑袋迟钝还是那时候没入状态,判定条件都想了半天,惭愧,不过还好可以拿来热热脑子。

B题

题意:给n个k位数(n,k都小于8)。现在可以对这些数字的数码重新安排次序(例如1234可以变成3214等等)不过要求n个数字重排的方式要一致(1234,5678 →3214,7658)。

经过某一种变换后,n个数的最大值和最小值之差为x,求x最小值。

思路:很明显的DFS,生成每一种可能的变换,然后用每一种变换处理字符串得到新的字符串,再用sscanf得到这些数字,x就不难求得了。

C题挂了。。。。

题意:给出一个字符串s,其长度为len

问是否有一种变换能让s满足这个条件:

对于任意素数p 思路:题意其实挺拗口的。换一个说法就是:在1~len中找出素数p,s在p的倍数的位置全部是同一个字符。

***然而这题是有一个潜在性质的***

假设len=10,那么符合的素数有2,3,5,7;也就是说

2,4,6,8,10上的字符要一致;

3,6,9上的字符要一致;

5,10上的字符要一致

7上的字符要一致

能看出:

只要len/p<2 可以不作考虑,因为只有它自己一个位置。

len/p>=2的话,他们的字符也是和2的倍数那些一致,因为无论p是多少,p的二倍也是2的p倍。

故可以先统计以上这些数字有多少(注意不得重复统计6,12这类)然后和s字符最多的数目作比较,

s能提供足够的字符就是yes 反之当然是no了。字符串处理处理就得了

今天起来发现他挂了……擦!

错在统计那些数字的时候用了容斥定理。 没考虑素数很多的情况下会超时(事实上二三十个就是极限了。更别说1000以内那二百多个了)。其实根本不需要容斥定理。直接设置一个标记数组,然后用这些素数遍历标记的,每有新标记就计数。len<=1000的数据根本不用担心超时。真心2了。

D题未解决

题意:要求从(x1,y1)走到(x2,y2),走得时候每一次只能走相邻的四个(上下左右)。有这样一些点被定义为坏点

(x+y)%2a==0或者(x-y)%2b==0 其中之一满足就算是坏点。

求走过坏点的最小值。

思路:那两个条件可以让我们在图上划出许多许多这样的直线

x+y = 2a*i(i是整数)

x-y = 2b*j(j是整数)把图分成若干个方形。

时间到。然后就没然后了。

个人估计a=1或b=1的情况需要特判。

总结:哎,本来test之前排名又是200+很靠前的样子的。c题一个小疏忽就断送了大好排名了。不是第一次啦。

感觉自己水平应该是有的了,就老是各种差一点,然后各种遗憾。擦!!!

最后,伟健比赛要加油啊,保持平常心,才能有好发挥。

培鸿君啊,多做点CF啦。我们要一齐努力才行的嘛- -
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm CodeForces