2016级新生周赛(三)题解

A:MeetingFriends这题翻译出来大概就会写了。。三个人分别在数轴上的三个点,他们要在一点会和,求所需走的总路程的最小值。不难看出会和点一定是那三个点中的一个,对于每个点,求出其和另外两个点的路程之和,那么最小的就是答案了。代码:http://paste.ubuntu.com/23480424/​B:蚂蚁可以知道两只蚂蚁相遇后,当他们保持原样交错而过继续前进也不会有任何问题。我们可以认为每只蚂蚁都是独立运动的。所以要求时间最长,只要求所有蚂蚁中到竿子端点的最大距离就好了。代码:http://paste.ubuntu.com/23480426/​C:三角形面积方法1:三个点的求出两个向量,再运用向量叉乘求出面积,如果面积为0则说明不能构成三角形。​​代码:http://paste.ubuntu.com/23480432/方法2:三个点可以求得三条边的长度,运用三角形两边之和不能大于等于第三边判断是否构成三角形,如果能,运用海伦公式求出面积。代码:http://paste.ubuntu.com/23480466/D:最大公约数代码:http://paste.ubuntu.com/23480437/​E:最大连续子段和这题枚举每一个子段和是一定会超时的,但我们有O(n)的方法,定义一个sum,对于每个数x,使sum+=x。这时sum会有两种情况。1:sum>0,那么这个sum有可能是最大值,若sum>ans则更新ans。2:sum<0,sum不能为子段做出贡献,所以另sum=0。这样一次循环就能得出结果了。代码:http://paste.ubuntu.com/23480446/F:求和代码:http://paste.ubuntu.com/23480454/​​​​

posted @ 2022-10-22 18:22  河南工业大学算法协会  阅读(12)  评论(0编辑  收藏  举报