0818NOIP模拟测试赛后总结
又挂了……
120 rank19。
第一次两个机房考不同的题目。一开始并不知道应该做哪套题目。
不明真相的吃瓜群众决定先点开B套。通读三道题,只是觉得T2好水。似乎是红题难度吧……(后来证明是我读错题了)
又点开A套,瞥一眼T1,默默关上回到B套。
开始并没有意识到T1是原题。死活推不出柿子决定先肝下T2。
3分钟错解出炉,死活过不去样例。然后决定打一个dfs验证一下,刚敲完dfs,电脑黑屏……
丸。
以为是我自己把电线踢掉了,因为往前一看大家的电脑都还活着。
结果是我们这一列局部停电。一脸懵比。老师出去了一下,几秒回来说可以开机了。淼哥万能!
于是重新码T2,也能静下心仔细读一遍题,发现喝一次水是整体下降。好吧我以为是单个下降。也真感谢良心出题人出的这个良心样例了。
然后想了一会儿只写了个nm暴力,觉得加个读入优化比较好,然后加上快读也没编译就交了。
瞅了一眼T3,繁琐的图论。弃坑弃坑。
转过来想T1。想了大约20分钟,woc这不是傻逼原题么。赶紧切切切。
几分钟就写完交了。
继续肝T3,然而又是一阵各种颓颓颓。
最后写了个tarjan缩点+dfs暴搜过了样例就交了。(一边写还一边吐槽2.5k的码长,事实证明还不如写一个纯暴搜最多1k)
看一眼表,快到点了于是切出比赛主界面开始疯狂刷新+等死。
咦怎么还不出来?看一眼结束时间已经延后了10分钟。啥时候延时了??一脸懵。(并没有意识到是因为我们这一列延时)
去个厕所。路上忽然想到应该都拉下来编译一遍。
于是发现我的T2编译不过……惊出一身冷汗。由于莫名的审美观我加了一个
#define read(A) A=init()
然而某个读入我是这么写的
for(rint i=1;i<=n;++i)wi[i]=read(); for(rint i=1;i<=n;++i)ai[i]=read();
一阵庆幸赶紧改过来交上。
继续等死。
出分发现T1没有A掉……RE了……
检查了一下发现有两个数组应该开两倍而我没开……RE70凭空自挂30分。
自挂东南枝.jpg
赛题题解
T1:字符串
原题,就是卡特兰专题的第一题换了个背景。
0代表在网格图上向右走,1代表向左走。约束条件即不能过x=y的那条线。
转化后套用公式即可。
要不推一下柿子?算了懒得画图。
T2:乌鸦喝水
看到数据范围猜一下时间复杂度应该是$O(nlogn)$的。发现一条性质:水少的水缸一定在水多的水缸之前喝完。
于是考虑按喝完的先后顺序排序挨个计算每个缸里喝了多少次,最后简单加和即可。
坑