22年icpc西安站记录
Posted 吃花椒的妙酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22年icpc西安站记录相关的知识,希望对你有一定的参考价值。
\\quad
最后rank119铜。
\\quad
经过桂林被挨打经历后,西安站赛前佛系了许多,完全没有压力,桂林赛前辗转难眠,昨晚打完游戏后就睡着了2333.十点起床做完核酸后就冲去院楼了。
\\quad
然后准备做好难铜准备。开场几分钟马上有三四道题被过了,感觉签到题很多的样子。
\\quad
作为纯混读题手,马上去看了j,林哥马上发现了枚举选
a
i
a_i
ai前面再选个max
a
j
a_j
aj的性质,11min1a。
\\quad
继续看c,讲完后,林哥说了下性质前面全复制人后面全work,枚举下复制的次数就行,22min1a。
\\quad
继续看f,读完题感觉就纯纯签到,说了下过程,33min1a。接着跟榜想G题,找一个最长字符串使得其子串都出现在给定的字符串中,创哥说数据范围只有1e5,全a的字符串最多根号个不同的,所以直接check长度小于根号级别的串即可,关键怎么check,创哥说ac自动机搞一下,60min1a。接着是L和E过了100队左右,应该是铜牌题,L是集合划分问题,给一个树,要划分最少的集合,使得集合内的点要么全互为祖先关系或者都没有祖先关系。口了一下性质1是条链,性质2的话总结不出来性质。林哥让我去读E,在读错题后我以为是个签到马上上机写了一发然后没过样例,才发现读错题,林哥和创哥猜了L一个做法,1h29min的时候交了一发wa,应该是假结论。马上创哥发现枚举子树内长链数量,性质2的集合数量其实取决于其他部分的最大深度,树上dfs的时候搞个优先队列维护一下长链即可,2h3min2a。看了眼rank80多,经历了上次的ccpc铜,其实这场我们都挺佛系了,竟然在银牌区,我们马上燃起更强的斗志了。在一旁想了半小时的我,说了下打表的发现,本质是棵三叉树,若同层满的话,层内最右边的点就是最大点,最后一层看倒数几个点,创哥想了一下把我hack了,然后创哥说最右侧为最大值的点这个性质,只在同一棵子树内有,枚举下子树,最多log棵满三叉树,求f值是log的,总的时间复杂度
O
(
T
l
o
g
2
n
)
O(Tlog^2n)
O(Tlog2n),吸取了桂林站的教训,我和林哥一起盯着创哥码,2h56min的时候1A!看了眼rank90,差不多银尾,必须再出一道才有比较大的可能银。此时A和B过的队伍数差不多,二三十队左右,看完了AB后,想了
下A马上有个链表的想法,不过感觉不应该过的这么少,遂放弃了A,三人一起看B。
B是给个矩阵,设k为颜色数,z为特殊颜色点数,求max(ck+dz),其中c和d已知的,矩阵中有的点需要染色,染色需要满足同一行同一列的点不同色。林哥发现了,染色数为k = max(row,col)就可以满足限制此时z为0(可以构造类似错排的东西),顺着想下去,染色数一定小k,应该是枚举k,然后使得z最小?我口了下可能是网络流,林哥说了下二分图最大匹配,感觉林哥说的有道理,林哥马上上机码,感觉这题非常有希望出啊!我再一旁想了一下,最多边数是nm的,最坏复杂度
O
(
m
a
x
(
m
,
n
)
∗
(
n
+
m
)
∗
n
m
)
的
O(max(m,n)*(n+m)*\\sqrtnm)的
O(max(m,n)∗(n+m)∗nm)的大概在3e8左右,题目只给了1s的时限,感觉有点危险。写完后4h11min交了一发,竟然tle了。因为之前有在想贪心的做法,好像也找不到hack,遂林哥写了发贪心,结果wa了,不过倒是反证了应该是网络流。于是考虑优化,林哥说可以在残量网络上跑,我想起了多校的某题,感觉很对,改了下交一发wa了,开始对拍,发现残量网络上跑和第一发代码跑出来不对,感觉残量网络有点偏贪心,好像有点假,然后开始改第一遍的k次最大流,疯狂卡常,到最后还是没卡过去。
\\quad
看了下群友有同样做法过的,不过多了个剩余流优化,有残量网络过的,也有三分k网络流check过的。感觉做的大差不多了,输在板子上了,很不甘心。
\\quad
最折磨的莫非,赛前本不抱着希望拿银的,赛时到中间一直稳在银牌区,又燃起了我们的斗志,然后最后银牌题又差一点,又把我们的希望掐灭了。
\\quad
感觉签到题挺多的,铜牌题L,银牌题A和B,最后7题银,8题金,区分度挺明显的。板子问题也归结于平时残量网络的题做的少吧,多校那题只是看了下做法,没有补。没想到这场的网络流挺裸的,建图也不难,挺可惜,每场都是差一点。
\\quad
还剩最后一场,最后一个月再努努力吧,acm最后生涯应该在奋斗中结束。
update12.4
对于B的三分做法,其实赛场上有考虑过给定式子的性质,有想过三分二分式子,但赛场上智商不如小学生,都不会证明单峰函数,就pass了三分。。。
补一下证明:
\\quad
F
(
k
)
=
d
k
+
t
z
=
d
k
+
g
(
k
)
z
,
其
中
g
(
k
)
=
t
,
显
然
t
是
一
个
关
于
k
,
且
不
升
的
函
数
F(k)=dk+tz = dk + g(k)z,其中g(k)=t,显然t是一个关于k,且不升的函数
F(k)=dk+tz=dk+g(k)z,其中g(k)=t,显然t是一个关于k,且不升的函数
F
′
(
k
)
=
d
+
z
g
′
(
k
)
是
个
不
升
函
数
F'(k)=d+zg'(k)是个不升函数
F′(k)=d+zg′(k)是个不升函数,F(k)是一个上凸函数。
以上是关于22年icpc西安站记录的主要内容,如果未能解决你的问题,请参考以下文章
2017年icpc西安网络赛 Maximum Flow (找规律+数位dp)