java b组
复盘后的吐槽:
今天不吐槽,怕明天就忘了
忍一时越想越气
蓝桥杯,你让我感到陌生呀,我这种菜鸡真的会被创死!
真的崩不住了,尽管我赛时,状态特别差,脑子转不了一点,但是今天回去,复盘了下题,真的太离谱了,我感觉这题出的也太难了吧。现在满打满算估计只有30分。心态真的爆炸了,必须狠狠吐槽一下。
- 哇靠,虽然我只打过ccpc省赛(河北省的,可能算是弱省吧)(学校网络赛啥的,拿不到名额),单挑大概有银牌的水平。但是我也在cf上打过一些xcpc的题呀,我基本也能开出四五道正解呀。但是这次蓝桥杯我能算是正解的题,只有两题呀。哇靠,但是你要知道xcpc是能带资料并且有队友并且还是五个小时的呀并且我还能知道对错,你让我拿头给做呀。
- 然后这个是javab组吧,打竞赛的应该没有多少吧。关键的连暴力都不好做呀!你出这种题,哪来的区分度呀?
- 接着就是通病大部分样例,只给个小样例,给的基本上都是一些显而易见的样例,丝毫不带特殊情况的,这点我还真拿你没招,这个我认了
呜呜我只是个菜鸡,但你不要特意拿个镜子,怼在我面前呀。
填空题的第一道和编程的第一道符合正常难度,就不说了,给你们看看其他题的难度
下面这些解法都不一定对
D题,多叉树那题
比赛时,我就感觉不对劲,这到底是什么题呀这是,这才编程第二题呀,而且你只是一道十分的题呀,我就算写暴力可能都写特别久,只能跳过了
现在想了个可能的正解:(线性筛+质因数分解+哈希映射)
先找到平方数的规律,然后想到优化的方法,可能都要特别久
思路大概是这样:(不确定对不对)
1.看当前根下面所有的儿子
2.把这些儿子们都放入序列中,对这些儿子进行质因数分解,然后只留下质因数为奇数的数(当然那些没有奇数个数的质因数也是要存的),把这些质因数拼接一下成为一个字符串,记录下当前字符串出现个数。【键值对(字符串,出现个数)】。比如12=2^2*3 这里只留下3,12->“1|3|”;又比如16=2^4->“1|”
3.接下就是所有出现的字符串和,ans+=hash[映射的字符串]-1;、
但是这样依然过不了,一共有 1 e 5 1e5 1e5个数,最大的数为 1 e 9 1e9 1e9,时间复杂度为 1 e 5 ∗ 1 e 4.5 1e5*1e4.5 1e5∗1e4.5
还需要优化:就是分解质因数时,只遍历质数(线性筛得到质数的集合),这样应该就能过了
E题,数据库,卡特兰数超级升级版
大哥呀,这是编程第3题呀,真的一点活路都不给吗?
卡特兰树只有01串,但是这道题,不仅仅是01,有多个id
当时学会卡特兰数,我就花了半天的时间,那还是在别人讲的情况,好吧我承认是我笨,是我菜,但是你不要过来呀,我真的不想打宿傩呀!
到最后感觉不可行,直接推翻重来,浪费我半个小时
比赛时的思路:(卡特兰数的解法+组合+线性dp)
需要借助一点卡特兰数推理过程,先转化为图,删除当成向上走,增加向右走,条件不能超过 x = y x=y x=y
然后用线性dp+组合来推,需要注意特别多的小细节(考呀,反正也推了半天)
但是这样特别容易爆时间复杂度,估计拿不全
我估计正解估计使用数学+组合数来推,反正我感觉也不好做
F题:组合
hh,估计纯贪心都过不了,巧了么,我他丫就是纯贪心
比赛时,状态太差了,没有把贪心做法hack掉
反正管你是正向贪还是逆向贪,反正纯贪心,基本都是错的
我是从后往前贪:
先从小到大排序
然后先让大的往前匹配,用双指针找到小的最大的能匹配的反例:
1 1 1 2 4
好的,分又没了
然后从前往后贪:
1 2 3 4
也不行下面这个其实是反悔贪心,也不一定对
这里是基于一个猜想,如果这个猜想错,下面就不用看了
猜想:最多的那种区间组合的左端点,是按原序列的升序序列[1,k]排的
例如
1 2 3 5 ……
能变成这样:
[1,r1],[2,r2],[3,r3],[5,r4]……
算法:(反悔贪心+树状数组+差分+双指针)
步骤:
从前往后看每个数
对于当前点i
1.先看看还能不能把自己当做右端点的转给i+1承当,不行则结束,不在看后面的数了(树状数组求当前有几对sum[n])
2.可以的话,用双指针找下个能作为右端点的最小值,越界了也结束,在这个位置上,做差分+1(表示从这个数开始的区间,后面都能做右端点)目前试了这几个样例,没啥问题:
1 1 1 2 3 4
1 1 1 1 2 2
1 2 3 4 5
5 6 8 9
5 7 14
剩下的题就没仔细推了,但是看着就特别难
比赛当天写的
下面是没复盘的回答
有无java b组的同学,感觉真的巨难,不知道是不是我太菜了,有无大佬说说?
第一题,填空题好像是1024204打头
第二题,不想做没开
第三题:每日区间:感觉就是贪心,让每个右端点最小(不确定对不对),存下所有右端点,然后用二分找
靠比赛的时候脑抽了,忘记边界问题,调了一个小时
第三题:数据库:原本想着卡特兰数,但是不行,又浪费了非常多的时间,最后只能用线性dp来做,但是估计拿不全
感觉挺难的
首先要转为图,增加往右走,减少往上走,然后还设计到一堆排列组合
第四题:分组:感觉像贪心+双指针(不确定对不对,但是自己造的样例没啥问题)
先从小到大排序
然后先让大的往前匹配,用双指针找到小的最大的能匹配的
满打满算最多就5+10+15+15=45,但是实际肯定远低于这个
今天状态是真的差,脑子是一点都转不动;然后这些题,也是真的连暴力都巨麻烦
我评价是大寄特寄,呜呜,真难受呀