您的位置:首页 > 大数据 > 人工智能

ACMICPC 2014 Shanghai Onsite 总结

2015-02-26 09:53 405 查看
好久没有登录博客,貌似出了些问题,最近的一篇文章被莫名其妙的删了,通过google的网页快照找了回来,重发一下。

顺便补几个最近看到的关于这次比赛的总结讨论:

如何评价2014 ACM亚洲区上海站的题目? - 算法 - 知乎

如何解读ACM/ICPC 2014亚洲站上海赛区各高校参赛队的队名? - 算法 - 知乎

2014 ACM-ICPC 上海站总结 - 小袁在努力~ - 博客频道 - CSDN.NET

2014ACM/ICPC亚洲赛上海赛区总结 —核心网络

原文的发布时间是: 2014-12-08 16:41

总结

总的来说,退役赛一题拿铜走人也不算太遗憾。

感谢队友在封榜后推出了J的公式,否则我们就像其他109个队一样爆零收场了。。。。。

board

4y也算是不容易,能混到铜只能说是运气好。

看了下2011上海现场赛的榜,一题从银到铁,好凶残。

这场总体有点难吧,google出题完全没考虑弱校的心情啊,100+队伍爆零简直不给面子。

赛后看看有几道题应该是可以出的,实力还是不足。

流水账

周六中午到达上海,魔都这地铁图比帝都混乱太多了。来之前听各种传言说上海冬季湿冷很难受,实际体验一下发现对于我这个习惯了严寒天气的人来说这天气简直风和日丽……上大的食堂名字起得好棒,虽然我没记下来……刷卡消费十分贴心,午饭后就是开幕式,印象最深的讲话还是那个在西安说“争金夺银,铸铜打铁”的轮值主席。

热身赛开始,先看了最后一题,一看是用来做服务器压力测试的rp题就没兴趣了,试了一发没过就交给队友,结果他们到最后也没试出来……第一题只记得孟学长做过,我完全无思路;第二题是无向图最小环(Poj 1734 Hdu 1599)+离散对数,floyd+bsgs应该可以搞,结果floyd敲跪了。。。第三题貌似很神的样子。

晚上独自出来,这次行程很紧,也就周六晚能出来转转。坐地铁去南京东路步行街和外滩看了看夜景,去陆家嘴亲眼看了看东方明珠,早早地回房睡觉了。

正赛

一开始分头看题,15分钟都没有队伍AC,我们这种只能跟榜做的队伍压力山大。

偶然听到旁边队伍说L可做,我就去看了,只能说幸好没深想,否则又是个大坑……这时J和B逐渐有队过了,B一眼看过去n和m都是10^6的范围,这怎么搞,再加上个人觉得题目对顺逆时针的描述有问题(后来专门有通知给了解释),想了20分钟果断交给队友。后来队友发现是n*m<=10^6,但我们还是没能想到科学的方法,队友去搞了个暴力,一直到最后都没过。接下来我发现I有好多队提交,虽然都没过,于是开始考虑,目测简单贪心。这时提示I题rejudge,瞬间好多队通过,我们这边却陷入了困境,各种排序方法总能举出反例。。。。于是开始考虑排序之后用某种方法维护数据,能想到的方法复杂度都好高(其实树状数组应该可以,但是没写)。。到最后我都没想出来个合适的。队友陪我搞了会儿I就去推J了,终于在封榜前有了大致的结果,我去敲,经过3次WA后,修修补补总算过了……此时已经封榜,一半的队伍还是0题,当时的心情实在是……

赛后和旁边队伍讨论了一下,B线段树矩形面积并大概可做,I可用mutiset维护。感觉这两题还是可以出的,尤其是I,能想到mutiset基本必过。

赛后宣讲听到一半就要去赶火车了,江游(现在改名欢乐互娱)的宣讲我都听过好多次了,也没什么遗憾。

后记

弱菜的ACM之旅大概就这样结束了吧,三年前加入了实验室,真正激励自己开始学习的契机是孟学长组织当时我们这些新队员参加了一场2012的网络赛,是哪场已经记不清了,总之被虐得很惨。一路走来,默默关注了许多大神,看到了别人的奋斗足迹,自己虽然进度缓慢,但也算是在前进吧,虽然我是非计算机专业,但理工类专业编程技术好还是有很大好处的,三年来也算收获颇丰。算了算自己总题量也就900+,四次现场赛,一银两铜,也算是印证了“选对赛区顶千题”这句话。差不多该向新的目标奋斗了,最后再次感谢队友没让我的退役赛爆零。

J World Cup

最后附上J题代码,AC之后打印出来,回来照抄的,不保证能AC

题意:n支球队和其他队伍各比赛一次,胜负平都能得到相应的积分(a,b,c),取前m名晋级,问最高可能的淘汰队伍积分和最低可能的晋级队伍积分。

思路:详细的已经记不清了,只记得要注意负可能比胜得分高(但其实无所谓,交换一下分值就可以了),然后将所有队伍分为晋级区和淘汰区讨论

#include <cstdio>  
#include <algorithm>  
using namespace std;  
  
#define max(a,b) ((a)>(b)?(a):(b))  
#define min(a,b) ((a)<(b)?(a):(b))  
#define ll long long  
  
int main ()  
{  
    int T;  
    scanf("%d",&T);  
    for (int Cas=1;Cas<=T;Cas++)  
    {  
        printf("Case #%d: ",Cas);  
        ll a,b,c,m,n;  
        scanf("%lld%lld",&n,&m);  
        scanf("%lld%lld%lld",&a,&b,&c);  
        //x  
        if (a<c) swap(a,c);  
        ll x=max(a,b)*(n-m-1);  
        if (2*b>=a+c) x+=m*b;  
        else  
        {  
            if (m%2==0) x+=m/2*(a+c);  
            else x+=(m-1)/2*(a+c)+max(b,c);  
        }  
        //y  
        ll y=(m-1)*min(b,c);  
        if (2*b<=a+c) y+=(n-m)*b;  
        else  
        {  
            if ((n-m)%2==0) y+=(n-m)/2*(a+c);  
            else y+=(n-m-1)/2*(a+c)+min(a,b);  
        }  
        printf("%lld %lld\n",x,y);  
    }  
    return 0;  
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: