时间
2019.11.4
吐槽
我做了套假比赛。
赛时
T1:给你一个
n
∗
n
∗
n
n*n*n
n∗n∗n的空间,有些点有障碍,问从原点走到nnn方案。
一开始,不就是容斥水题吗?
那就容斥障碍,设
f
[
i
]
[
j
]
f_{[i][j]}
f[i][j]表示当前选了i个障碍,最后选的是j的方案数。
等等,似乎我怎么做都是
m
3
m^3
m3的。
冥思苦想。
诶,好像可以这么设
f
[
i
]
f_{[i]}
f[i]表示当前走到第i个障碍,且途中合法。
那就按照拓补序来走即可!
结果T成60。心态崩了。
T2:给你
n
∗
m
n*m
n∗m的矩阵有很多颜色,然后划出很多个
k
∗
k
k*k
k∗k的矩阵,要求求出其中颜色种类最多的&总和
70分似乎是送的?
100分难道要打带修主席树?
70分拿完滚蛋。
T3:给你一个神奇的矩阵:见下图,然后求其逆矩阵的元素的平方和
一开始似乎突然想起symbol以前讲过用什么余子式行列式之类的搞逆矩阵。
看到时间不多了,翻翻定义然后开码。
过了样例无脑交。
爆0了。
小结
这次比赛在T1卡太多时间了,而且常数也打得太丑了。
导致后面两题都没有太多时间搞。
尤其是T3,其实推出逆矩阵就很easy了。
策略还是有问题的。
粗略题解
T1:见上
T2:考虑
O
(
n
3
)
O(n^3)
O(n3)的方法,枚举一列,然后再这中间把方块每次往下移。
然后考虑优化这个玩意。
考虑一列一列往右移动,移动时对于一个元素a,只需要考虑它在每行分布情况。
每次加入一列,就利用一些神奇的数据结构例如spaly、set之类的来维护当前元素的前驱与后继。然后修改被它影响的方块即可。
删除一列是同理的。
但似乎空间+时间都卡得很紧,bitset应该是最佳选择。
T3
首先,由于该矩阵是三角矩阵,有很多巧妙的性质。利用求逆矩阵的方法可以做到
O
(
n
2
)
O(n^2)
O(n2)求出逆矩阵。
大概就是
A
−
1
=
1
∣
A
∣
∗
A
∗
A^{-1}=\frac{1}{|A|}*A^*
A−1=∣A∣1∗A∗
乱搞即可,注意组合数预处理。
求出来后可以惊奇的发现:
理性证明?那就推柿子:
设
P
∗
P
−
1
=
A
设P*P^{-1}=A
设P∗P−1=A
A
(
i
,
j
)
=
∑
k
=
j
i
P
(
i
,
k
)
−
1
∗
P
(
k
,
j
)
A_{(i,j)}=\sum_{k=j}^iP^{-1}_{(i,k)}*P_{(k,j)}
A(i,j)=∑k=jiP(i,k)−1∗P(k,j)
=
∑
k
=
j
i
(
−
1
)
i
+
k
∗
i
m
∗
C
i
k
∗
1
j
m
∗
C
k
j
=\sum_{k=j}^i(-1)^{i+k}*i^m*C^k_i*\frac1{j^m}*C^j_k
=∑k=ji(−1)i+k∗im∗Cik∗jm1∗Ckj
然后两个组合数可以理解为:在i纸上,选出k张纸染黄色,再把这k张纸中j个染成红色。而且中间的
i
m
i^m
im
推得:
=
∑
k
=
j
i
(
−
1
)
i
+
k
∗
i
m
∗
1
j
m
∗
C
i
j
∗
C
i
−
j
k
−
j
=\sum_{k=j}^i(-1)^{i+k}*i^m*\frac1{j^m}*C^j_i*C^{k-j}_{i-j}
=∑k=ji(−1)i+k∗im∗jm1∗Cij∗Ci−jk−j
=
(
−
1
)
i
+
j
∗
i
m
∗
1
j
m
∗
C
i
j
∗
∑
k
=
j
i
(
−
1
)
k
−
j
∗
C
i
−
j
k
−
j
=(-1)^{i+j}*i^m*\frac1{j^m}*C^j_i*\sum_{k=j}^i(-1)^{k-j}*C^{k-j}_{i-j}
=(−1)i+j∗im∗jm1∗Cij∗∑k=ji(−1)k−j∗Ci−jk−j
=
(
−
1
)
i
+
j
∗
i
m
∗
1
j
m
∗
C
i
j
∗
∑
k
=
0
i
−
j
(
−
1
)
k
∗
C
i
−
j
k
=(-1)^{i+j}*i^m*\frac1{j^m}*C^j_i*\sum_{k=0}^{i-j}(-1)^{k}*C^{k}_{i-j}
=(−1)i+j∗im∗jm1∗Cij∗∑k=0i−j(−1)k∗Ci−jk
这时候,我们惊奇地发现,右边那个西格玛只用当i==j时才=1,否则都是0.
那么就得到:
A
[
i
]
[
j
]
=
[
i
=
=
j
]
A_{[i][j]}=[i==j]
A[i][j]=[i==j]
这还是
O
(
n
2
)
O(n^2)
O(n2)的。
然后,我们就考虑对于这个东东进行再优化。
由于是平方和,所以画到最后只是那个组合数很难求。
但是,这里有个公式:
为什么呢?可以这么理解:有两个盒子,每个盒子可装n个苹果。现在一个盒子是满的,另外一个是空的,求从满的盒子中取i个苹果放入空盒的方案。
于是就愉快解决啦。
2019.11.5
吐槽
今天还算是正常。NOIplus
赛时
T1:首先把n个数字每两个匹配,匹配出
n
∗
(
n
−
1
)
2
\frac{n*(n-1)}2
2n∗(n−1)种方案,比如:(1,2)(1,3)(1,4)……(1,n)(2,3)(2,4)……。然后,列成一个
n
−
1
∗
n
2
n-1 * \frac n 2
n−1∗2n的方阵使得每一列没有元素是重复出现的
举个例子就是:
当n=4时:
答案:
1 2 3 4
1 3 2 4
1 4 2 3
比赛时构造了好久,没有头绪。
突然灵机一动想出一个
n
3
n^3
n3的方法,大概就是每一行都找几个方案。
结果发现似乎枚举顺序对此有很大影响。
调了半天还是没弄出来。
30分滚粗。
T2:给你一棵树,然后再上面放上n个数字,然后定义一个好点:当前点到根路径上的点都比他小。然后答案即为
∑
k
c
\sum k^c
∑kc(c为某种方案中的好点个数)
比赛没有多少思路?
20分都不会。
只会40分链的情况(???)
T3:给你一个由abc三种字符组成的字符串,现在有一种操作是选出其中相邻的两个不同的字符,把他们两都变成另外的一个字符。问可构造出多少种不同字符串
同样没有什么想法,本想着可以n!暴力玩30分的,结果似乎打错了边界条件?
爆零了。
小结
今天分数还是不太好看。
T1花的时间还是比较多。
似乎题目难度不是正常顺序。
(T2尤其难,T1T3看完题解都会了)
明天得换个策略来应付打比赛了。
出略题解
T1
找规律或是用一些奇怪的构造方法。
题解贴上:
T2
有两种做法:
1、题解的外向树DP
首先外向树大概就是一棵树的边变成有向的(连向儿子)
然后我们考虑这么搞:对于某种情况,硬点某些点为好点,那么非好点就连边连向上面的好点,上面的好点就连向下面的好点。
接下来,考虑把非好点都容斥成往下的边,于是就变成了外向树。
由于答案的贡献只是关于树的大小的。
记录即可。
实际打起来应该特别地难打。
2、ColdChair大爷的神奇DP
考虑一个神奇的转化:
由于答案是求刚好等于c时的
k
c
k^c
kc,这个则可以利用一个套路变成:
求至少为c时的
(
k
−
1
)
c
(k-1)^c
(k−1)c
证明?二项式展开:
k
c
=
∑
i
=
0
c
C
c
i
∗
(
k
−
1
)
i
k^c=\sum_{i=0}^cC_c^i*(k-1)^i
kc=∑i=0cCci∗(k−1)i
所以,右边就是
(
k
−
1
)
c
(k-1)^c
(k−1)c再乘上一个系数。
实现转化。
那么接下来我们考虑怎么用这个。
设
f
[
i
]
[
j
]
f_{[i][j]}
f[i][j]表示当前以i为根的子树,其中第j大的点是第一个出现的好点的答案。
鉴于之前那个至少的结论,我们可以每次对于一个点x,把它的儿子们都合并之后更新x。
一直更新上去,即可。
一些小细节:
对于合并,考虑一个儿子
f
[
a
]
[
p
]
f_{[a][p]}
f[a][p],硬点其以p为好点,把另一个儿子
f
[
b
]
[
q
]
f_{[b][q]}
f[b][q]合并上去。
那么我们考虑枚举一个k表示把b儿子中前k大的都插入到a儿子p前面,其余的都插到后面。
那么合并的贡献即为
f
[
a
]
[
p
]
∗
f
[
b
]
[
q
]
∗
C
(
k
,
p
+
k
−
1
)
∗
C
(
s
i
z
b
−
k
,
s
i
z
a
−
p
+
s
i
z
b
−
k
)
f_{[a][p]}*f_{[b][q]}*C(k,p+k-1)*C(siz_b-k,siz_a-p+siz_b-k)
f[a][p]∗f[b][q]∗C(k,p+k−1)∗C(sizb−k,siza−p+sizb−k)
以q为好点同理。
然后这样转移是
O
(
n
3
)
O(n^3)
O(n3)的,然而我们发现,合并时其实是一段区间的。
那么就可以利用前缀和来优化优化。
合并完之后别忘了对于x的贡献也要算。
T3
其实搞出一个结论就很简单了。
设a=0,b=1,c=2;
我们发现,无论如何变化,总和%3都是一样的。
由于如果变化1次之后,必定有两个相同的连在一起。
利用这个玩意进行DP
设
f
[
i
]
[
a
]
[
b
]
[
c
]
f_{[i][a][b][c]}
f[i][a][b][c]表示当前做到第i为,和%3等于a,当前填b,是否有连在一起的。
然后就愉快转移。
2019.11.6
吐槽
发现自己蠢得一匹。
赛时
T1:给你一个图,求出其中所有组成简单环的边的编号异或值
题面真的含糊不清。
比赛时其实没有什么想法,看到
n
2
n^2
n2就直接打了个70分。
T2:有n本书,每本书有价格。然后总价格为w,第一本书的价格为x,在这之后每本书的价格要么是上一本价格+A,要么是-B。现在就问一种构造方法。
其实这题非常简单。
一开始考虑所有的书都是+A的。
然后就考虑把某本书从+A变成-B。
这样就从左往右依次变化即可。
由于书价格可以为负数,我成功把负数的情况判掉了。
话说谁™卖的书价格是负数的?!!
T3:现在有很多的点,有s个点是确定的。现在有m个区间,每个区间中有k个特殊点。这些特殊点是比其区间内非特殊点要大的。然后要你构造。
又是构造题。
看到30分就秒了,直接把每个点连向比他大的点。
直接拓补或是bfs即可。
然后刚了好久,发现连边似乎特别慢。
诶,不是有个套路是用线段树优化连边吗?
等等,似乎只剩10分钟了。
应该打不出来。
检查前面题去了。
小结
今天比赛还是出了一些小锅。
这次比赛的理解难度巨高,而且T1果然又是最难的。
话说本来T2放到是原题,还是我做过的,很多人似乎没做过。然鹅换了之后变成我没切了。
其实也好,教训++。
遗憾就是T3最后时间太少了,如果多些时间其实可以拼一拼的。
初略题解
T1
其实求一遍点双连通分量即可。
把边数大于点数的块去掉即可。
T2
见上。
当然,你也可以用二元一次方程解一解。
恭喜zjl利用打表成功学会如何解二元一次方程。
T3
线段树优化连边即可。
大致就是对于一个询问新开一个点,然后把
k
[
i
]
k_{[i]}
k[i]的点连向这个新点,标上1表示严格大于新点。然后把剩余连续的区间在线段树中找出来后,新点连过去,标上0表示大于等于。
然后就拓补即可。
(话说数组开小调了半天,心态没了)
2019.11.7
抱歉,今天比赛咕咕咕了。
今天由于校运会的缘故,等到抽空来到机房是,比赛还只剩下1小时的。
当然,也没有多少心情想打,然后就学了学反演。
灰常兴奋。
明天就要好好打了。(虽说明天还是校运会)
2019.11.8
吐槽
昨晚似乎睡得极不好。
逃离校运会后,本想提提神,听了一会Severe Tire Damage,感觉整个人都有点像是在执行秘密任务。
赛时
T1:给你n个点,求任意三个点围成的三角形的面积和
看到数据范围就开始想
O
(
n
2
)
O(n^2)
O(n2)。
三角形面积不是可以叉积算吗?
算着算着突然发现柿子可以用一个类似于前缀和的东东优化。
那就开打,打着打着发现需要用极角排序。
那就排,好,过了样例。
那就拍,好,小数据都没有问题。
那就大数据。结果突然发现好像挂了。
?!!
什么玩意?玩了好久,发现似乎这题还™的卡精度?
调了好久,才终于过了自己出的大样例。
成功A掉。
T2:有很多的sb要杀人,每个人只会杀一个想杀的人(可能会自杀)。然后把这些人按照一定的顺序放入一个箱子,一旦放入一个,它就会立即杀掉想杀的人(已经死了就不鞭尸了)。问最少和最多会死多少个人。
最多不是水的吗?直接让他们能杀即杀,只剩下那些没有入度的点。
对于一个环,那就可以杀剩一个人。
最少的话想了比较久。主要是卡在几个点连向一个环的情况。
后来才发现,原来一个活人后面必定跟着一个死人。而由于尽量让活人多,所以一定是最早把那个死人杀掉,不让他祸害别人。最后到那个环上是死人时,就把这个点删掉即可。
环就是可以生还
s
i
z
2
\frac{siz}2
2siz
那就开打。
最后似乎多判了一种sb情况,还得了90分。
令人震惊。
T3:给你一字符串,然后求出最长的前缀和后缀,使得这两个字串的循环重构相同。
比赛理解错题了,结果1分不会。
输出0滚粗。
小结
这次比赛虽说做的题都比较水,但是还是不够细心啊。
尤其是读题,一定要读准确才行。
醋略题解
T1
我们枚举一个点,把它变成原点。
那么再选其余两个点时利用叉积可以得到面积公式:
S
=
∣
y
2
∗
x
1
−
x
2
∗
y
1
2
∣
S=|\frac{y2*x1-x2*y1}2|
S=∣2y2∗x1−x2∗y1∣
我们惊奇地发现,在某种枚举顺序下,那个x1和y1可以利用前缀和优化掉。
所以就极角排序!注意精度即可。
T2
见上
T3
我们考虑一种合法方案必定是有一个转折点i:
使得两个A相等,两个B相等。
那么我们就枚举这个i,同时设
f
[
i
]
f_{[i]}
f[i]表示当前转折点为i时,后面B串最长长度是多少。
那么我们考虑怎么弄这个B。
假设我们现在从i要更新i+1,那么:
可知,B串至少是要左右都缩小一格。
f
[
i
+
1
]
>
=
f
[
i
]
−
2
f_{[i+1]}>=f_{[i]}-2
f[i+1]>=f[i]−2
移一下项:
f
[
i
+
1
]
+
2
>
=
f
[
i
]
f_{[i+1]}+2>=f_{[i]}
f[i+1]+2>=f[i]
那么就倒过来做即可,每次更新
f
[
i
]
f_{[i]}
f[i]时,从
f
[
i
+
1
]
+
2
f_{[i+1]}+2
f[i+1]+2往下更新,找到一个最大的即可。同时利用hash来维护是否相同即可。时间是
O
(
n
∗
常
数
)
O(n*常数)
O(n∗常数)的。
2019.11.9
今天木有比赛。
然后我就晚上加班打了一哈Comet OJ。
简单小结一下。
赛时
题意自己去看。
T1
一眼还以为看错题了。
好吧,直接两个指针维护即可。
一开始大样例没过,那就调。调了一(chao)小(ji)会(jiu)就过了。
那就交一发,成功A掉。
T2
一眼,这题不是™地做过吗?
直接最小生成树+LCA就好了。
结果,由于LCA打错,调了一(chao)小(ji)会(jiu)。
也就打+调1.5h
T3
第一眼。似乎不会。
推推柿子,诶,似乎可以线段树维护一下系数。
有64分诶~
紧接着,symbol走了进来。“我们开个小会。”
好,也就花了30分钟。
剩下10分钟,弃疗吧。
小结
这次心态没有调正。
下次要好好努力。
话说那个597不是一直高调地说自己AK吗?还不是T1爆零。
滑稽
促略题解
T1
直接两个指针维护即可。要注意一些小细节。
T2
由于是
2
i
2^i
2i。所以最小生成树即可。然后LCA。
T3
题解是矩阵维护。其实线段树就好了。(本质是一样的)
2019.11.10
吐槽
这次跑到空教室去做,感觉自己真的是漏洞百出。
赛时
T1
逐渐懒惰。
一看,T1不是直接随便求出概率后乱搞吗?
那就打。打+调1h。心想可以过。
反正也不知道怎么拍,那就放放。
T2
比赛还以为是什么缩点后跑DP。
最后是因为T3灵感大发而没有去搞。
T3
比赛一看,当然上链剖。维护的话还以为是主席树。但是显然主席树搞不了max。
再想想。诶,不是分块就好了吗?似乎时间是10s,那就再套上个线段树合并。
掐指一算,好像是6亿诶~(其实是60亿)
结果巨难打,打到最后10分钟,还是没有调过去大样例。
于是就放弃了。
结果最后,T1由于最后统计答案时搞挂了,40分。T2蜜汁RE?T3蜜汁RE?
好,我人没了。
小结
这次比赛时真的是漏洞百出。
不仅策略没有搞好,而且还莫名紧张,还出了很多奇怪的错误。
最后也是无脑肝T3,前面出的很多大错都没有去拍/调。
简单来说:
簇略题解
T1
考虑利用bfs来求出所有势力在某个位置的出现概率。
求粗来后可以利用容斥。把总方案减去一次都没有经过的和只经过一次的。
T2
考虑把关键点都建一个超级源,跑一边dij后得到他们到达某个点的最短路。
再把边反着建一遍,跑一遍。
这样之后就可以枚举某条边后拿两端的顶点更新ans。
千万不要打spfa。(不知道出题人和spfa有什么仇)
T3
可以树分块!
(比赛时想到一个神奇的树分块。结果玩着玩着玩脱了。时间约等于暴力)
好吧。是我想多了。
考虑在树上搞出S个关键点。
预处理两个数组:
a
n
s
[
i
]
[
j
]
ans_{[i][j]}
ans[i][j]表示第i个关键点到第j个关键点的众数是什么。
f
[
i
]
[
j
]
f_{[i][j]}
f[i][j]表示第i个关键点到根路径上第j种数字出现次数。
这样。我们就可以分各种情况讨论啦。
我们可以用ans来求整块的答案。求完后枚举散块的种类,再用f来维护即可。
小细节真的巨多无比,也就打了我一小(zheng)会(tian)。
2019.11.11
吐槽
今天双十一?雨我无瓜。
结果比赛依旧爆炸。
赛时
T1
这题比赛我考虑了一哈找规律,找了一(chao)小(ji)会(jiu)都没有找出来。
那就放弃了,打了个暴力。
设
f
[
i
]
[
0
/
1
]
f_{[i][0/1]}
f[i][0/1]表示当前长度为i的如果根伸出去和不伸出去的两个答案。
然后就从
n
/
2
n/2
n/2和
n
−
n
/
2
n-n/2
n−n/2这两种情况转移。
然鹅我们发现,重复的情况很多。
于是记忆化搜索+hash就好了。
(话说linux下定义hash会CE。233)
T2
比赛没有什么思路。只会20分的网络流。
我™是sb才会去打吧!
然后就爆肝70分。发现肝不出来。
剩下一点点时间随便搞了20分就交上去了。
结果爆0。
T3
好吧,只会签到分3分。
小结
这次比赛在T1&T2花的时间有点多。而且投资收益很差。
这很不好。其实T3m=0的情况是送的,可以多拿些分的。
想的时间太多,下次要规定一段时间来想题。
猝略题解
T1
见上
T2
考虑贪心。
我们考虑一个点的高度为他到他最远儿子的距离。
那么我们一层一层来看,那么每一层我们就是选其高度前
l
l
l大的点。
(其实这个本质上是长链剖分)
那么这个我们可以用堆或者用桶来维护。
T3
现在还不是太会,以后来补。
2019.11.13
吐槽
今天真的是信心赛。
让信心都消散的比赛。
逐渐忘记如何打比赛。。。
赛时
T1
这该*的出题人,竟然连个样例都木有。而且题意也坑了我好久。
(我一直以为那些线段是不能相交的)
结果调了近2h才发现有相交的情况。
我¥#@%……&!
这还是NOIP吗?
T2
这题一看,诶,好像qnDP可以拿70+分。
然鹅头铁T1没有时间去多想+打。
T3
当然,没怎么想。
话说为什么你们都知道这是GDKOI(R.I.P.)2018年的D2T2啊。
我都没有任何印象(其实我没去)
小结
这次比赛犯了个两个严重错误。
1、没有认真审好题(题不给我审,让我情何以堪)
2、头铁T1了(被597传染了)
所以这次比赛给我的人生经验很多啊。(比长者给的还多)
虽说这本质上是NOI模拟的比赛比较难,但是比赛策略还是要稳定。
以后打比赛就不要死磕正解了。
话说为什么最近出题人那么厌恶SPFA?
难道说这是暗示CSP会有一道最短路题,而且不让SPFA过吗?
蹙略题解
T1
我们考虑把每个右端点弄出一个左端点表示:这个左端点是最右边的一个点满足其到右端点之间合法。
那么这个可以用一个单调队列来维护。
维护完了以后,我们可以考虑这个东东长什么样。
我们发现,如何这个右端点与左端点-1的位置连边,就可以形成一颗树。
那么答案就是两个点的LCA的深度。
妙啊♂
T2
我们考虑一个东东:
设
f
[
i
]
f_{[i]}
f[i]表示恰好用了n个颜色旗子的方案。
设
g
[
i
]
g_{[i]}
g[i]表示最多用了n个颜色旗子的方案。
那么我们可以列出柿子:
g
(
n
)
=
∑
i
=
0
n
f
(
i
)
∗
C
n
i
g(n)=\sum_{i=0}^nf(i)*C_n^i
g(n)=∑i=0nf(i)∗Cni
通过二项式反演可得:
f
(
n
)
=
∑
i
=
0
n
(
−
1
)
n
−
i
∗
C
n
i
∗
g
(
i
)
f(n)=\sum_{i=0}^n(-1)^{n-i}*C_n^i*g(i)
f(n)=∑i=0n(−1)n−i∗Cni∗g(i)
那么现在问题就转化为求这个g。
我们当然会求一个比较简单的DP。但是时间复杂度是
O
(
n
∗
q
)
O(n*q)
O(n∗q)的。
(虽说这足以过掉90分的数据)
我们考虑优化这个n。
考虑线段树维护这个动态DP。
对于线段树每个节点,设一个状态
f
[
k
]
[
i
]
[
j
]
f_{[k][i][j]}
f[k][i][j]表示这个区间内从高度为i的房子开始插旗,到高度为j的房子结束,最多插了k个旗子的方案数。
现在问题只是合并和修改。
合并我们只需要枚举一个k,然后再枚举要合并的两个状态的i和j,满足他们之间不递减即可。
修改的话就是要用二项式定理快速修改一段区间。
小细节比较多,但也很好打。
T3
现在还不太会,先贴一贴题解。
2019.11.14
吐槽
今天水法使我身心愉悦。
赛时
T1
mdzz题解那么长一段就是为了告诉我们:
给你一个n个点m条无向边的图,每条边容量为1,每个点度数最多为3.
问任意两个点之间的最大流为多少。
一开始还没有什么思路。
想了想d=2的数据,发现只有环+链的情况。
然后就从环那里下手。
然后惊(cuo)奇(wu)地发现,似乎在每个环里面任意两个点之间的最大流就是边双的度数大小的min值。
结果打完后过了第二个样例。心极度高兴。结果最大的样例怎么也过不去。
最后放下,去攻T2T3,直到比赛快结束时才发现是错的。
但是!数据还是让我这个sb水法过了60分。
T2
经典小学奥数题。给你一个由很多个小方块组成的几何图,然后可以把一些重新排列组合,要求其三视图不变的情况下,最多可以移除多少块。
比赛也是直接贪心了。考虑求出行的最大值与列的最大值。
把两个相同的匹配即可。
感觉似乎直接贪心好像也没什么问题,匈牙利也没多想。就不管了。
戏剧性的是:随手出了个数据就挂了。更戏剧性的是:这玩意儿能过(虽说我没有判掉0的数据只拿了80分)
T3
给你一段序列。
每次询问一段区间内,任意长度的区间的f值。
f值是:
随便拿个35分滚蛋。
因为大数据跑得慢,那就加些奇怪优化。
结果似乎清空判断数组时搞错了,3分。GG
小结
这次比赛比较舒服。
(话说不要这么快用完RP啊。)
但也是有些问题的。
比如T1、T2其实离正解很近了,没有细想。
T3也是做得比较潦草。
这些小问题要注意。
卒略题解
T1
其实d<=2的情况就缩边双即可,但是d=3的情况比较棘手。
两点不连通,ans=0
两点联通但不在一个边双内,ans=1
其余的是ans=2/3
其实我们缩完边双后,在一个边双里删掉一条边后,又会变成很多条边双连在一起。
那么就变成上面d<=2的情况。
可以想想d=4怎么做。
其实d=2000都没问题,直接建一颗最小割树就好了。
T2
见上,弄个匈牙利即可。
T3
神奇的线段树
总结
还要一天,那就准备NOIPCSP吧。
三部曲:看题,想题,自闭。
还要注意的一些小细节:
策略
首先,开场15~25min看题,审题(千万不能审错)
问老师?上一年惨痛教训。还是问问吧。(反正他又不能把我吃了,不回答就算我倒霉)
先打比较简单、比较稳重的题。
定一个上厕所线,比如码+调了1h的题就放放,去打别的题。
打完一定要对拍。(symbol的概率论)
比赛最后一定要检查文件之类的,不要再肝了。
30分钟attention!20分钟差很多的丢掉。10分钟就停了。
小细节
首先,这个要好好看看:
好东东
一定要开longlong
输出longlong要用%lld(ColdChair惨痛教训)
文件名。(初二date惨痛教训)
空间复杂度计算:
(转的)
然后就乘数组大小,如果是MB,那就除以
102
4
2
1024^2
10242
要相信:CSP不卡栈
hash模数:19260817!!!
套路
这个随缘。
板子
回家好好去搞搞吧。
读入优化(其实CSP应该不用,不然Pascal选手哭晕厕所)
对拍、Tarjan、网络流。(似乎没了)
文化课
他死了。
带什么?
身份证、准考证。
水杯、荷氏(没有一颗荷氏解决不了的题,如果有,就两颗!)、衣服。
笔、尺子、橡皮擦……
还有!
人、脑子、心态。