SRM 466

来源:互联网 发布:利达128eii主机编程 编辑:程序博客网 时间:2024/04/28 07:26

这场比赛是在校赛前作的,当时凌晨,问了校赛不瞌睡,我申请了个马甲去做,不至于跌正好的rating。所以果然悲剧的,DIV2的水题500 都不会做,1000更是题都没看的。

 

DIV 2 

 

250 : 是个简单的题目。暴力二进制枚举+位运算

 

题意:告诉你4种不同的硬币的单个的价值,然后你只能每种硬币使用一次。然后给你一个价值,问你这个价值能不能得到,如果得到就输出possible,不能就impossible。

 

解法:当然就是暴力了。当然暴力也有美学的。你可以直接用程序if else去枚举任一一种情况,当时我就很傻的如此做的。在插件没装的情况下,才写了220+吧。当然最简单的情况下,在练习的时候我用的是:你可以枚举0~1<<4这些情况,也就是说拿二进制去表示此种硬币可取不可取。写起来相当好写的。

 

注意情况:位运算一定要加括号,我练习时候没加,然后一直过不到样例,最后才写了237+的。。。

 

500:枚举暴力+比对

 

题意:这题意思是说给你一个数字(长度是10位),然后给你两种操作:1:你可以在前面加前导0,2:修改一位的数字。

 

为你用最少的步数去操作这个数字,使得这个数字最后得到一个数,这个数字,可以为0 ,也可以是具有奇数个约数的数字。

 

解法:作比赛的时候,在纸上推导出来把给你的数字分解质因数后,起每个质因子的指数一定是偶数。分析到这一步之后就不知道如何去写了。我直接去暴力的去搜了,当然我还看错了题目,就是我以为还可以有第三位操作就是可以擦去一位数字的。结果前三个样例都瞬秒,第四个直接就出来不来了的。直接郁闷的上床睡觉去了,准备第二天的校赛了,结果第二天校赛更加的悲剧,哎不提了。

 

解法就是:推出来要变成的数字一定是其质因子的指数是偶数,因为每个数的约束的个数,等于质因子指数+1的累积,所以要约数个数为奇数。推到这里,就很明明显了的。直接暴力0~~sqrt(n)的平方数,然后把所有这些数字加前导0 和当前数字一样的位数。然后一位一位的去比对,不同的就是操作数字。

 

这题还有一个地方就是你暴力的时候要考虑long long 的,我写的时候就是中间没用long long然后一直不过样例的

 

这题红薯在做DIV1的250的时候很快的反应出来写了220+好像,用他自己的话就是自然反应。这就是差距的啊。

 

1000:暴力+排序+位压缩比较

 

题意 :给你n*m的矩阵,矩阵里面的元素只有0 和1 两种,你想在有两种操作:1:你可以交换任一两行,2:你可以交换任一两列。

 

输出最后字典序最小的变换矩阵,n最大为8。

 

解法:比赛的时候没有看,下来练习的时候,直接想到贪心,就是直接按列和行分别排序。但是这种贪心是错的,错在当你有两行具有相同的0的时候你不知道如何去选择谁最小的。所以样例都不出的。

 

正确解法:想了下,你直接限制住一边,就是说你直接8!去暴力枚举一侧的选择,就是暴力那两行(列)交换,这样子前面贪心就不会出现那种不知如何去选择的贪心错误了。然后枚举之后就直接排序,排好序之后的矩阵就是最后的结果了的。这题暴力的时候,因为是8*8的最大,所以你可以那无符号的数字去存矩阵,然后去比较大小的。

 

DIV1:

 

250

 

同DIV2 500

 

500  推公式

 

题意:现在有一种彩票:有n*5个格子。每个格子里面有1~5*n的不同的数字,现在彩票发行商给卖彩票。出奖的时候,是任意选择5个数字组合。你的彩票中奖是如果你的任意一行有至少三个数字和他选择的数字相同的话,就证明你的彩票中奖了的。卖彩票是等概率的,选择5个数字的子集也是等概率的。问你你彩票中奖的概率是好多。

 

解法:我自己推了半天始终凑不够样例,一直是过不到n==2的时候的。我一直想不通地方时那个如何去定那5个数字位置的组合数。

 

总共的有(5*n )!中不同的彩票。然后你需要选择一行C(N,1),然后不是中奖的数字是(5*n-5)!然后我就不会推了的。选择5个数字一直是错的。然后就看了解题报告:上面说的是:不管中奖的5个数字是啥,你都可以映射到(1,2,3,4,5)这一个五元组上面来。所以你只要选择一行,然后去选择位置就好了。不用去选择数字的。

 

这一下就很明显了的。选择位置有三种:1)一行5个数字都中奖的,2)一行4个数字中奖,3)一行三个数字;

 

C(5,5)*C(5*N-5 ,0) +C(5,4)*C(5*N-5,1) + C(5,3)*C(5*N-5,2)。

 

这样最后的结果就是:(n*(C(5,5)*C(5*N-5 ,0) +C(5,4)*C(5*N-5,1) + C(5,3)*C(5*N-5,2))* ((5*n-5)!))/(5*n)!

 

推出公式之后就很简单了的。

 

很强大的是黄大牛,直接拿样例收工去拟合求出系数,然后就三行代码秒掉了这个题目。继续显示了很大的差距啊。

 

1000

 

一般都不是我可以挑战的,所以暂时没看题目,等我有那个实力之后我再回来修改这篇文章去把他写了吧。。。

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/silentlcy/archive/2010/04/07/5457742.aspx

原创粉丝点击