CSP-S模拟赛游记&&题解

Day 1

并不算早地到了教室,准备接下来的比赛。但貌似没什么可准备的,瞎考就完了

接着,发了比赛的文件,立即打开,发现共有4题,符合今年提高组的题数。然后,开A题,但是由于是英语的啥也没看懂。

又看了十几遍,啥也不知道QAQ

然后问老师,得到了口胡的这题中文题面。然后,推了推样例,得到了输出但是貌似并没有看出什么规律。

做不出来我就废了

接着开始思考,先想了会贪心发现均有反例。然后开始挖性质(从b6e0巨佬那里学来的);看到题中起始点的保证升序,不难想到——定义第 i i i与第 j j j只奶牛在 t t t个时刻后到达的位置为 x , y x,y x,y,如果 x ≥ y x≥y xy,那么他们两个奶牛就不能在同一条跑道上。所以,我们求出每头奶牛最终结束的位置,然后最终的答案就是分为许多单调上升段的最小段数,显然为最长不上升子序列的长度,可以用二分 O ( n l o g n ) O(nlogn) O(nlogn)求出。

15 m i n 15min 15min码完。开 B B B

B B B的题面非常好懂,开始思考。

首先,对于这种题关系牵扯得很厉害,要么贪心要么 d p dp dp(正解是二分本蒟蒻当时并没想到)。

贪心显然会存在反例,于是开始推 d p dp dp式子。推了下式子,加了两维状态保证了关系之前的可转移性,在 O ( n ) O(n) O(n)的时间复杂度内就能解决。

同时,打了一个 O ( n 2 ) O(n^2) O(n2)的暴力,如果 n ≤ 4000 n≤4000 n4000就用暴力,否则 d p dp dp,然后将两个对拍了一下。

扫描二维码关注公众号,回复: 12024476 查看本文章

咦?不一样?

难道dp不行?

查了一下,发现是状态转移写挂了,小改一波就对拍成功了。吓死本蒟蒻了QAQ

然后抱着 200 200 200分开 C C C,发现是一道大水题,状态压缩 d p dp dp套贪心就可以快速解决, 20 m i n 20min 20min就做完了。然后骗了下 D D D的分(打样例),觉得此时想 D D D正解并没有多大意义,果断开始对拍 A , B , C A,B,C A,B,C

先拍了 C C C,没有问题;然后造了一个 n , k = 20 n,k=20 n,k=20的极端数据,发现跑了 2.4 2.4 2.4秒才跑出来?

可以发现,本蒟蒻的时间复杂度是 O ( 2 n n 2 ) O(2^n n^2) O(2nn2)的。做了一些简单的剪枝优化,时间降到了 1.1 s 1.1s 1.1s。去洛谷IDE上运行了一下,时间为 0.8 0.8 0.8秒,于是就丢一边拍 A A A了。

先手造了一组数据就发现了错误。当时距离比赛结束只有 15 m i n 15min 15min了,瞬间慌神。

查了一下,发现自己的二分写炸了(变量名混淆),做了些改动接着测,发现还是不对。

怎么办?凉拌QAQ

回去看了下,发现这一次的问题是 R E RE RE,原因是 i n f inf inf设的值偏小。把 i n f inf inf变大后,便匆匆写了个文件操作交了走人……

期望得分: 100 + 100 + 100 + 10 = 310 100+100+100+10=310 100+100+100+10=310

实际得分: 84 + 21 + 100 + 10 = 215 84+21+100+10=215 84+21+100+10=215

什么?我 A A A题又被卡常了?又被卡常了??!!!

QAQ

B题在 b 6 e 0 b6e0 b6e0巨佬的提醒下,发现自己把题面看错了,要求将答案保留 3 3 3位小数,而本蒟蒻没看到……

接着看了下其他人的分数,竟然有 r k 1 rk 1 rk1? 发生了什么?明明挂分挂成这样还能 r k   1 rk\ 1 rk 1? 我真醉了QAQ

别祝贺我几十个秋葵了,是嫌这个分数不够丢人吗QWQ

Day 1.5

老师开始讲题~

T1

求出每头牛在 t t t时刻后到达的位置,并用二分在 O ( n l o g n ) O(nlogn) O(nlogn)的代价下求出这些位置的最长不上升子序列即可。

与本蒟蒻的思路一模一样,但是本蒟蒻却惨惨地被卡常了……谁叫我这么菜呢……

T2

一道裸的二分题。

我们二分,假设当前这个值为 m i d mid mid,我们判定Farmer John最惨的平均值是否不大于 m i d mid mid,显然这个判定有单调性。那么如果判断呢?我们直接把序列中所有数都减去 m i d mid mid,让另外一个 F a r m e r Farmer Farmer选和最大的区间,剩下的给 F a r m e r J o h n Farmer John FarmerJohn,就可以把他坑得最惨。如果这个值是非正数,那么就返回 t r u e true true;否则 f a l s e false false

然后上台说了说自己的 d p dp dp解法。

这题蛮不应该的,考场上想不到简单的二分是不应该的,看错题目是不应该的!

A C AC AC千万条,审题第一条。题目不审清,赛后两行泪……

T3

考虑状压 d p dp dp

d p i , j dp_{i,j} dpi,j表示目前看到了第 i i i行,已比赛过了的奶牛的状压值为 j j j

状态转移显然。同时注意贪心,设 l e a s t least least表示一个裁判认为奶牛的总分达到 l e a s t least least才能加分,那么对于 l e a s t least least值小的我们先加, l e a s t least least值大的后加,所以要先排序。

时间复杂度 O ( 2 n n ) O(2^n n) O(2nn)。由于自己剪了枝,并发现不剪枝的程序也能过,于是胡扯自己能 H a c k Hack Hack掉所有人交的 A C AC AC程序,结果被班上几位巨佬一起吊打了……

T4

由于没读题,咕咕咕

Day 1.7

总结一下这场比赛,主要还是老问题:

①卡常。

②审题。

还是那句话:

A C AC AC千万条,审题第一条。题目不审清,赛后两行泪

希望大家能够明白审题的重要性,不要像本菜鸡一样狂挂 79 79 79分,否则后悔莫及。

唉,还是太菜了QAQ

猜你喜欢

转载自blog.csdn.net/Cherrt/article/details/108553474