第一题
【题目及题号】math superoj941
【题解】
求证 a>b,c>d时ac+bd>ad+bc;
证明 ac+bd-ad-bc
=a(c-d)+b(d-c);
=[(c-d)(a-b)]>=0
所以把a,b两个序列排个序,按序乘起来就是最大值,an*b1+an-1*b2……就是最小值。
【考试ING】
傻逼的我第一遍没有sort就乘起来了,还好拍的时候发现了。
开long long,不开要注意答案1ll*防爆
第二题
【题目及题号】tree superoj942
【题解】
就是个裸的lca
【易错点】
注意特判一下x==y,x不存在,y不存在的情况。
其实我会说这个题的暴力比标算还难写吗Orz
第三题
【题目及题号】shortest superoj943
【题解】
用floyd的思想来解决此题,我们可以把一个个删点的行为看成是逆向的一个加点,这就相当于我们每次往图中加一个点,并且不断更新答案。
【考试ING】
其实这题有个结论我只是大概证明了一下。
结论是:如果点对之间的距离被更新,那么它们一定经过新加入的点。
反证:如果当前路径被更新的点对不经过新加入的点,这等价于没有使用新加入的边。
那么最短路径应该在上一轮已经出现。所以必然经过新加入的点。
因为特判比标算跑的快,开心~
我会说我是默认floyd是正确的才做的这题吗……其实我并不能严格证明floyd是对的,不过bellman的证明应该可以类似证明吧,我太弱了Orz
最后拍了3000组左右没有一个错就交了。
题目 | 预估分数 | 实际分数 |
---|---|---|
Math | 100 | 100 |
Tree | 100 | 100 |
Shortest | 30~100 | 100 |