2013-C14-team5

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

{{{
小结by AIdancer
    写在最前面的3点:
        1. 学长们开局要冷静,别看完题就开始讨论,顶多说下类型就好了;我们最需要的,是清晰的、有逻辑性的思路;首先自己清晰了,才能给队友讲明白,队友明白了,才有可能
           完善你的思路。所以,在自己想清楚前,别急着开口;不然的话很容易乱的。yy的思路可以是错的,但一定要清晰。
        2. 纸上模拟算法流程,算好复杂度,除非明显大水,否则思路不清晰别上机,宁愿机器空着。
        3. 学长们抽空补补题吧....

    今天配合太翔了,如果没有跟dark_sun换读题顺序的话效果会好太多。
    首先我说一下我们队非常严重的一个问题,话太多!题都没读清楚,了解了个大概就开始讨论了。目前为止我感觉到的现象是,如果我在写题而不管队友在讨论什么,通常比赛成绩
都还好,起码不差;而如果我也开始讨论了,那坏事了,通常也讨论不出什么靠谱的想法,而且还会受其他想法的误导,导致拖到很晚才脱离无关想法的误导找出正解,导致后半部分比赛
打的很烂。我以前讲过几次,读完题别急着讨论,自己先认真想想,真有了靠谱想法再讨论不迟。前三个小时的简单题是不需要这么多讨论的。
    开始E就WA好几次,说好的水题呢...读完我觉得没坑啊,期间听猛犸学长说全用整数做会WA= =,其实很可能的,除非用JAVA处理的字符串,否则由于IEEE754的浮点表示,说不定哪个
X.0000就表示成了(X-1).999999,这样浮点强制取整截断后就是(X-1)*1000+999.......所以我觉的会错的......还不如直接double+eps。最后我看dark_sun已经WA四次了...我觉得很难以
理解,上去一看竟然有一串表达式,里面有一个int(t),其中t是double类型的,瞬间狂晕了....明明ceil()函数一下的事,怎么写这么多,而且明显有些浮点数用int(double)会出错啊....
然后他改成longlong,不出意外WA;之后改成ceil,过了........计算几何的学长们,浮点误差这种东西,是否要好好研究一下?
    之后J,一开始想差分约束,但是差分找出来的是最小值....然后就放了,换想法;之后dark_sun在讲他的区间的想法,真能算对的话是靠谱,但问题是约束这么多,怎么算?跟他一块yy了
一会儿区间解法后,我觉得这种解法很不科学,首先思路一团麻,其次对约束的处理一点不清晰,最后区间根本不是求解的目标,人家只问最大值....然后我就自己想了,写了下表达式很快发现,
其他变量全部可以由x1表示,然后有一个值确定就都确定了,之后我觉得这才是靠谱的思路(起码很清晰而且易处理)...然后跟dark_sun讲别什么区间了,我这里能给你直接算出来;之后又想了一会儿
考虑了一些不等式条件,因为不等式上界WA了一次,其他的WA貌似都是手的问题?? = =!
    最悲剧的是G,写数论有关的问题先估计好复杂度吧,A*B这种情况怎么写成了O(n^2)???.....然后我一直在怀疑到底是不是kotomi程序写搓的问题,却一直没专心想A+B+C用O(3*80000*7000)的
背包...其实想到了背包预处理,但是却脑残的忘记了3那一维,最后十几分钟脑子也晕晕的....只能说自己太土了,而且是最后才考虑到A+B+C的,按说复杂度分析到位的话,很早就应该发现了。
    总之今天是太翔了,首先帮忙想着两题,自己想到得思路暂时扔给了队友,然后这两天dark_sun的状态确实也相当糟...
    哎,我还是习惯了自己推,不擅长通过讨论找到解....
}}}

