• 第6届山东省ACM省赛总结


    被无情的打星了。

    题目终于挂出来了,应小盆友们的要求给他们写一份题解,可是在这之前我还是先写一篇流水账吧。
    今年我们有5个正式队5个打星队名额,老师说为了多给小盆友们点机会,于是让我们打星去比赛了。
    比赛还没开始,我和耗子同时看上了F题的气球,骚红骚红的。
    耗子开玩笑说要不我们先拿这个球吧,我说那万一是防AK的那可就jj了。
    提前两分钟发题,我们还沉浸在骚红色气球中,其他好多人都开始看题了(这也太不正式了吧)。
    我说咱别干这么败人品的事,把题目拆开放着,他俩让我先去敲vimrc。
    我还没敲完,耗子就跟我说A题签到,这么搞这么搞然后再输出什么什么,就好了。说完,我敲上,交了,11min - 1Y。我至今不知道A题是干嘛。
    这时看榜,C和F都有出的了,他俩已经去看C了,我自己去看F(骚红气球近在眼前)。
    F题三分可搞,但要推一堆式子有点麻烦。给耗子说完题意,耗子说他印象中那是个什么定理,老师讲过,代个式子就行了,所以才有人做的那么快。但他忘了。我表示完全不知道。
    F我决定先放一放,问旺旺C是什么意思。一个博弈,我自己在那画了几画,跟他说我怎么感觉都是先手必胜。“噢,那是个环,我刚刚没说清楚”。好险。然后耗子说小于等于2先手必胜,否则后手必胜。没错,如果链的时候前面的结论成立,那变成环的话后面这个结论也就成立了。我把C敲上,27min - 1Y。
    我刷榜看到J题交了一片全是红的,决定先不管它,回去敲我的F。让旺旺帮我推两个式子,我先把框架打好。(我几何太不6了)
    过了一会儿屏幕蹦出个框说J题数据范围描述有错。。。10^1000居然写成了101000。。。没多久又来广播通知J题需要改动。我再一刷榜发现已经绿了好几个了。这题可以开始做了。
    F还没敲完,耗子又来跟我说J题用java可以秒掉,我打开eclipse建好文件,他说怎么怎么怎么地,然后我敲上就A了。55min - 1Y。事后他们跟我说J题背景。。。唉,听着桑心。不过没掉这题的坑里倒挺开心。而且我们学校没有队伍被这题坑掉,于是我们就很没心没肺的忽略他题目出错的问题了。
    我继续回去写F。过一会儿抬头一看发现对面比我们多了个气球,那是B题的,我看看榜,发现B题过的还挺多,我们学校一个小盆友队也过了,我问他俩有没有看了B题的,旺旺说他看了,是什么什么什么。。我一想那好水啊,一个数组加一个set就搞定了。我又放下F去写B,在这之前我告诉耗子帮我把剩下那几个表达式都列出来。 B题写完交上,79min - 1Y。
    心想四道签到了,剩下的就没那么水了。一开始还以为F是签到,需要三分是不是我们想多了,结果到这时还是只有那一个队7min1Y的。
    我老老实实回去接着写F。写完,不过样例,重推公式。终于过样例,交上,WA。终于还是打破了1Y的局面。感觉这题不会有什么trick,过了样例应该已经可以了,仔细看一下代码也没什么地方出错。这时耗子想到会不会有精度问题。当时为了方便我们就用(0,0),(1,0),(1,1)作为那个三角形,因为任意三角形都是一样的。可是这个三角形可能在计算的时候产生较大的误差,于是我把坐标放大一万倍,交上,真的A了。。 112min - 2Y。
    跟榜走,这时H过的比较多。H是给n个数问任选两个能组成平方数的有多少种。G题也差不多,只是组成立方数。n是十万数据大小是一百万,当时想到一个暴力加一些剪枝的方法,觉得如果它卡的不严的话应该能过,毕竟还有个G,G题暴力肯定不行。跟耗子说一说题意,他也觉得可行。说完我就去敲了,他俩接着想。没多久,耗子过来跟我说他想到一个方法肯定没问题,同样的方法稍加修改也肯定能过G。我说我已经写完了,准备跑样例。他说那你先交一发,也许行,T了的话用我这个肯定行。跑过样例,交上,果然TLE。他想到的大概就是先把每个数分解,将平方数的因子去掉,最后看剩下的每个数几个,就是C几2了。就这么敲上,果断AC,156min - 2Y。
    “改成G有一个地方比较麻烦,但也没麻烦多少”。耗神渐渐飞起了。
    就是将每个数的立方数因子去掉,最后看每个数跟另外那个能和他刚好组成立方数的数有多少个,比平方数麻烦的地方是一个数和他自己就能组成一个平方数,立方数不是。但整体框架不变,都得分解。
    这时旺旺来说他看完L题了,感觉先来个强连通缩点再bfs求个最短路就行了。耗子表示图论不会,交给我俩。
    我说旺旺先理一下代码框架,我改完G就回来搞L。
    然后就去写G了。改到一半我发现思路有点混乱,决定让出电脑给旺旺打L,先在纸上理一理。理清楚后,我问旺旺L怎样了,他说模板打了一半,我说那先让我们改完,五分钟就好。然后我又回去打完,过样例,交上,马上让出电脑给旺旺。过一会儿,返回结果,RE。我打印了一份。没多久,找到错,跟当前数能形成立方数的那个数很大,导致数组越界。加一行交上,返回了WA。
    旺旺这边的L交上也WA了,叫我帮忙看看,让我重新看一遍题目确保没看错题,因为题目挺长的。
    我让耗子接着看代码,感觉AC就在眼前。我先帮旺旺看一下L的题目。
    耗子找到错,在子函数里有个地方我直接return了,导致没有执行到最后的某个赋值操作,从H改过来没改全而导致错误。。改完,再交,还是WA。
    我接着看L。
    旺旺说L找到了个错,再交,又WA。
    权衡了一下,G题思路很成熟,L题题目我还没看完。我说要不我先给G打个暴力对拍,肯定就能找到错。
    我正要开始写,耗子说先给我几组数据。一跑,果然错的。这时他发现是算重复了。每个数都被算了两遍,忘标记了。加上标记,再跑,发现自己的数据过了,题目的样例没过。(一直以为是自己输错了样例,现在题目放出来后才发现原来当时是用了H的样例,它们就最后一个数不同。H的样例在这题的答案应该是1,而这题的样例答案是2,于是我们用着H的样例在这题在算重复的情况下得到了和这题一样的结果,我们都认为是对的!)(这句话真拗口)就这么交上,A了。
    我回去接着看L。耗子表示图论不会,去找别的题看,看到了D题。
    过一会儿耗子来跟我说D题好像很水啊,贪心一下就行,怎么怎么怎么的,说着说着我都信了,按这个想法写上,30行,WA。
    我还是觉得看L更靠谱,感觉没什么坑,缩完点再求最短路可行,正在想一些数据。这时旺旺又交一发,默默的得到了个yes。真6。 271min - 3Y。
    我出去上个厕所,突然想清楚了D题的情形(那里真是个神奇的地方),之前想得太简单了。赶紧回来跟他们说清楚之前错在哪,然后现想。当时想的是枚举x的下界后通过贪心的方式确定上届,然后再怎么确定y,后来想想发现又进了前面的错误里。然后又想直接枚举x的上下界,这之后又不懂怎么去求y了。时间还有几分钟,想不动了,也敲不完了。
    我们开始吐槽。我回头一想发现这场都没有dp,至少没有稍简单的dp。后来问了其他题的题意发现好像只有K可以跟dp扯上边。有一道算啥概率的但也不是概率dp。错题J就不吐槽了,G和H几乎一样的题,一样的类型几乎一样的做法,也是醉了。那么多道数学题,耗神强行飞起。旺旺默默地单挑了L题。我只有特别不6的没有特别6的。。。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    属性可以通过下拉菜单选择的WebPart示例
    排序规则害死人,问个问题
    编写一个Flash播放器的WebPart
    在我的网站上开通了WebPart演示和下载列表。
    如何编写一个自动投票程序
    如何在url中引用域的内容呢?
    创建一个自定义ToolPart
    Linux下JNI的使用
    Android学习——ActivityManager与Proxy模式的运用
    Android中Adapter和Bridge模式理解和应用
  • 原文地址:https://www.cnblogs.com/DSChan/p/4861968.html
Copyright © 2020-2023  润新知