怎么说
三年算是结束了。
还是那句话,有人欢喜有人忧吧。
问了一圈自己的同学,有人落泪,有人欢笑,自己的心也是不知道该如何收拾。
其实出分数前还是有点紧张的。毕竟三模只有430分。
一些人要散,一些人要聚,一些人要重新认识。
怎么说,还是向前看吧。
自己要做的事还很多。
继续加油咯~
近期训练总结
6.25
b题是个好题。
题目大意:给个01串,一开始全是0,一些区间可以进行异或,然后求最终有多少种可能的串。
解题思路:你观察到如果把这个01串变一变,每个位置变为和上一个位置的异或值,那么不难发现,这两个串是唯一对应的。那么一个操作就可以看做变换这个01串的两个位置,即
l
i
,
r
i
+
1
l_i,r_{i}+1
li,ri+1。于是一堆操作则可以看做变换一堆位置。每个位置可以直接并查集维护。答案是
∏
2
x
\prod2^x
∏2x的形式。
感觉这样的并查集妙用还有很多。自己可以好好学。
然后c题是个恶心题,调了很久,注意细节即可。处理边界的技巧很妙啊。感觉自己重新认识了差分。
6.26
这天的题貌似都挺sb的。暴力专场,果然训练noip吗。
b题是个数据很水的题,事实上可以用LCT做,时间复杂度很优秀,也是我一直欠着没打的题。一定要打一下。
c题是个splay,果然还是数据结构太菜了,这都没看出来,看出来之后直接做就好了,应该可以算是模板题了。
6.27
今天也是水题。不说了
6.28
经过前两天被坑惨的A组,我决定去做一下NOI组。
a题很妙的构造题,估计这辈子很难忘记。
b题是一个好题,我特意写了一篇博客:https://blog.csdn.net/Algor_pro_king_John/article/details/94355379
但感觉还是有些地方很奇妙。
c题就不用做了。
6.29
a题利用单位根的性质去做,可以等过一段时间去学一学,因为这东西貌似真的不常用,而且自己的fft水平也不高,可以先练几道题再去做。
b题是一个好的DP套DP,就是把某一个DP得到的值赋为另外一个DP的初值,然后再做一个DP方便转移。这种套路其实还是第一次见,但这题的方法却还有很多。
c题又一神题,不用做了。
6.30
这天留在学校改题。还是有很大收获的。
7.1
继续勇敢做noi。
a题是个高维前缀和,也是个好东西。更多的应用是讨论子集时用。在这里简单的说一说:
我们发现二维差分实际上可以这样写:
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
a[i][j]+=a[i][j-1];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
a[i][j]+=a[i-1][j];
实际上你对于三维差分可以这样写:
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int p=1;p<=k;p++)
a[i][j][k]+=a[i-1][j][k];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int p=1;p<=k;p++)
a[i][j][k]+=a[i][j-1][k];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int p=1;p<=k;p++)
a[i][j][k]+=a[i][j][k-1];
也就是说,只要把每一维都依次累加即可。那么类比,如果当 n = m = p = . . . = 2 n=m=p=...=2 n=m=p=...=2,然后有 w w w维时,也是一样的,一维一维做:
for (int i = 0; i < w; i ++)
for(int j = 0; j < (1 << w); j ++)
if (j >> i & 1)
f[j] += f[j ^ (1 << i)];
然后这道题就是容斥一下,转成高维前缀和即可。
之后是b题,用标准杨表求解,感觉这东西你除了NOI基本考不了吧(话说noi也没考过),反正是只有这种lj模拟赛才遇的到了,感受感受就好,不必太过于细致的学。
7.2
从今天起回去做A组。但是也看了看NOI组。感觉是一套能AK的题。
noi组的a是一个 点分治 + FFT,这东西真的很好打。
然后b是一个DP,感觉有点妙,暂时不会。
A组的题还是一如既往的清真,a和c都是水题。
只有第二题的那个证明确实是比较坑,然后dp确实也不好想。
让 f s f_s fs表示 s s s集合中的字符的全排列全部出现时的最前的位置。转移就是枚举哪个没出现,然后选 m a x max max,这样复杂度在性质的保障下就很优了。
话说我到现在还不知道为什么oj的随机数有bug。。。
7.3
从今天开始A组的题才有点难度。
b题确实想不到的,这种妙如狗的折半思想估计能坑我很久。
c和a一样也是想错了,以为可以二分,事实上这道题直接做就好了,用线段树维护,再弄两个单调栈即可。感觉难度海星。
7.4
难度又变为sb级别了。但网络流这一块依然还是天坑。
7.5
感觉今天的题还有点意思。。
b题是一个很坑的上下界费用流,还要动态拆边,维护系数。
c题如果不是因为做过,还是很难做的。要去学一学分治NTT这种骚操作了,这种姿势还是要熟练掌握。
7.6
这天的题貌似也比较正常。
c题的那个线段树确实是有点妙。
a题的一万种做法算是学习了。
7.7
回家玩耍了一下
7.8
这天状态极佳呀。看一题不会一题,结果前两题都是水题。
第三题的线头DP还是特别妙的。涨了姿势。
7.9
今天的题又不正常了,三题暴力,不过后缀数组是肯定不打算学的了。
c题的正解分块还是有点小妙。也算是学习了。
7.10
真的是日常被long long
坑,可不能再犯这种sb错误了。
b题判最小割有一个好方法,就是判必割边,如果必割边之和等于最大流就是唯一解,否则解不唯一。
方向
-
splay姿势很低下,LCT也不行,这两个数据结构在省选难度的比赛是很常见的,要多练才行。
-
以类欧为代表的一系列高级一些的数学知识都不太会,还要加强。
-
网络流那一块的技巧学的太少,题量也不够。
-
FFT & NTT & 一些多项式骚操作(如求逆)掌握不够熟练。题也做的不多。
-
以可持久化treap为代表的一类高级数据结构不够好。
-
计数以及容斥这方面的姿势也不够高,需要多做题。
欠下的
-
DP + 费用流 https://jzoj.net/senior/#main/show/3296
树同构 https://blog.csdn.net/yxuanwkeith/article/details/51549598
总结
从25号到现在其实训练强度一直都不是很大。
自己也没有调整到一个最佳状态,也浪费了许多时间。
还是要好好努力的训练,时间也不多了。
从明天开始还要一段训练的时间,利用好,加油!