{{{
小结 by Dark_sun

    其实这个交换看题顺序没有错,因为我一直都是用double a; int b=int(a)+a>int(a); 来实现b=ceil(a)这个功能的. 
    我本来应该能想到要加上超过这个double的精度的eps, 但是上面这个功能我从小到大都是这么写的......

    因为以前是用pascal,这样写没问题,然后写习惯了......

    这个是我真圡,不过还好今天发现了这个要命的问题.

    如果今天没发现这个问题的话,regional的时候我猜我还是会这样写,然后翔= =...

    然后J题的话,yy的时候还是应该自己先想清楚,再讨论. 讨论的内容应该是自己yy出来的方法靠不靠谱......除非毫无思路的题.
    关于J题写的代码, 第一次WA是因为忽略了最后一个限制条件Xn-1+Xn=Sn(属于没彻底想清楚).

    改完之后,我的代码就是在一行for循环里错了两个条件(因为这个for是由上一种情况复制过来的,有两个地方忘了改).
    然后直接交WA, 改完其中一个条件交WA, 两个都改掉就过了.

    后面两个WA,一个原因是改完之后没有仔细看就直接交了,也没有仔细测......
    还有一个就是因为拖了太久,罚时略高,有种放弃治疗的感觉= =...
    然后改一个,交一下...(一个是for的终止条件大于小于写反, 还有一个就是正负号写反, 就是两个很显然的小错)

    然后H题,完全不知道它要干嘛,后面上网搜了一下hypersphere的体积公式才知道是要求(L^k)向上取整 %k的值.
}}}


{{{
E题两种向上取整方法:

double tt=L/V
int T=(int(eps+tt)+(tt>int(eps+tt)))%48;

int tt=ceil(L/V);
int T=tt%48;
}}}

{{{
最后知道真相的我眼泪掉下来……
}}}

{{{
小结By Kotomi
G没想到预处理A+B+C的背包做法,觉得不可能是O(n)能做的,于是枚举素数,大概是不到8000个,但是后来才知道有2000+case,A*B的情况因为A+B+C要O(n^2),所以直接写也就无所谓了...  然后T一脸...
这种单case多数据,可以用高复杂度的预处理还是做得少...
补题ing...
}}}
小结by AIdancer
    写在最前面的3点:
        1. 学长们开局要冷静,别看完题就开始讨论,顶多说下类型就好了;我们最需要的,是清晰的、有逻辑性的思路;首先自己清晰了,才能给队友讲明白,队友明白了,才有可能
           完善你的思路。所以,在自己想清楚前,别急着开口;不然的话很容易乱的。yy的思路可以是错的,但一定要清晰。
        2. 纸上模拟算法流程,算好复杂度,除非明显大水,否则思路不清晰别上机,宁愿机器空着。
        3. 学长们抽空补补题吧....
    今天配合太翔了,如果没有跟dark_sun换读题顺序的话效果会好太多。
    首先我说一下我们队非常严重的一个问题,话太多!题都没读清楚,了解了个大概就开始讨论了。目前为止我感觉到的现象是,如果我在写题而不管队友在讨论什么,通常比赛成绩
都还好,起码不差;而如果我也开始讨论了,那坏事了,通常也讨论不出什么靠谱的想法,而且还会受其他想法的误导,导致拖到很晚才脱离无关想法的误导找出正解,导致后半部分比赛
打的很烂。我以前讲过几次,读完题别急着讨论,自己先认真想想,真有了靠谱想法再讨论不迟。前三个小时的简单题是不需要这么多讨论的。
    开始E就WA好几次,说好的水题呢...读完我觉得没坑啊,期间听猛犸学长说全用整数做会WA= =,其实很可能的,除非用JAVA处理的字符串,否则由于IEEE754的浮点表示,说不定哪个
