2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!
前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会。
这次就从今天开始吧!不能懈怠,稳步前进!
2017/10/1
今天上午进行了集训的第一次考试……
但是这次考试似乎是近几次我考得最渣的一次?
今天考试第一题是高精度+数学,第二题是图论计数大分类讨论,第三题是状压的树归
第一题看到之后自信的以为可以做出来,结果一直打到了还剩下半个多小时才打完.
还是too young too simple......今天这真的是致命的失误,后面再怎么考试也不能孤注一掷了
以及今天cdq基本上做完了(虽然剩下Cash一个大坑),如果明天有时间把它做掉好了.
cdq和整体二分等时间分治算法很是精妙......明天再去理解一下整体二分
*坑点:后缀数组的基数排序cnt数组大小也要开成串长
*新科技:手打队列把端点变量变成unsigned short实现循环队列,当然也可以取模
*新科技:
树状数组求区间和:
移项整理a[1]+a[2]+...+a[n]=n * (c[1]+c[2]+...+c[n]) - (0*c[1]+1*c[2]+...+(n-1)*c[n])
所以额外加一个数组记录(i-1)*val[i],答案是i*bit1[i]-bit2[i]差分
2017/10/3
昨天晚上考试了没来得及更新233
早上先把整体二分的题打了一道...
整体二分简单来说,就是通过
"每次处理的长度是待处理序列而不是整个序列"
的处理过程来优化复杂度(尤其体现在不能memset)
昨天考了两场,上午一场200,晚上300(人生第一次AK我会告诉你嘛)
上午的T1是瞎j贪心,T2线段树乱搞,T3....又是打表->找规律->结论->边界处理的数学题
....这种题一直很棘手啊....以后碰到这种题先要快速把表打出来,还要培养联想力啊233
晚上T1简单计数题,加上一点边界处理就行.这种题要严谨的想一想再动手打.....
其实一开始我急了,上来直接扔上去那个式子结果自己测1e18 1e18炸出了负数
后来发现走一步就得mod一下.....
T2是个挺裸的树归,不过似乎我打丑了结果最慢23333
T3是......看了一会发现是平衡树?平衡树?NOIP模拟考平衡树?
但是还是扔了个无旋Treap上去,然后打并查集维护了下....
结果时限2s跑了1968ms.考完试一看耗时吓死了.......
但是其实也有做的不好的地方.....比如"闷声发大财"这句话我就做的不是很好
考完试的确很兴奋....但是没有注意到其他人的感受
平时我是在避免自己变成这样但是...还是自己的问题,以后要注意了
然后在杂题专题里面水题...发现自己把水题一下午做完了剩下一堆好题
今天上午就开始肝这些题了.....今天应该还会考试,继续加油咯
*做题经验:
好像什么时候贪心都很受欢迎,但是贪心的证明似乎需要一些套路
如果有一个贪心的思路or苗头,可以这样引导自己的思路:
如果这样贪会怎么样,如果不会又怎么样?
如果两种情况都可以有理有据的证明,那么我们可以考虑贪心试试了.
2017/10/4&2017/10/5
久违的假期......4号上午考完试之后就进入了放假状态233
满血复活!进入集训状态!
晚上又是如期而至的考试.
*坑点:n,m>p时计算组合数取模(C(n,m)%p)必须用lucas来算,阶乘大于p的会变成0
*做题思路:区间最优化问题多想想单调队列优化,区间统计问题多想想莫队
2017/10/6
今天老师突然拿了一套省选集训模拟题给我们做2333
T1是个图论,考场上想歪了...其实特别很像Dinic找分层图的过程
T2....原题题解是17页英文pdf ....XYZdalao成功杜教筛淼之%%%
T3是道线段树,用法很奇特...用线段树维护从某个点开始的上升序列长度.
思路很棒....这道题的思路给人一种很清晰的推理演绎的感觉.
"如果....那么....;如果...那么..."(怎么那么像语文论述文2333)
可以用这种方式来开导思路!
2017/10/7
早起改题A了昨天T3...一开始带注释打了250行蠢死我了.....
%WQdalao 100行AC内存时间最快
下午继续考试...考的是昨天省选集训模拟题的第二套...
这次T1是个小小的模拟,T2是一道非常好的DP,%WQdalao考场想出正解之一,不过被计算方法卡精了233
精度问题很大程度上受计算次数的影响,如果乘除运算过多,精度爆炸的风险会大大增加.
虽然自己没有被卡精.....不过以后(尤其是做计算几何的时候)涉及到精度的时候一定要注意运算次数的因素
当然有的时候算法不同精度风险也不同...需要斟酌
T3本以为是数据结构的巧妙应用,结果正解是用了一个比较奇特的近似暴力想法....
由于暴力会T,但是不暴力还不好做,所以用类似树剖的想法,
我们把操作单元分为轻重两种,并且用不同的方法来维护
准确的说,其实有一点类似哈夫曼树的贪心过程,
使用次数多/处理代价大的我们用方便的方法处理,使用次数少/处理代价小的我们暴力处理
真是开脑洞了.....以后遇见有类似特征的题目的时候可以往这个方向想一想
2017/10/8
考试日常爆炸(rank20我要上天了)
T1是个贪心乱搞,贪心想出来了,代码实现跪在了STL的使用上,炸了80分:
对set调用algorithm库里的upper_bound,而没有调set自己的upper_bound,然后手动把O(logn)变成O(n)......
T2的正解十分类似前天打的那道线段树....都需要一个log的统计查询(似乎线段树这样log统计是一个套路?)
可能和套路有一定关系,但是正解推导的过程是在"抓本质",也就是说,考虑完成一段操作序列之后得到的等效结果是什么
这样我们就可以利用这个本质来解决问题.以后分析问题的时候要尽量模仿类似的想法
T3由于数据问题用char读入+O3可过然而比赛并不开O3,这个做法只有30分
正解并没有想出来...和WQdalao一起去搞正解去...
改T3之前反思一下....
每次考试不管考的是否尽人意,总感觉自己完全没有头绪,就是在瞎打...
思路一直在徘徊和绕圈子,找不到突破口...
这样的我只能解决自己见过的题型,如果没见过根本无法创新出新思路....我需要改变啊....
*做题策略:
不要抓住表面现象(以及有趣的题面)不放,真正动笔去把式子写出来,
多考虑移项,以及把有相同有关变量的量放在一起
*知识点:有向图最小链覆盖:转化二分图求最大匹配,答案为n-cnt
2017/10/9&2017/10/10
这两天沉迷大模拟无法自拔2333
两天整过了猪国杀和杀蚂蚁...真的是锻炼码力和思维严谨性啊.....必须要思考的很周全才行.
*坑点:!的优先级高于%(!a%b)
*坑点:不是void的函数返回值一定要覆盖所有情况,Linux下没有具体规定的返回值不一定是什么
*做题经验:
思路不通了把所有已知条件再列出来一边,写清变量之间的关系和限制,并且针对每一个条件写出解决方案和打法
感觉凌乱的代码段就删掉重打一遍,用的总时间一定会比死调下去少
关于这两天的考试,做的是hzwer的模拟赛...明显比以前的题可做并且质量很高...
*做题经验:如果有一个式子同时有几个变量,我们可以考虑枚举其中几个,仅让一个作为变量来简化问题
这两天我的暴力分都可以拿足,并且能拿多足拿多足..但是很多时候仅限于暴力...
思考人生.jpg
晚饭之前重新分了机房......自己的地方没有动,还是和wqlao坐在一起
现在总榜上到了rk2...然而依然被wqlao甩了300多分...
但是现在我还是极其没底...能否拿分完全根据题的难易程度...
稍微难一点就做不出来了...
还是前两天那个问题,碰到题我的脑袋就在题目的外壳上打转,完全找不到切入点.
如果有可能的话和教练或者dg交流一下...
做着做着题突然碰到一个线性基??
留个链接http://www.cnblogs.com/ljh2000-jump/p/5869991.html
https://blog.sengxian.com/algorithms/linear-basis
线性基的题型相对比较固定,看到下面的类型基本上都是线性基了:
- 最大异或和
- 第k大异或和/异或和是第几大
- 求所有异或值的和
线性基中的题目中还用到一个技巧:
- 任意一条1到n的路径的异或和,都可以由任意一条1到n路径的异或和与图中的一些环的异或和来组合得到。
这便是线性基的全部东西了。
2017/10/11
今天上午考试似乎没有炸?
280/300 rank3 还好...T2最后3分钟把正解改过来了
T3是一个玄学的堆优化DP...这道题又启发了我一点,如果一个变量不好处理,
我们可以把它拆开(这道题把取max里面的两个变量拆开,把式子展开),
得到一些定值/单调的值,从而方便我们解题
然后下午把Kd_Tree的坑开了个头...这似乎是一个用处很多的数据结构
据Wqdalao说在工程上可以用来盗图图像匹配?继续理解板子中.....
又到了晚上...做一点反思
刚刚和dg聊了聊天,dg给了一些建议,比如(掺杂个人YY因素):
遇到有风险的难题,先把能拿完的分拿完;每一道题不管多么想要打正解,都要把显然的暴力打出来。
面对实在想不出来但是感觉不会太难的题要适时放弃
在没有其他做法时再采取风险做法
看到题之后"寻找特征",一道好题应该有一些部分分,并且部分分可以引导选手打出正解
我还记得之前暑假里来讲课的学长说过:
暴力往往没有利用题目中的一些条件,要想一想怎么用题目中给的条件优化算法
值得注意...明天考试的时候多这样想想,试一试看看效果.
还有,我似乎应该逐渐转回比赛配置了再见sublime233,那也明天开始吧!
2017/10/12
早上到机房把昨天晚上的KD-Tree改过...可能我和数据结构八字不合
然后就开始考试了.今天考了两场,上午一场..来自一位冲刺国家队的dalao的一套"有思维难度题目"
什么叫思维难度呢?全场最高分65生鱼忧患死鱼安乐
不过让人还稍微欣慰一点的是第一题看出了一部分的正解...
不得不说自己的思维能力还是...不够,不过感觉那种绕圈子的感觉减轻一点了.
下午又考了一场,rank3 265/300,这才是联赛题目嘛...不过后来得知T1T3都是省选题233
T1数学,T2数据结构,T3图论,
上来看T1懵x,T2又懵x,看T3发现裸Tarjan乱搞...
然后开始打T3,半个小时左右调完,继续对着T1发呆
过了会发现还是不会,回去又看一遍T3....发现T3看错题了....
8个格子被我看成曼哈顿距离小于等于8了.......
当时一脸zz....慌死了
然后赶紧改赶紧改;不过还好不是很难改...15min改出来了,最后还好A了:)
庆幸中:1.看错题发现了2.还改过来了3.这不是正式比赛
看错题这种事...每一年都有无数人犯过这种刻骨铭心的错误...
我可不希望自己因为这种事情挂掉任何一道题...严谨认真啊严谨认真
改的差不多了回去T1,最后对着杨辉三角的表猜了个结论,和暴力递推拍了拍就交了,结果猜对了.
事后发现T1的模型转化一下变成了之前考过的一道原题...
令人窒息的是我都没有看出来这个事实...一直在向容斥的方向瞎想
是我的推理能力太弱了吗...考试的时候完全没有正确的思路,一点头绪都没有
教练说要不断练习不断打题不断找感觉,每个人都会有自己的风格...
但是我觉得现在我还没有自己的感觉和风格...唯一能很好的做到的就是打暴力骗分..
不过路是靠人走出来的...慢慢来吧,总有一天我会变强!
*坑点:数组越界可能会对其他某一位置的内存产生影响,一定要把数组的大小计算好,尤其是考试的时候!
2017/10/13
今天依旧是考了两场.....
上午rank15 200/300,下午rank1(其实并列了一堆人)300/300
上午T1是个很简单的二分,不过我少特判了一种情况挂了20分...
这20分给我一个小教训:
不管打什么题,能过的暴力&特判&部分分在打出正解之后不要删掉(当然前提是你得打对啦)
这样万一正解出错,那些暴力和特判还能给你一些部分分,不至于挂的太惨
T2是个水水的单调栈,乱搞一下就行了,T3是组合数学...
组合数学....喜闻乐见的爆炸,只拿了20分部分分,然而结论特别简单..
不只是组合数学....只要是数学我就基本上GG了,能打多少分完全是未知数...
个人感觉,我还是"抓本质"的能力不够...考试的时候推的式子只对了一半...
如果能把数学模型清晰的建立出来的话,那道题也不至于只拿20分暴力部分分
考完试和xyz要了一点题...等把手头上的KD_Tree做完去强化一下数学...
下午的题...没啥好说的,T1lucas板子,T3线段树板子,T2是个树hash.....
树hash我没学过啊???
稽急中生智自己YY一个板子...还好YY对了,最后拿到了分:)
(要是这样我可以把之前几道树hash的省选题做一做?)
今天考试..整体上说还可以吧,就是上午的T3分太少了,有点遗憾.
晚上再做做KD_Tree收个尾....
2017/10/14
昨天晚上吃完饭突然被塞了一套liu_runda杂题...
致郁向题目.......我的天啊.....
目前攻略进度2/10
做掉的第一道题是个组合数学,只不过要打个高精度....结果高精度打错了调了15min23333
自己推了个O(n2)式子.....过了之后看题解发现转化一下变成了O(n)的错排公式...
第二道是个记忆化搜索...
发现自己的记忆化好像有些"主流"...用long long10进制压位压到MLE.....
最后正解开了个6维数组....事实上,还是我提炼本质的能力不够...
我没有提炼出"数量相同的油漆本质相同"这个性质.....
然后上午继续考试
T1是个奇怪的结论题...T2n√n乱搞,T3大力DP....
结果30+100+0=130/300 rank13...
但是其实挂了不少分....
T1考完试之后发现自己的一个历史版本可以拿70分,也就是挂了40;
T3的40分+的状压直接打挂爆零....
但是最后T3的那个DP真的是太棒了...真的是好题啊.....
然而我还是没有推出来...为什么会这样呢....继续%wqdalao抢紫标...
剩下的练习时间不多了...抓住每一道题锻炼这种推理分析的能力....
改完考试题,下午去考NOIP初赛....体感比去年还是个萌新的时候好多了...虽然现在还是很弱....
然后晚上回来继续做杂题...杂题啊杂题....
2017/10/15
上午考试,结果考着考着停电了233
于是教练拉着我们唠嗑……跟我们说到了他为什么要带OI
然后交流的时候奇怪的要我交流感想……害怕,只好瞎扯一些了……
但是这个“最初的心意”的问题,的确很关键啊……
聊了一个小时来电了……接着考,最后270/300 rank6
下午试图自己推一道结论题,结果从下午1点推到晚上8点……
生无可恋.jpg
遇到结论题就傻眼……看完题解都能理解,但是自己就是推不出来……
dg说要培养思维能力……慢慢来……
2017/10/16
今天没有考试,所以搞了一些新知识,初步学了一下树的点分治
树的点分治主要可以搞一些关于树上路径(尤其是路径长度)的询问问题
比如说,距离不超过k的点对有多少?是否存在长度为Len的路径?
点分治主要利用“路径要么经过根节点要么包含在子树里”,
在根节点统计从根节点“伸下去”的路径的信息,然后递归对子树进行操作
当然也有一些神题我还没做出来,也有一种叫动态树分治的东西我还没有学,但是这个点分治的思想的确很不错。
2017/10/17
今天上午又开始考试了……接下来几天都是一天一场的样子。
但是shi味好浓厚啊……今天考试的3道题质量都非常的高。
T1是一个“经过实践”优化的结论题,不过考试时候时限1s正解跑了3s。。。害怕
T2是一个简单的DP+一个复杂的回代输出方案,但是这个输出任意方案的题没有SPJ……
于是考场无人拿分,考完试要推测出题人心理改题……
T3是一道思想很像数位dp的树形dp。。
题解里有这样一句话:“由于是字典序有关问题,所以我们不妨用逐位确定的方法”
我当时看到T3想到了一个类似的思路,但是发现是n2的,于是没有打,打算先去干前两题
事实上n2暴力有80分,正解要用数据结构优化……但是我没有打
最后前两题也没搞出什么名堂,最后只能20+0+10=30 rank11
这大概是考试策略的问题……有的时候前面的题不一定一眼就能看出来,先打后面的题可能是更好的选择。
然后下午改题晚上改题改了一天……改不动QAQ
2017/10/18
今天上午继续考试……100+5+35=140/300 rank14
T1是道字符串傻题,hash/kmp均可水过;不过一开始分析错了,以为他有二分性……
后来第二遍读题检查的时候发现自己分析错了,赶紧改过来……
T2是一个诡异的Tarjan题……一开始自己分析是割点然后点双,发现自己只会打割点,不会打点双的板子了……
然后十分慌乱,只想骗分,最后打了150行3个namespace,想骗40+,结果只拿了5分……
但是正解只是一个带一点特殊处理的割点……还是自己板子的灵活运用不到家……
T3是一个有单调性的乱搞模拟,然后我单调性打不出来……技不如人啊……
然后当天下午打了一下午Tarjan,还学了学2-Sat……板子现在还差一个点双没有复习,回头改一下……
2017/10/19
继续考试ing……100+30+100=230/300 rank10+(中午机房停电了数据没了233)
T1本来是一道割点水题(昨天做了一下午+一晚上Tarjan233),
但是由于数据没有造的那么强,所以没有正确性的贪心骗分也能过2333
T2是一道类似高考数学的结论推理题目……然而考场上脑子比较乱,结果最后结论推的比较混乱,30/100
最后发现似乎T2是最简单的一道题。。。这种题我都能挂啊。。。
T3是一道树上的贪心,要贪心选择一些lca,然后用树状数组差分维护一下。
做题过程:发现第一题乱搞->乱搞->乱搞15min打完->看T2->推测是爆搜/结论->看T3->发现是树上问题->
10min思考部分分->10min打倍增板子->不会处理->看T2->30min结论还是推不清楚->死循环死循环->
10min码完一个T3无脑树剖->推T2到考试结束
有什么经验可以积累呢?
1.板子的掌握一定要熟练。在发现自己不会处理倍增如何差分之后果断码出树剖然后就不用差分了,一遍调过。
如果当时的我没有10min码出板子的熟练度肯定会进入生无可恋状态……所以板子的掌握很重要啊……
dg昨天过来的时候说:
板子打不熟不如不打,打了也没用。
的确是这样,如果板子打不熟的话想出来要用什么反而会让自己更慌……
2.不要自乱阵脚。T2那道题打到最后我心里是发毛的……不是在推结论而是在猜结论……
然后心里极其虚。。因为当时T2和T3都没有打出来,T3骗40分都没打,当时我就不断在两道题之间想来想去……
然后最后一狠心去了T3打树剖……还好最后有分
但是在做T2的时候心里真的是慌的。其实我应该镇静一些,反正分要一点一点拿,最后给题目分别留出时间,没有什么可慌的。
下次考试的时候要更加淡定一些啊……
考完试进入了教练员谈心时间= =
教练说:
每个人都要做好联赛退役的心理准备。
不要把自己放在一个很高的定位上,不要觉得自己就应该拿多高的分数。
遇到shi题不要认为自己一定考低分,水题也不要认为自己能AK/拿高分。
引人深思……的确,OI的偶然性是很大的,并且在知识掌握水平相近的情况下,
心态的稳定性和思维的灵活性&严谨性是影响成绩的最大因素……
旁边的WQlao思维非常强……有的时候他想到的东西我怎么也想不出来……并且对知识点的运用也非常灵活……
可能这和对知识点掌握的灵活程度,以及平时练习时候的思考量有很大关系……
然而自诩心态很好……可能这是我唯一的优势23333……到现在倒是没发生过心态爆炸的时候……
思维啊思维……这个东西要不断的锻炼啊……
刷liu_runda杂题round2中……
2017/10/20
上午继续考试……220/300 rank7
T1是一个水水的ST表/线段树维护区间最值……
T2的正解是个奇怪的组合数(西瓜切n刀最多切几块),结果分段打表硬刚过去了233
T3……出题人没有写题解直接说让看代码……正解是二分+数位DP
联赛,联赛,联赛怎么什么都考?
今年初赛考最小割计数……模拟赛考过数位DP,杜教筛,平衡树……
晚上身边一堆颓狗打线上模拟赛……还打的很热闹……
似乎整个机房就我在刷之前的题……害怕.jpg
似乎最近四五场我都在rank10上下游荡?
前几天考完试老师跟我说接下来要是不考试我就别继续搞省选知识点了,我的成绩不太稳定。
说实话,我现在自己感觉成绩不是不太稳定,而是遇到了瓶颈……
就是那种往上冲冲不上去,撞到墙然后回弹继续撞那种感觉……
平时也有注意锻炼思维,dg给的杂题也在尽可能的自己切掉……
做着做着逐渐有一点点手感了,但是还远远不够……
到了考试看见思维题还是傻眼……尤其是神奇结论题,根本推不出来……只能瞎骗分
但是我可不能丧失信心……还有机会的,现在集训时间刚刚过半,翻盘绝对是可以的!
为了自己的梦想,追求卓越!
明天似乎给续一天的假……高兴0v0
2017/10/21
上午没有考试……刷liu_runda杂题ing……
自己推式子做一道矩阵乘加速概率DP的题……结果被卡精了233
调了半天精度才过……不过学到了一些矩阵乘的新玩法!(下述纯属自己瞎扯)
*当数据范围的一维非常大,(1e7~1e9),另外一维却很小(30~100),并且转移是线性齐次递推式,我们就可以想想矩阵乘了。
*矩阵乘不一定只有一个转移矩阵,当一个矩阵无法满足转移需求时我们可以多开几个转移矩阵表示不同的转移(超级跳马)。
*矩阵不一定只存一个状态的值,我们可以把3维数组展成2维并编号实现后面原本两维的转移(Contra),
也可以把矩阵扩大几倍来保存几次转移之前的值(超级跳马)
*如果矩阵中含有大量的0,我们可以通过判断是否为0从而减少矩阵乘的运算复杂度。
然后下午放假了……tui.exe
2017/10/22
中午回来之后开始考试……100+60+25=185/300 rank12
T1什么东西……普及组模拟题?
T2其实很不错,因为他的部分分可以启发人想到正解……
可以我没想着骗那个部分分,自然没有打出正解……
事实上正解是二分,每次转换问题为那个部分分的简化版问题,然后快速求出答案……
这道题启发了我……原来部分分是真的可以启发出正解的……
我们可以先考虑与部分分有关的原问题简化版,
然后比较一下两种做法有什么不同,有什么限制没有使用,再想通过什么操作可以得到原问题的解。
T3又是一道树上问题,这次我看出来了它正解中用到的一个性质,但是我没有继续往下用
因为我当时想了是个暴力维护然后跑n2的方法我就以为不能这样暴力维护……
最后事实证明n2有接近90分……并且正解是把暴力维护O(n2)变成数据结构优化O(nlog2n)……
所以,暴力不是不可以,正解很可能是对暴力的优化,或者利用了暴力没有利用到的性质。
然后改了一晚上题……改不动……
2017/10/23
上午继续考试……110/300 rank10
似乎我考试的时候2min秒出来T3正解单调栈维护凸壳……
然后就死了……最后只得10分
我当时把数组的指针传了进去……然后对那个指针的操作事实上会改变它的内容
最后我们只需要记录一下改变了谁然后回溯就行了……差点扔一个可持久化数据结构进去……
T1的正解是一个prim……然后考场上hwwdalao用二分并查集+大剪枝打过去了……
然后考完试全都是打二分并查集的,事实上还比prim跑得快233
T2又是一道O(nlog2n)的log维护线段树,只不过是优化DP……之前已经做过两道这样的线段树的题了
事实上我没有把原题的模型转化过来……题目中给的是一个二分图,然后让判线段相交,
所以我们要找的就是类似逆序对的东西了,所以我们把二分图的对应连点看成每个节点的高度/权值,
然后用线段树维护上升序列的有关信息……由于我连n2的暴力DP都没想出来所以没有打出正解……
下午晚上继续改题……还是改不动啊……
*坑点:千万不要用define的东西对函数进行操作(尤其是三目运算符取min/max),除非你确定这样带来的运行次数是可以接受的。
2017/10/24
上午继续考试……密码是那年那个"你们那里下雪了吗"
然后……被卡常了……300/300->140/300,rank10+……
T1的暴力是个O(n3)Dp(n=1000),然后用一个sum变量乱搞了一下优化到O(n2)……和正解并不靠边233
T2是一个预处理+RMQ……可惜预处理打丑了……用了个set,O(n2logn)被卡了……开O2之后稳过的……
不过卡常这种事……据说CCF的老爷机比我们机房的辣鸡linux还要慢……
所以能卡常则卡常啦……以后要尽量注意这种事,减少对STL的依赖,调用次数多的语句少写函数……等等
T3是一个很巧妙的思路……数据范围是216的,一开始我打了个01Trie的暴力,发现被卡常了……开O2跟卡常之后都能过
然后正解是一个类似分块(分层统计)的思路……把每个数分成二进制前8位和后8位,
然后开一个二维数组cnt记录“前8位是pre,后8位是sfx及其子集”的数的个数
这样,如果插入/删除一个数x,我们就枚举包含x的后八位的数v,去更新cnt[pre][v],复杂度最大O(28);
然后查询的时候枚举x的前8位的子集,加上相应的cnt,复杂度也是最大O(28)。
由于cnt已经包含了后八位及其子集,所以这样分层统计是正确的。
最后总复杂度是O(n*28)的,可以过2e5的数据……
考完试交流的时候发现wq考场上就想出来了一个类似的优化思路……我问他怎么想出来的……他说:
如果是01Trie的话那他就会直接给231了,这两个对于01Trie来说没什么差异,所以肯定不是01Trie
的确是这样……这也印证的之前一句话,暴力一定没有考虑题目中的某些条件……
比如这个01Trie的暴力就没有利用题目中val值较小的条件。题目中的每一句话都是有用的,一定要仔细分析每一句话的用意啊……
2017/10/25
继续考试……今天的题好毒瘤啊……T2捆绑测试不说,T3有100个测试点……
T1是一道找欧拉回路的题,不过我找的哈密顿回路,打上去倒是过了
据说是bzoj原题加强版……不过当时没有做
T2是道树规,还算比较裸吧……不过需要开个700MB的数组
最后发现只有WQlao和我A掉了?害怕
T3是个很不错的暴搜……需要记忆化+双向搜索+瞎j剪枝一顿优化……
这个双向搜索我之前只是尝试着打过双向搜索的暴搜,事实上这的确是一种比较快速的搜索优化……
还有记忆化搜索,这个东西有利有弊,可以大幅优化状态数,不过用STLmap比较慢,哈希表又算不好状态数……
所以看情况打了,如果发现重复的状态很多的话可以试试记忆化优化一波
Torywar犇考场上写正解写到了93分%%%
不过这题改到最后变成了刷榜狗的竞速场
练习方面,今天补了下之前liu_runda杂题的坑,另外看了一篇很好的数据结构博客……OrzMike
2017/10/26
今天是liu_runda出的题……似乎和东北师大附中的几个同学联考了?
不过并没有AK23333 100+100+0 rank13
T1T2都是那种乱搞……T1之前做过原题就是了
不过……T3的树DP没拿到分……数据太强了,只差了一点考虑,就一分也没有拿到……
其实式子是对的,只是差一个细节的处理
然后今天下午继续做杂题杂题杂题……做掉了很奇怪的背包(bzoj1190梦幻岛宝珠)和奇怪的矩阵乘(bzoj3120Line)……
最近的题自己可以怼出来不少了……不过就是很慢啊……
但是必须自己一点一点努力才行啊,继续加油干吧!
晚上开了新的DP专题……先把以前做过的题交上去然后开始一道一道刚……
*来自liu_runda的快读板子
char xch,xB[<<],*xS=xB,*xTT=xB;
#define getc() (xS==xTT&&(xTT=(xS=xB)+fread(xB,1,1<<15,stdin),xS==xTT)?0:*xS++)
template <typename _t>
inline _t read()
{
_t x=,f=;register char ch=getc();
while(ch<''|ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<='')x=x*+ch-'',ch=getc();
return x*f;
}
2017/10/27
上午继续考试ing……但是今天的题有毒啊……shi味很浓……
T1小模拟??我cao啊……mmmm模拟……我打了个150行的线段树上去2333
T2是……事后证明是数据结构乱堆……
WQ:可持久化01Trie+线段树+set+map+vector,上树啊!
考场上先是打了个30分暴力,然后开始试图想正解……
找到了正解用到的几个性质,但是不会用……这就很尴尬了
最后也没看出什么名堂……30分GG
T3是一道披着概率外衣的组合数学计数问题……考场上还有好几个人A掉呢……辣鸡.jpg
结果最后有rank15±1 65+30+0=95分?考场上有点感觉自己要AllZero的……
晚上dg过来的时候继续给我们介绍经验:
做题做不出来着急并没有用,别人做出来是别人的事,这些并不能让你做出题
想想dg说的……的确,我只能自己努力去试图改变这种现状啊……
希望明天能有改善!
2017/10/28
考试继续…… rank21(提交没加文件名,实际是rank28) 100+20+20=140
昨天最后那句就是个高悬的flag
T1辣鸡水题……
T2上来一看,哈夫曼树?NOIp模拟?
想想想……想不出来……×1
这个树好像可以分成两半啊?一半完全二叉一半每一层都有奇数?奇数的都×2?
……2h后……
想想想……想不出来……×n
样例过不了啊,什么啊……
最后对着T2怼了2.5h+,然后并没有什么卯月……
然后由于T2用力过猛,T3基本就是在划水……事实上考完试我半个多小时自己推出来了……
当时做T3的时候完全不冷静啊……连个暴力DP都没打出来
最后只好滚粗了……其实一开始T2怼不出来我就有一点弃疗的念头……
但是其实考完试再想……我应该正常看待,慢慢去怼……
也不能在一道题上吊死……去年NOIp两天(个人感觉)都是T2比T3难的……
T2做不出来不影响T3,也许T3的分拿的比T2多呢
这几天一直考rk16+……似乎比前一个阶段14±2还要差……
我怎么越来越菜了啊……慢慢来……相信自己……
然后开始做新开的DP专题了,先是下午做一些奇怪的期望还有矩阵乘,还有状压以及tarjan dfs树上的树规
这个6啊……一开始我把点双提出来建新树打120行不过……后来在tarjan里面dp变短了一半多……
晚上做着做着撞到一道虚树……然后简单看了一下
事实上一开始我想到了要建出一些点比较少的新树……但是不知道怎么建树
然后就告诉我这是虚树……然后用一个dfs序和一个栈维护dfs树最右链就行了……妙啊……
2017/10/29
早上来机房把昨天晚上的虚树改过了……今天考试题更加毒瘤了啊啊 rank9 100+10+0=110……
不过出题人要求不放题……那么就不说太多了,但是T3的dp真是太棒了……
不过T2是CF原题……这个说一说,xyzdalao搞出来一个“呆毛DP”噗
本来要枚举去最小解……然后把它摊在dfs序上用线段树维护就可以区间取min来快速处理了……
然后下午和晚上一直在想题……一道矩阵乘一道不知道是什么的概率,看了一天……到晚上也没做出来一道……
2017/10/30
怼了半上午怼过来那道矩阵乘……那是矩阵乘加速状压……我天……
的确没见过这种操作……这题是利用了题目中条件的变形,限制了二进制中1的个数,
把状压的状态数减小之后用矩阵乘来做……妙啊……不过自己能怼出来很高兴……
然后做一道树上的贪心……结果当成树规看了两小时……没想出来,菜鸡.jpg
然后看那道概率看了一下午,把自己怼死了……到了晚上只好看题解……
%%%CLJ爷爷
据CLJ爷说这题(ZJOI 2015 D1T2)是送分的,结果我看着这题他看了一天233
CLJ的正解是用积分做……并看不懂,最后还是参考几份题解看懂了……
一个关键词,大概就是正难则反吧……这个还是挺重要的,
就这道题来说用了好几次向相反方向的转化,最后才找到一种可以求的东西。
还有就是状态数组的定义问题,把“等于”转化为“大于等于”或者“小于等于”可能有帮助。
2017/10/31
今天是十月份的最后一天……还是万圣节?
今天的考试还可以…… 在Linux上是295/300 rank3,不过window被保留字爆了编译错误……
害怕……吓得我不敢起变量名了……老师说这样最吼的是加上下划线或者用拼音起名……
不过感觉好蠢啊23333
然后上午吃饭之前改完题……下午开始继续刷dg的杂题3了
先是一道2-Sat……被打傻了……
原来前缀和不仅可以用来给时间加速……还可以给空间以及各种奇怪的东西加速……
这道题,举个例子,把每个变量的真假看成0和1,要求每一给定的组只有一个为1,
那么那个变量之前的前缀和以及之后的后缀和都为0……
然后做一道比较裸的平衡树……然后做着做着发现自己打麻烦了,想用线段树+树状数组搞只用树状数组的活2333
然而WQ用替罪羊打了一个按下标建树的树……%%%
然后做一道奇怪的……图论(bzoj方伯伯运椰子)
以为它是网络流先怼了一小时……然后越看越不对……
最后改变思路……转成spfa求负环……最后还是自己想出来了,高兴。
WQ自己干出了小凸玩密室,强啊!
RYF明天似乎过生日了?提前祝生快啦……
2017/11/1
(好了我终于有时间来更新了)考试划水,上午一场晚上一场……
上午是neither_nor的题……结果队爷就给我们搬了3道集训队作业然后部分分大放送一下……
T1是个瞎贪心的树上问题……推一推结论打了过去
然后看T2,T2……是啥?不会,待会骗分吧……
看T3,发现好像可做?裸dp的转移是转着圈来的……我先打个暴力dp然后再优化吧
然后开始手玩样例……发现自己玩不出来……然后所有人都没玩出来
老师也没给解释……只能自己慢慢手玩……
然而最后没玩出来……白耗90min
然后回去给T2打了个爆搜30,剩下还有30应该是什么式子,没推出来……
最后又调了调查查错,rank10 100+30+0=130
考完试发现gxyT2正解拿了80,正解是个递推(DP)……
为啥当时我没想出来?其实是没有观察到一个重要的结论……
很多题都是根据结论优化算法甚至直接解题的,所以推结论的能力必须要锻炼啊……
(怎么锻炼?瞎猜就行,多猜几次就熟练了233)
然后晚上继续考试……
上来看T1,玩了一玩发现一些规律……然后搞了个单调决策乱扫,O(60*3e5),1s很虚……
然后拿单调决策和二分决策对着拍……发现二分决策跑的很慢,之后优化了一下,交了决策单调性那份。
然后看T2……发现是zz数据结构,然后……我竟然选择打无旋Treap……只T了5分我很感动啊……
参考的题解没有用数据结构,但是大部分人都是线段树砸过去的……
看T3……发现是个贪心,并且部分分可以搞的似乎不少……
然后先打40分,还有60分似乎要用二分图染色?我不会那玩意啊……
然后剩下的时间一直在想怎么做这个东西……
但是我一开始打的40+做法挂了,在贪心分区间的时候,新区间的最后一个数我没有统计入答案然后WA了不少……
最后rank6 100+95+24=219……
最后了解到那个东西可以用并查集维护……也就是说用并查集维护"给2个集合,某些对元素不能处在同一个集合"这样的关系……
这个处理可以用带权并查集维护路径长度的奇偶(顺便复习了一下带权并查集的板子),
也可以对每个元素维护“敌人集合”,这个做法比较妙……
因为如果A和B同时在C的敌人集合里,如果AB间有矛盾他们就是非法的……这样就可以搞了……
没有想到……并查集的确是维护"集合"以及“连通性”很实用的工具……
2017/11/2
今天掉智商比昨天还严重2333
上午T1是个奇怪的……考试的时候我根本不知道是奇怪的什么,考完试发现是个递推
昨天挂了一道递推,今天又挂了一道递推……事实上我递推的意识以及能力还是不够强……在联赛之前要再强化一下……
有的时候很多东西压根想不到要递推,或者想到了也想不出来数组定义……
T2是个披着SA外衣的……结论贪心……
那个结论很显然,一看就能体会,但是当时我没能想出来……
事实上现在我的推结论能力还是不是很强……要多做一做这样的题锻炼锻炼……
然后T3是神奇树规,我的数组定义有问题最后没打出来……WQ考场打出来了,%%%
这道题的数组定义和heoi2017的分手是祝愿极其相似,但是没有定义出来,最后自然也没打出来
最后rank26 30+0+0=30
我好菜啊.jpg
虽然没有考好是有一点伤心没错……但是我并不觉得有多大影响……
自己想不出来题是能力问题,这个东西要靠不断的锻炼,再急也没用……
一次没有考好并不意味着全部,首先,这不是正式比赛,
而且就算是正式比赛,也有翻盘的可能,没到最后的时刻谁也不知道胜算几何。
晚上又考一场,更加刺激……
T1是小学数奥抽屉原理,不会做,只好打50pts背包
T2是奇怪的小模拟,利用符合条件的数的性质乱搞……但是没有发现性质
T3是真的6……Trie树的题,思路的转化很巧妙。
题解的思路把暴力统计变成枚举点对,然后从枚举点对变成枚举特征相同的组的“组队”。
然后用Trie树维护这个"组”就行了……
最后rank15 60+17+10=87……依然不是很理想……明天继续努力吧……
2017/11/3
先码一个对无旋Treap的优化链接,联赛之后再研究……
http://www.cnblogs.com/Christopher-Cao/p/5505434.html
今天没有考试?刷杂题ing
首先上午解决了1号晚上开始做的一道树剖好题(LNOI2014 LCA)……
这道题有两个很不错的思想:第一个是模型的转换,把深度转换为“到根节点的路径上的节点数”,
然后把直接算深度转化为树剖数节点数……
第二个是改变枚举对象……我一开始是考虑每一个询问去找它的枚举点,
然而如果转换思路变成枚举每一个点去看它能更新的询问点,就变得很简单了……
接下来是一道据说是树规的题(SDOI2013 直径)……
看不出来怎么规……推了个小性质,扔了个线段树强行打一波结果A了……
正解的O(n)dp看不懂……如果是考试我估计会打这个nlogn的数据结构……
然后做了一个奇怪的递推题……还好有一点手感……
然后是经典单调队列(JSOI2015 送礼物)
没想出来……但是题解其实比较简单……
最大值和最小值不确定,就枚举每个数作为最大值,然后去找一个配对的最小值
这种化变为不变的思路一直都是很重要的……
充实的一天……
2017/11/4
上午继续考试……离联赛只剩下一周了……
上来先看T1,什么鬼……贪心?二分?先不打,看看T2……
T2……先推一下结论,似乎有结论……然后树规一下?打打打……
打完过了大样例,回去把T1的二分贪心打出来,也过了大样例……
这个时候刚1h……然后看T3……
似乎有30pts是特殊性质分?还有30pts是环套树性质?打打打
打了60部分分,然后开始想正解……
一开始其实有一个向正解的发展方向,但是没有往那个方向想……
一直在想MST的性质之类的,并且后来也有一点懈怠……已经打过了2题,看T3的时候就有一点“这波我稳了”的错觉……
最后发现T1挂了70pts……二分的时候右边界2e9,一开始左边界是0,是可以A的,
后来我加了个剪枝把左边界增加了一些,结果二分左右边界相加炸了int
T3数据有锅……全场最高30,然后lc想到了正解树剖……
最后rank14 30+100+30=160
怎么说呢……虽然T3测试点锅了,但是T3的表现我很不满意。
明明可以想到更多,但是由于自身的懈怠并没有做到,需要改进……
2017/11/5
今天又考了2场……
上午T1,什么鬼?这好像要用Tarjan?……
推了一会发现推不出来,往下看……
T2……画风更不对了……这是什么鬼畜的字符串啊……我难道要先看T3吗……
然后T3是树规……推了推式子,是前两天考试题的变形?诶不错,打打打……
打完T3,过了大样例……然后倒着回去看T2……
研究了一下,发现这东西字典序最小是唬人的……直接模拟就行了……
然后打了打hash判相等乱搞一下……调了一调过了大样例……
最后回去看T1……先打了树的40pts,然后开始瞎想……但是想不出来……
想啊想,又瞎打了个树剖发现不对……然后再把树剖扔掉
结果只能交树的40分,结果数据好像很水,多拿了10pts
最后正解是TM支配树……第二次碰见支配树了……上次没学,这次好好看了看……
http://blog.csdn.net/a710128/article/details/49913553
下午2:30考试第二次……
T1怎么又是鬼畜的整数倍啊!这次我有经验了……直接去找前缀和相等就行了……
T2不是前两天做过的那个贪心嘛……打打打(虽然最后犯了和那天一样的错误,没有AC)
T3……
2.5h全程看T3,并没有什么卯月……
当时看着k很小,应该是针对k的状压吧……然后呢?然后就死了……
最后rank12 100+95+28=223
事实上最后的最后T3用了好几遍的模型转换……首先有这么一句话很是重要……
把区间修改转化为点修改的有效方法:差分
然后把修改区间变成修改两点,然后瞎转化模型……转换成图论又转化回状压……
不得不说这题太强了……
然后晚上和wq讨论了一下改题……
大概明天是最后一天自主做题时间?那复习一下好了……
2017/11/6
LAST UPDATE:2017/11/6 06:06:33
2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!的更多相关文章
- 2017 10.25 NOIP模拟赛
期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...
- 【LOJ6067】【2017 山东一轮集训 Day3】第三题 FFT
[LOJ6067][2017 山东一轮集训 Day3]第三题 FFT 题目大意 给你 \(n,b,c,d,e,a_0,a_1,\ldots,a_{n-1}\),定义 \[ \begin{align} ...
- Loj #6069. 「2017 山东一轮集训 Day4」塔
Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...
- Loj 6068. 「2017 山东一轮集训 Day4」棋盘
Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...
- 【LOJ#6066】「2017 山东一轮集训 Day3」第二题(哈希,二分)
[LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么 ...
- loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流
loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...
- LOJ #6074. 「2017 山东一轮集训 Day6」子序列
#6074. 「2017 山东一轮集训 Day6」子序列 链接 分析: 首先设f[i][j]为到第i个点,结尾字符是j的方案数,这个j一定是从i往前走,第一个出现的j,因为这个j可以代替掉前面所有j. ...
- 2017 山东二轮集训 Day7 国王
2017 山东二轮集训 Day7 国王 题目大意 给定一棵树,每个点有黑白两种颜色,定义一条简单路径合法当且仅当路径上所有点黑色与白色数量相等,求有多少非空区间 \([L,R]\) ,使得所有编号 \ ...
- loj #6077. 「2017 山东一轮集训 Day7」逆序对
#6077. 「2017 山东一轮集训 Day7」逆序对 题目描述 给定 n,k n, kn,k,请求出长度为 n nn 的逆序对数恰好为 k kk 的排列的个数.答案对 109+7 10 ^ 9 ...
随机推荐
- CentOS 下 SonarQube 6.7 的下载、配置、问题排查
CentOS 下 SonarQube 6.7 的下载.配置.问题排查 系统: CentOS 7 x86_64 SonarQube 版本: 6.7.3 Java 版本: 1.8.0_171 MySQL ...
- websocket protocal
same-orgins:浏览器同源策略的安全模型 持久化协议 双向双工 多路复用, 同时发信息 区别HTTP连接特点: http只能由客户端发起,一个request对应一个respon ...
- ios有些机型input和fixed导致的页面错位问题
_fixIosInputH () { let [timeout, beforeTop] = [null, 0] $('input, textarea').on('focus', () => { ...
- Stack Overflow访问问题的处理
一直以来都有访问stackoverflow的习惯,但是老是因为js的问题让人很多操作都操作不了,而且打开的速度也很慢. 原因其实就是stackoverflow使用的google的cdn,于是想彻底一点 ...
- python实现简单线性回归
之前推导了一元线性回归和多元线性回归,今天就用python来实现一下一元线性回归 先看下之前推导的结果 , 第一种是用循环迭代的计算方法.这里的x,y是numpy中的array类型 def su ...
- XAMPP安装PHP_GMP
CentOS 6.4 Xampp 7.1.12 下载PHP7.1.12的源码包 yum install gmp-devel yum install m4 .tar.xz cd /root/php-/e ...
- LINUX开发使用的3个远程工具
1,SecureCRT 2,SSH Secure Shell Client 3,VNC Viewer 如果想VNC Server启动时加载vncserver服务 需要修改/etc/rc.d/rc.lo ...
- uptime命令详解
基础命令学习目录首页 users个数和窗口数一致 原文链接:https://www.cnblogs.com/ultranms/p/9253217.html uptime 另外还有一个参数 -V(大写) ...
- 将React Native 集成进现有OC项目中(过程记录) 、jsCodeLocation 生成方式总结
将RN集成到现有OC项目应该是最常见的,特别是已经有OC项目的,不太可能会去专门搞个纯RN的项目.又因为RN不同版本,引用的依赖可能不尽相同,所以特别说明下,本文参考的文档是React Native ...
- 王者荣耀交流协会PSP Daily项目Postmortem结果
王者荣耀交流协会PSP Daily项目Postmortem结果 整理:王超 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? PSP D ...