2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest 不完整题解与训练赛复盘

依旧罚时满满的一场训练赛。

比理论上界少两题,E是个大模拟,我们仨都懒得动(bushi,然后G是个我们仨都假了的树形背包。
开始口胡吧!

A题:是个栈,支持push、pop,栈内元素最值。同时维护两个栈,一个单调,一个不单调,然后push的时候如果单调就push两边,不单调就只push一边,pop的时候,如果俩top一样,就pop两边,不然pop一边。
论为什么会跪三发
第一发:“这不是个Multiset吗”——卢姥爷,然后当场去世TLE2
第二发:“这总不能WA了吧”——卢姥爷,然后当场去世WA2,发现是 a n s    x o r = n o w m a x ∗ i ans \ \ xor = nowmax*i ans  xor=nowmaxi的时候,没开LL
第三发:“冲冲冲冲冲冲”——liangs333,然后当场去世WA2,发现是用%d输出了LL。
不要让卢姥爷用printf写题.jpg

B题:不知道是个啥算几题,ghj搞了搞就过去了,甚至node的x和y都是int的点,震撼ls一整年。

C题:凯撒密码签到题。
论交上去之后为啥会WA2 liangs333瞟了一眼代码。
“这玩意你减下去怕不是成负的了”——liangs333
“woc他好像真的可以成负的”——ghj1222
此处应有表情包。
在这里插入图片描述
D题:大鹅坐飞机。
“我们动态选鹅,谁起立谁是鹅。”——liangs333

E题大模拟,八题后大家都很咸,隧咕咕咕。

F题,显然排序floyd,为什么会WA三发呢?
“我觉得你这思路很正确啊”——卢姥爷
“我也觉得他很正确啊,但是他咋wa了呢”——liangs333
第一发:排序之后ord[i]写成了i
第二发:论离线询问之后处理到那个询问直接输出是怎样一种智障。
第三发:我也不知道改了个啥,然后就满怀梦想冲上去了。
wssb。

G题是个我们仨都假了的树上背包,ghj考虑到了按边统计贡献,但是没想出来这dp状态,卢姥爷估计是被那个假的复杂度 O ( n k 2 ) O(nk^2) O(nk2)吓到了,一直在琢磨优化,没敢动手。
那么liangs333在干啥呢?
他还在懵逼为什么这题可以一起dp。

H题:
“这不是上次那个打怪字典序的题吗?A一刀攻击力+1,这咋做啊”——liangs333
三十分钟后
“你读题读假了!这是对于同一个怪,第一刀1,第二刀2!砍A怪第一刀1,再砍B怪,还是1!”——ghj1222
这波是没看清楚这破甲buff是在刀上还是在怪上。
黑色切鸽者 vs 均衡之刃(梦幻联动
算一下每个怪的去世值(被A多少下去世,记为 T i T_i Ti,攻击力记为 A i A_i Ai
对于俩怪, A 1 T 1 + A 2 ( T 1 + T 2 ) A_1T_1 + A_2(T_1+T_2) A1T1+A2(T1+T2) A 2 T 2 + A 1 ( T 1 + T 2 ) A_2T_2 + A_1(T_1+T_2) A2T2+A1(T1+T2)比一比大小,就知道先锤死谁了。
弄个cmp,排个序,sort一发,一个一个锤过去。
写之,过样例,交上去光速WA2。
发生甚么事了。
“要不ghj你帮我重置一下吧。”——liangs333
25min后
“重置的过了。”——ghj1222
“蛤蛤蛤发生了啥?你是按照我那个思路写的吧”——liangs333
“一模一样啊”——ghj1222
“妈的绝了”——liangs333
“妈的绝了”——卢姥爷

K题
不知道是个啥,卢姥爷拿到之后光速秒掉然后写了,调了调交上去WA2,然后再调了调就过了。赛后听说是个36个点的独立集计数题,折半枚举。
卢姥爷牛逼!

L题
给定一个不一定是排列的东西,求有多少个子区间满足“排序后数字连续”,1 1 2 3 4 4 3也可。
枚举右端点,左端点扔线段树上,for i为右端点,统计每次的可行左端点。
假装他是个排列,那个柿子化一化, m a x − m i n = r − l max - min = r - l maxmin=rl
移项 m a x − m i n − r + l = 0 max-min-r+l=0 maxminr+l=0
惊奇的发现这玩意他非负,而且 m i n 和 m a x min和max minmax可以上单调栈搞一搞,于是,min max r区间加,l初始化。
于是快乐线段树,维护最小值和最小值个数。
那么不是排列怎么整呢。
考虑 k k k上一次出现在 p r e k pre_k prek的位置。
对于所有 l ∈ [ 1 , p r e k ] l \in [1,pre_k] l[1,prek],这新的k加了根没加没啥差别,该行就行,不该行就不行。
对于所有的 l ∈ [ p r e k ] l\in[pre_k] l[prek],上一个 k k k没影响。
于是,排列版本里面,每次i++,有一个 a d d ( r o o t , L s i d e = 1 , R s i d e = n , v a l = − 1 ) add(root,Lside=1,Rside = n,val =-1) add(root,Lside=1,Rside=n,val=1),即维护那个r。
非排列版本,改成 a d d ( r o o t , p r e k + 1 , i , − 1 ) add(root,pre_k+1,i,-1) add(root,prek+1,i,1)就行了。
然后线段树单调栈切之。

“看我给你们表演切数据结构”——liangs333。
写的时候感觉轻松+愉快。
youngk和bangbang下了软B过来玩了。
“你这inf怎么是123123123”——youngk
此时的liangs333还没发现问题的严重性。
写,调,冲,光速MLE2。
“这波一定是RE了”——liangs333
让卢姥爷打了个拍,发现果然光速RE,甚至在n=10的时候这破玩意就凉了。
怎么死的呢。
我们注意到这数据范围是 a i ≤ 1 0 9 a_i\le10^9 ai109
123123123 = 1.23 ∗ 1 0 8 123123123 = 1.23*10^8 123123123=1.23108

卧!槽!

震撼liangs333一整年。

论这H题是怎么假的。
“你看看你的HP和ATK是不是输入反了。”——ghj1222
“woc他好像真的反了???这玩意能过样例???”

INPUT 1
2
3
1 1
2 2
3 3
3
3 1
2 2
1 3

抱歉这样例是对称的,他tm真的能过。
微笑.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值