十一届蓝狐杯的总结,顺带一点解题报告

今年的省赛结束了,可怜的我只搞出了6个题,曾经励志拿金的男人只分配银一枚,不胜惋惜。

从这样的状态来看,明显是不行的,这次比赛能看出我们队的默契还是有,有人看题,有人出思路,然后我就当苦力敲代码,唉~还好哥是处男手速过关。但是这次比赛也有明显的问题,最最最严重的就是模版问题,一个半小时的时间卡在那个判断多边形是否有重叠面积的题,由于准备了模版,是判断一个点在多边形内还是边上还是外面的模版,然后。。这只是在网上拷贝的模版,然后问题就慢慢体现出来了,首先对于码义工我来说,风格不同,我用了将近二十分钟才慢慢反应过来,但是却不是很适应别人写代码的那个风格,然后就是调试,因为不是自己写的模版,并不能很明确地对其进行操作,比如其中出现一个小问题需要调试,那么就不好搞了,只能慢慢把代码去理解一遍,瘦敲都敲了半小时的代码啊,这时间都足够看几章小说了Y0Y。

由于这次比赛的题目太过于简单,反倒让我想要质疑这种比赛拿奖的质量,不过那天正好赶上了啤酒节,我倒是喝爽了。。

然后把一些题讲讲:

A、Aerial Tramway :表示从始至终对这个题没印象,因为我是不看题的,我们看题的队员也没主动来跟我讲这个题的题意,所以这是被忽略的题之一,不值得做起来怎么样,感觉是纯种数学推论。


B、大还是小:是说让你输入两个数,比较他们的大小或者相等,当然我当时没仔细去看题,就觉得是跟航电那个a=b的题一样,这题只是说了整数部分和小数部分都非空,而且不会有前导零,所以去掉一下操作之后就变成了首先确定小数点的位置,然后去掉小数部分的后缀零,然后就分成整数和小数两部分比较。


C、多边形的公共部分:就是这个题,坑爹到死,我表示我是没花心思去思考这个题的,但是题意还是讲一下,就是说给你输入两个多边形,让你判断他们是否有公共面积,也就是说他们是否有重叠,这题就是让你判断一个点在一个多边形的位置,输入第一个多边形并记录下来,然后第二个多边形就只要依次对比它的顶点在第一个多边形的位置,如果有一个点在第一个多边形之中,那么一定有重叠面积,然后就是另一种情况,那就是有两个或者以上的点在不同的边上,比如是两个点在一条边上,那么这两个多边形只是共用了一条边,并没有重叠,但是两个点在不同的两条边上面,这两点之间是有两条路径相连的,因为是简单的多边形,(我理解的是凸多边形),所以这两条路径一条在第一个多边形的外面,一条在里面。


D、错误的算法:输入一个矩阵,告诉你一种计算一行一列数值总和最大的方法“取值最大的那一行和取值最大的那一列求出的总和就是最大的这个”,也就是说求出每行的值,取出最大的那个,求出每列的值,取出最大的那个,然后把他们包含的元素值加起来就是最大的,明显这是个错误的,所以要求你判断对于某一组测试数据,这个算法运行的结果是正确的还是错误的。因为只有最多25W个点,所以直接暴力枚举以点为中心的方案,但是你要提前把每个点在的行和列的值打表,不然会超时。


E、简单的土伦问题?:给你个二维矩阵,每个点可能是带权值的1~100的数字,或者是表示不能到达的“ * ”,然后第一次要你求A(r1,c1)到B(r2.c2)的最小权值,也就是说从A到B的路径上的权值总和最小,第二次要你求的同样是最小权值,但是要求走的下一步的方向不能和当前相同,就是说当前点往下走,那么到了它下面那个点就不能继续往下走,只能往其他三个方向。首先,第一次搜索的话直接广搜,用一个数组来标记二维表的当前权值总和,就是说从A点到这个点最小的权值总和,判断下一点能不能走就只要看它是否越界和走到那里的当前权值总和是否更小,搜索到B点还不能停止,要全部方案都搜索完。然后第二次搜索就在记录当前点的权值上加上四个方向标记,如果方向相同,每一点走下另外一点一定要带着走过去的方向,然后跟那个点中和这个方向相同的最小权值比较大小,然后入队继续搜索。


