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)*\sqrt{nm})的 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)是一个上凸函数。

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值