2016CampDay1总结

今天是campday1,做下总结,
早上是热身赛,T1是去年出过的题目,T2是:给出一个{1,2..n}的集合,求一个最大的子集,满足x和2x+2不同时在这个子集当中;(n<=10^100)
赛后问了xg,感觉还是可做题,大概是说,直接枚举链的长度,根据长度,可以得出最后一项的范围,还没仔细想(
之后是day1的正赛,据叉姐说,这场是所有比赛中最简单的,结果我们还是只通过了两题。。。。大概讲述一下这套题的题解,以便之后补题的时候使用()
A:有两种做法,一种是建立树上后缀数组,之后再线段树,rmq搞搞,树上后缀数组的建法就是将串反转,然后利用倍增数组比较后缀的大小,还没写过();第二种做法就是利用可持久化线段树维护每个节点的go指针,这样就规避了跳f指针,保证了时间复杂度(已ac)
B:比赛的时候队友想出了做法,在朴素bfs的时候,只要将点的邻接表和未访问过的点做一个交集,再枚举交集中的点,由于一个点只会被访问一次,这样做的复杂度就能保证是 O(n3/64)
C:splay维护叉积,有时间可以想下
D:dfs得到一棵随机生成树,黑白染色,白点等访问完了子树再访问,黑点立即访问,这样做相邻两次访问之间的距离最多为3
E:假如m==0,则只要将直线根据斜率排序,相邻的直线两两求交就得到凸包;m>0的时候还需要想下
F:有两种做法,一种是均摊维护前缀和和维护值,似乎能做到 O(n2d/2) ,另一种将2^d分块
G:G是一个dp的题目,dp[i][j][k]代表第i层,使用了j个权值,还有k个节点待扩展。假如枚举一层有多少节点拿去扩展,复杂度是4方的,难以通过这题,仔细想下可以发现,我们只要一个一个转移,对于一种状态来说,要么将一个空余节点变成带权的节点,仍然停留在这一层;要么将所有的空余节点*r[i],并转移到下一层,这样就是 O(n3) 的做法了
H:似乎是将问题转化成从(0,0)走到(n,m)并且不能经过某些特殊点的方案数
I:某种搜索
J:将24种情况分类讨论,合并后只有8中不同的方案,这8种可以用树状数组计算,另外注意有一种情况需要用容斥计算

感觉今年的实现能力较去年明显提高,但是思维仍然十分僵化,感觉比赛的时候认真去想某些题还是有机会想出正解的;
之后的挑战会越来越难,希望能坚持。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值