F、阶乘除法:输入k表示k=n!/m!,n尽量小,没有的话就输出那堆英文。。这个题除了k=1,都有可以输出的,因为除了k=1,其他的我最少都可以写k!/(k-1)!,然后是怎么求这个n和m,而且n要尽力小,这里你会发现,n!和m!除去公共部分就是从m+1一直乘到n,这一小段的因子的个数是n-m,哟~有木有发现很经典?我就以因子个数为标准,因为他一定是连续的,所以我们以个数来打表,dd[x][y]表示个数为x,从y开始的一小段,比如dd[2][1]=1*2,dd[5][3]=3*4*5*6*7,然后说是要保证n尽量小,那么你想啊,都是连续的一段,而且相乘得到的值都是k,肯定是长度越长,结尾的那个数字越小啊,所以就从长度最长那个开始往下面遍历,然后相同长度的情况下,这些段的总和是单调的,比如长度为3,1*2*3<2*3*4<3*4*5...这些还是没问题吧?所以对于每一个长度段我们可以用二分查找,不然天知道它会不会超时呢。有一个很需要注意的,因为14!是60亿,大于题目要求的10亿,所以长度我们最多弄14就行了,而长度为2的数组里面只需要标记到10W,因为10W*(10W-1)大于10亿,然后便利按照长度从大到小去一次二分找最接近k的,如果找到就退出,如果不能找到就输出k和k-1。


G、Graph Guessing:一眼都没看过,不知道题意,更不知道做法。


H、聊天止于呵呵:就是每行输入两个人的对话,然后判断他们最后那次对话中,有多少个是出现了只包含he组成的并且个数不小于2的,然后输出这个数量在总对话中的比率。每个对话时包括两个人,还有对话内容,所以最后那个对话应该是包含这两个人的最后输入的那次,所以我们把输入记录好,然后从下面往上面循环,因为题目简单,人名就是大写字母,所以最多26个人,开个二维数组用来标记两个人是否已经出现过最后对话了,因为我是从后向前循环的,然后是在对话中找hehe串,只由he组成,而且he的个数不小于2,所以he不能算满足条件的,hehehe还有hehe还有HEhe等等是可以的,不区分大小写,而heheh这种是不可以的,因为只有两个半he,然后每找完一个就标记着两个人之间的对话已经出现最后一句了,这样是为了省略掉出此之外两人的其他对话,不然会超时的。


I、Internet of Lights and Switch:这个题是我坑的,我看见30W的数据就吓尿了,哈哈,没经过仔细的分析,所以没发现这题很水,就是依次告诉你n个灯泡控制的灯,然后要你求a到b这些开关中可以连续按一小段范围内的灯炮,使最初全开着的灯全部关掉,最多50个灯泡,long long是2^63,所以用二进制压缩去弄,用异或,50个1连续异或一小段,如果能变成50个0,那么表示这小段可以使这些灯泡集体变一下状态,然后直接输入啊。


J、又一道简单题:输入一个四位数,要你改变一个数字让它变成某个数的平方x,不是四位数么?只要满足有三个位上面的数字和x上对应的位的相同,那么就是可行的,而100*100=10000,所以最多是100的平方,直接打表,然后暴力匹配就行了。


K、Keep Fit!:没看,三道没了解一丁点儿题意的题之一。。。


对于后面的区域赛,对比一下以前的,感觉很轻松啊,一题就是铜,但是。。。题难啊,要碰到自己对口味的,一眼就有想法的,可能很难,这时候要看自己的水平了,自认为水平不错,但是的确不是很高,所以这些天得效仿学长那样狠狠对待自己,天天总结,每天要像对待明天去比赛一样去整理自己的模版,然后把自己没把握的,不熟悉的好好学学,毕竟模版不是自己的,就算是自己写的模版,因为这个理由而久久不复习,那么到时候会很难上战场的,所以最好是不用模版,自己多些,多熟练,这样绝对不会有错。有了方案,下面就看行动了,行动之后才很经过比赛看成果,没有行动,比赛资格都没有,更别说其他,acm就是要一种态度,一种信念,不能支撑自己往下走,那么这对于你来说就是一条不归路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值