随笔分类 - 比赛题解或总结
摘要:1003 minehttp://acm.hdu.edu.cn/showproblem.php?pid=4678这题最后两个小时一直在搞,因为我们队基本不会博弈,所以一直在卡...一个简单博弈题,可以将游戏分为两个内容:(1)只与数字相邻的数字。(2)空格和与空格相邻的数字组成的区域。然后就相当于多个同样的游戏,此时只要求出sg函数,异或起来即可。sg函数可以很容易地推出来,因为之前不了解sg函数,比赛的时候现场看的,所以一直再调,wa了很多发...1004Terrorist’s destroy http://acm.hdu.edu.cn/showproblem.php?pid=4679树形dp
阅读全文
摘要:第六场多校:顾昱洲出题,数学题超多 ,继续跪。。。1001 http://acm.hdu.edu.cn/showproblem.php?pid=4655 组合数学(0)、比赛的时候,CJboy搞定了这题。 觉得题目可以一搞,赛后我也重做了一下。(1)、设A为组合的所有方案数,A=a1*a2*a3*...an。然后每一个ai所带来的负面影响是min(ai,a[i-1])*(A/ai*a[i-1])。(2)、min(x,y)*(A/(x*y)) 假设x>y 那么减去的就是 A/x。题目分析到这里解法就出来了,为了使得影响更小,则需要x尽量大。推敲一下发现,最优的方案就是大小交叉的排列。然后可
阅读全文
摘要:多校第五场: 这场比赛打得太无力了,主要在于自己卡题太久。还有YY题又不想去做,这在现场赛是不会发生的。总觉得现在心态没有摆正,没有正视训练赛,这点需要改正。1006 http://acm.hdu.edu.cn/showproblem.php?pid=4649 概率DP(0)、之前遇到类似的题,所以看到就直接秒掉了,写得还挺顺的。(1)、将每个数按2进制拆成20位,对于每一个位单独一个DP处理概率就行了,第i位期望就是(第i为1的概率)*(1v的答案就是比值最大的负环。如果没有遇到负环,那么答案就是u->v比值最大的一条路。(2)、如果用分数规划来做,时间复杂度会很高(我没有想到什么好办
阅读全文
摘要:题目看似一个最短路问题,仔细分析一下会发现,问题可以转化为求区间最值问题。区间最值一直递增或者递减的话,可以直接用树状数组实现。询问可以分为两种情况:U>V 这是比较复杂的情况,然后路径只有一种:U->u->v->V,其中u>=U ,vv这些边都已经被处理了。处理U的时候,先把u=U的边用于更新[v,i]这段区间,因为所有在[v,i]内的V都可能受到u->v这条边的影响。边权为Sum[U]-Sum[v]+edge[u->v].cost。更新完成好,进行查询操作。单点查询V,区间[V,U]的最小值-(Sum[U]-Sum[V])就是答案。U#includ
阅读全文
摘要:多校第四场:6题,打得最好的一场多校。还是CJboy给力。本场比赛我基本上没什么贡献,搞04一搞就是一下午。最后看了09觉得只有状态压缩,不知道怎么优化。1004 http://acm.hdu.edu.cn/showproblem.php?pid=4635 图论,强联通分量(0)、一开始推理的时候思路很清晰,但是接着就脑残了,没怎么细想就直接去套样例。以为得到了正确的解法,只是需要一个特判。然后就开始去写代码了。代码写着写着就发现不好写。估计卡代码卡了1个小时。其中也一直在测样例是怎么回事,当时逻辑混乱了,行动就变得缓慢。当再次看时间的时候,发现已经过去一个多小时了。其实这个时候需要冷静一下,
阅读全文
摘要:一、求找到某个数的所有素因子:自己的做法:使用一个vector,在筛素数的时候,将当前素数i,放入vec[j],其中j为i的倍数。这样如果询问很多,则是一个可行的方法。但是如果询问较少,空间和时间花费都会很大。优化做法:筛素数的时候,对于每个数,只需要记录它的最小(或最大)的素因子就行了。查询的时候,每次都除以当前数的最小的素因子,然后更新当前数,继续往下找。这样,就能找到所有的素因子了。这种方法对于询问次数较少的题目,将会比第一种做法快上很多。二、假如已知当前的一个二进制状态sta,求其所有子状态s1,s2使(s1&s2)==0 && (s1|s2)=sta。自己的做
阅读全文
摘要:第三场多校: 至今最惨的一场多校。共作出两题。1008 http://acm.hdu.edu.cn/showproblem.php?pid=4628 状态压缩优化的搜索(0)、比赛时候直接状态压缩dp,结果TLE了。没有算好时间复杂度,第一次交的时候没有测大数据。应该多想几种方法,做到一A才行,不然卡题会卡很久。(1)、后来直接搜索,从最后一个状态开始搜,每次都用一个回文串,然后搜另一个的最小步数。 然后过了。(2)、搞了第四场多校后发现是自己代码实现能力太渣太渣。。。将一个状态i分解成两个子状态,其实是可以不用搜的。直接一个for循环就行了,这样妥妥过。啊啊啊。。。 for(i=0;...
阅读全文
摘要:多校第二场:1002 http://acm.hdu.edu.cn/showproblem.php?pid=4612(1)、求双连通分支。(2)、求树的直径。1009 http://acm.hdu.edu.cn/showproblem.php?pid=4619(0)、因为判断两张卡牌是否相交那里写错了,导致浪费了近一个小时的时间。本场比赛第一失误。可以早一点找FQ帮忙,早一点确定问题出现的地方。其实跟自己不熟悉HK算法也有很大关系,不然也不会一个模板一个模板地去试。(1)、二分图匹配。求最小点覆盖。1006 http://acm.hdu.edu.cn/showproblem.php?pid=46
阅读全文
摘要:多校第一场:1011 http://acm.hdu.edu.cn/showproblem.php?pid=4610(1)、将每个数对应的4种情况求出来,并保存每个数对应的状态。(2)、问题转化为:共有16种卡牌,每种卡牌可以选ai个,选了某种卡牌将得到bi的权值。将所有选定的bi进行|运算,若4位中的某一位为0,则需要额外的花费。(3)、直接进行2^16的枚举,表示某种物品选还是不选,每个物品至少选一个,然后剩下的物品按权值从大到小贪心。1002 http://acm.hdu.edu.cn/showproblem.php?pid=4601(1)、将原树映射到一棵字典树上。(2)、在原树上进行D
阅读全文