寒假集训【1.27】
1月27日 |
||
时间段 |
记录 |
备注 |
8:00---8:30 |
T1card写+改错 |
|
8:30---9:00 |
|
|
9:00----9:30 |
理解T2题目意思 |
|
9:30---10:00 |
尝试写 |
|
10:00—10:30 |
写+改错 |
|
10:30---11:00 |
看题解,梳理 |
|
11:00---11:30 |
|
|
11:30---13:30 |
|
|
13:30---14:00 |
重写sumdiv 快速幂,线性筛 |
|
14:00—14:30 |
|
|
14:30—15:00 |
非递归实现组合型枚举 |
|
15:00—15:30 |
博客 |
|
15:30---16:00 |
分形 Fractal Streets(没太懂) |
|
16:00---16:30 |
|
|
16:30---17:00 |
颓qaq |
|
17:00---18:30 |
|
|
18:30—21:30 |
前缀和与差分 |
|
|
||
|
|
|
|
|
分享交流:
(待书写)
附:可以贴各种资料或题解
1.第一题card,看到题就想到写法。最少需要换掉的卡片=总卡片-最多的同花顺卡片。那么只需要对卡片以颜色优先其次数字的顺序排个序再进行统计即可。写出来后答案一直错误,样例都过不去。后来仔细调试发现两个问题。
①在统计前我还进行了一个去重操作,把数据中重复的去掉,然后复制原数组到一个新的数组里,但是在这处理过程中,因为没想仔细,每次都只复制了0-n-1的数据,忽略了第n个数,导致这样的结果。
②一开始用的判定方法是如果颜色相同并且后一个的数字减去前一个的数字=1,那么计数器++。但是这样就忽略了缺失中间的情况。后来发现用这样一个式子就可以解决所有问题。If(qwq[i].se==qwq[j].se&&(qwq[i].num-qwq[j].num+1<=n)sum++
以后写题,不管是简单题还是难题,都要想清楚,想全面之后再去写。特别是对于简单的题目,更需要考虑全面。不想清楚就去写,会浪费很多时间在调试和改错上。
- 第二题test。看到题目就懵了,这是个什么东西???看来好久,为啥5=(101)就可以表示集合{1,3}难道是因为二进制第一位和第三位有数。猜测了一下大概是这样,然后根据数据手动模拟出题目表示的意思。但是如果按照题目表示的那种意思进行运算写代码,是O(n^3)90%的可能会TLE,肯定会有更妙的方法。后来想了一下,可以记录子集最后出现的位置,对于每个Ai,枚举Ai的子集,若最后出现位置<i-Bi,则ans++。这样时间复杂度就降下来了(不会算qaq,不过应该是介于O(n)-O(n^2)之间)。
- 第三题不会写qaq。知道要tarjan缩点,但是一直没有学会tarjan,最短路也只会写floyd和dijkstra了。
4.下午的时候把昨天的sumdiv重写了一遍,再次被它的思路惊叹到了,太妙了。
5.然后就按照一直看书,看那道Fractal Streets 还是不太懂(虽然我以前玩过这种小游戏qaq)。
6.晚上看了一下前缀和和差分,差分还有待理解。
今日总结:有点颓。不喜欢写模拟赛,就是因为写完模拟赛会莫名地颓。颓一段时间,导致之后的学习效率极差,讨厌这种感觉。