X.0000就表示成了(X-1).999999,这样浮点强制取整截断后就是(X-1)*1000+999.......所以我觉的会错的......还不如直接double+eps。最后我看dark_sun已经WA四次了...我觉得很难以
理解,上去一看竟然有一串表达式,里面有一个int(t),其中t是double类型的,瞬间狂晕了....明明ceil()函数一下的事,怎么写这么多,而且明显有些浮点数用int(double)会出错啊....
然后他改成longlong,不出意外WA;之后改成ceil,过了........计算几何的学长们,浮点误差这种东西,是否要好好研究一下?
    之后J,一开始想差分约束,但是差分找出来的是最小值....然后就放了,换想法;之后dark_sun在讲他的区间的想法,真能算对的话是靠谱,但问题是约束这么多,怎么算?跟他一块yy了
一会儿区间解法后,我觉得这种解法很不科学,首先思路一团麻,其次对约束的处理一点不清晰,最后区间根本不是求解的目标,人家只问最大值....然后我就自己想了,写了下表达式很快发现,
其他变量全部可以由x1表示,然后有一个值确定就都确定了,之后我觉得这才是靠谱的思路(起码很清晰而且易处理)...然后跟dark_sun讲别什么区间了,我这里能给你直接算出来;之后又想了一会儿
考虑了一些不等式条件,因为不等式上界WA了一次,其他的WA貌似都是手的问题?? = =!
    最悲剧的是G,写数论有关的问题先估计好复杂度吧,A*B这种情况怎么写成了O(n^2)???.....然后我一直在怀疑到底是不是kotomi程序写搓的问题,却一直没专心想A+B+C用O(3*80000*7000)的
背包...其实想到了背包预处理,但是却脑残的忘记了3那一维,最后十几分钟脑子也晕晕的....只能说自己太土了,而且是最后才考虑到A+B+C的,按说复杂度分析到位的话,很早就应该发现了。
    总之今天是太翔了,首先帮忙想着两题,自己想到得思路暂时扔给了队友,然后这两天dark_sun的状态确实也相当糟...
    哎,我还是习惯了自己推,不擅长通过讨论找到解....
小结 by Dark_sun
    其实这个交换看题顺序没有错,因为我一直都是用double a; int b=int(a)+a>int(a); 来实现b=ceil(a)这个功能的. 
    我本来应该能想到要加上超过这个double的精度的eps, 但是上面这个功能我从小到大都是这么写的......
    因为以前是用pascal,这样写没问题,然后写习惯了......
    这个是我真圡,不过还好今天发现了这个要命的问题.
    如果今天没发现这个问题的话,regional的时候我猜我还是会这样写,然后翔= =...
    然后J题的话,yy的时候还是应该自己先想清楚,再讨论. 讨论的内容应该是自己yy出来的方法靠不靠谱......除非毫无思路的题.
    关于J题写的代码, 第一次WA是因为忽略了最后一个限制条件Xn-1+Xn=Sn(属于没彻底想清楚).
    改完之后,我的代码就是在一行for循环里错了两个条件(因为这个for是由上一种情况复制过来的,有两个地方忘了改).
    然后直接交WA, 改完其中一个条件交WA, 两个都改掉就过了.
    后面两个WA,一个原因是改完之后没有仔细看就直接交了,也没有仔细测......
    还有一个就是因为拖了太久,罚时略高,有种放弃治疗的感觉= =...
    然后改一个,交一下...(一个是for的终止条件大于小于写反, 还有一个就是正负号写反, 就是两个很显然的小错)
    然后H题,完全不知道它要干嘛,后面上网搜了一下hypersphere的体积公式才知道是要求(L^k)向上取整 %k的值.
E题两种向上取整方法:
double tt=L/V
int T=(int(eps+tt)+(tt>int(eps+tt)))%48;
int tt=ceil(L/V);
int T=tt%48;
最后知道真相的我眼泪掉下来……
小结By Kotomi
G没想到预处理A+B+C的背包做法,觉得不可能是O(n)能做的,于是枚举素数,大概是不到8000个,但是后来才知道有2000+case,A*B的情况因为A+B+C要O(n^2),所以直接写也就无所谓了...  然后T一脸...
这种单case多数据,可以用高复杂度的预处理还是做得少...
补题ing...