jzoj 2016.5.28noip模拟赛C 总结

这次比赛是分开做的,只有三道题,08年市选(第一第三题数据加反,第二题没有多组数据,然后就全部爆0并列第一)

读题

第一题,矩阵乘法
首先注意到,题目有两个奇怪的地方
1.给出了c矩阵
2.是二进制矩阵

然后就按照这两方面去想了,没啥想法,先放下。

第二题小树
.. 贪心?DP? 。。 先看下一题

第三题三角形
咦排序扫一遍不就好了嘛,送分题,甚好甚好

继续想第一题。。 觉得压位好像会比暴力快上一点,于是选择压成16个int64再算

差不多九点开始码

九点半第三题顺利调过,开始搞第一题

十点多打完压位,去看看第二题
然后就是半个多小时的思考… 然后.. 比赛就结束了

分数0+0+0=0 50+0+100=150

第一题和暴力一样,都是50。没注意到统计1的个数那里是N的,这样就要比 n3 还要慢QAQ..
第三题不出意外切掉了。
第二题好多人A啊! 怎么回事?

稍微的讲讲题

第一题 官解是给a*b与c都乘上一个较小的矩阵(将矩阵规模缩小),然后再去比较
因为满足结合律,所以 abf = a(bf) ,所以n*n的矩阵就变成了与f规模一样的小矩阵
因为可能结果碰巧一样,所以要多随机几个f

觉得不大对劲啊。。 那为什么要是二进制矩阵?
还有一种 infleaking 做法是先一行一行压b的位,然后再用 Ai,jSUMbk ,结果累加到 SUMci 中,然后再整行与原C比较。等价于将原本的 Ci,j=Ai,kBk,j 分解,将J调到了内层循环,I、K作外层

第二题
官解树形DP

但那些AC了的人说: 他是求 max(widi) ,直接找一个最大的 widi 即可。
我们先用理性的思维去理解这句话:
首先有

1.xy>ab
求证
2.xy>x+ay+b

由1得, xb>ay
然后将2化简, xy+xb>xy+ay ,xy消掉,就是上式。 得证。

总结正文
第一题, 关于矩阵的问题,可以通过乘一个小矩阵把问题规模缩小,不过要注意偶然情况。
第二题其实树形DP很简单,但就是没有深入想,一直在思考贪心策略
实数要注意精度问题,第三题就要开extended(18位有效数字),real是不够的。

你可能感兴趣的:(jzoj 2016.5.28noip模拟赛C 总结)