Day 1 不想说了,反正就是三个水题,直接来讲Day 2。

Day 2 一上来,T1做法写的丑了点,折腾了一会,大概50min的样子写完了。

T3一眼DDP……这玩意儿我就写过一个模板,还只写过一次。考场上直接来莽风险有点大,又看到这玩意儿部分分还挺多的?就先扔了。

然后就开了这个坑爹的T2。

T2第一眼以为是只要斜行单调就行了,但是仔细分析了一波,发现这样的话,\(3 \ 3\) 的样例就会是 \(2 \times 3 \times 4 \times 3 \times 2 = 144\) ,会错。

仔细想了想,这东西不仅是要斜行单调,有可能两条不同的路径到同一个点的时候,会跑出相同的字典序,然后后面的部分只要能够跑出不同的字典序,就会出问题。

稍微修了一下锅,条件变为

  1. 满足每一个斜行的数字从左下到右上是单调递减的。
  2. 如果对于某个数字,其左边的数和上面的数相同,那么以这个点为左上角,终点为右下角的这个矩形,每个斜行所填的数字强制相同。

直接基于这个东西,强上状压DP的话,复杂度是 \(2^mm^2n = 1.63 \times 10^{10}\) ,不太能跑,不过状态数相对较少,说不定可以试一试。不过这个东西两头的时候细节相当恶心,又只能拿到 \(80pts\) ,不大甘心。

想到这里的时候,T2大概开了 \(40min\) ,个人认为还是比较正常的。

后面的过程,就想得有点多了,整个思路也越来越不正常,最后时间不大够了,决定写暴力。如果只写裸暴力的话未免有点太亏了,想来想去写了个复杂度大概是 \(m^{n-m} m!^2 \times nm\) ……的暴力,大概就是暴力枚举每个斜行由 \(1\) 变为 \(0\) 的位置,然后再暴力 check 第二个条件是否合法。这玩意儿剪下枝的话,应该还是能跑个 \(8 \ 8\) 的。

然而……整场比赛我可能就败在这个地方了……

考场上枚举位置的时候,写了个我可能会后悔很久的错误……

inline void dfs(int cur,int tot) {
if(cur > tot) { Calc();return; }
For(i,1,min(cur,n + m - cur) + 1) P[cur] = i,dfs(cur + 1,tot),P[cur] = 0;
}

然而这个枚举的上界……我算错了……

inline void dfs(int cur,int tot) {
if(cur > tot) { Calc();return; }
For(i,1,min(min(cur,n + m - cur),n) + 1) P[cur] = i,dfs(cur + 1,tot),P[cur] = 0;
}

只要改一下就行了……

就是这个玩意儿……它能跑对所有 \(|n-m| \le 1\) 的数据。很不幸,所有样例都是 \(n=m\) 的。

后来拿着这个暴力程序找了 \(min(n,m) = 2\) 的规律,\(min(n,m) = 3\) 的时候发现找不出来了……

又拿这个程序,把 \(8 \ 8\) 以内跑得慢的点打了下表。自认为有 \(65pts\) ,就去 rush T3的暴力了。

T3暴力我直接写的 \(52pts\) 的,调了好一会,才调对。

考场一出来,FakeBeng说T2他找了 \(65pts\) 的规律,\(\min(n,m) = 3\) 也有规律,说什么一直乘 \(3\) 就行了。我当时觉得心头一凉……我还地记得我的程序 \(3 \ 5\) 跑出来是 \(1300\) 左右的一个数字,而他说他裸暴力跑出来是 \(1008\)。

中午吃饭的时候,完全没有心思。一直在想到底哪里有问题……后来猛然间发现,这个枚举上界似乎是有问题的,只有在 \(|n-m| \le 1\) 的时候才是对的。这样,因为所有的东西都是拿这个错误的暴力跑的,自己的 \(65pts\) 就变成了 \(rand(15,35)pts\) 了。

我回头仔细想了想,其实如果这个暴力我只要写对了,所有规律我肯定是能轻松找出来的……我的暴力都能跑 \(8 \ 8\) 了,乘 \(3\) 的规律不可能看不出来。

晚上的时候在知乎上看到了 \(Wearry\) 的 \(O(\log n + \log m)\) 的题解……才意识到,自己考场上想的状压DP状态数真的很少,在 \(n > m + 1\) 的时候就只有一种状态了……也就是说自己再冷静分析一波,也许可以在考场上直接写出非打表的正解……即使不写状压DP,也可以通过小范围的分类讨论,直接得到一个式子,式子有点恶心,但也能做。

最后T3因为 long long 的原因挂了一个点。\(100 + 100 + 100 + 100 + 25 + 48 = 473\)

出来的时候 doe 还告诉了我 Day2T3 的非 DDP 的正解,倍增+DP。听上去会比 DDP 好写很多,相较于树剖版的 DDP 也会少一个 \(\log\) ,大致做法和nyg的NOIP模拟题几乎是一模一样的。不过她自己也很遗憾没写出来。大概一眼看到觉得是 DDP 就不会去想其他做法了吧。

最后这场NOIP以我校全线崩盘而告终。我问了一圈,似乎所有人全都吊死在了这个T2上,也不知道该说什么好。

不管你怎么讨厌这套题,不管你怎么讨厌这个T2,但这就是你的NOIP分数,实实在在,呈现在你眼前,有些刺眼,却又无可奈何。

仔细想起来,上一届NOIP考得似乎也不是太好,但是HNOI的时候,完美翻盘。

所以,HNOI2019?

This will be our story.

UPD after HNOI2019:

现在回头看这篇所谓的游记,感觉自己的戾气挺重的……怎么说也该反思一下翻车的原因吧……

说白了,一部分原因还是自己心态出了问题,给自己的期望太高。当得分达不到自己所谓的期望的时候,就不想动键盘。事实上,Day2T2写一个我最后写的爆搜不需要超过 \(20min\),可最后我在这道题上花费了将近两个小时。当发现自己得分效率不高的时候,应当果断放弃继续深入思考,拿走现在会的分数。Day2T3即使写不出 DDP,最后写一个不错的暴力相信也不算个难事。

另一部分就是这个写挂的问题。现在写题(之前也有)有个不太好的习惯,不喜欢对拍,总是相信自己的准确率。HNOI2019 已经吃了一次亏了,如果不改的话 NOI 恐怕还会重蹈覆辙。

NOIP2018 差点退役记的更多相关文章

  1. NOIP2018游记 & 退役记

    NOIP2018游记 & 退役记 我是一名来自湖北武汉华中师大一附中的高二\(OIer\),学习\(OI\)一年,今年去参加\(NOIP\),然后退役.这是一篇\(NOIP2018\)的游记, ...

  2. Noip2018/Csp2019 ------退役记

    退役记 上记 不知道为啥,自从今下午某大佬的人生第一次政治运动(虽然最后被镇压,现在小命难保)后,仿佛有一种看破感. 以下有点在自作多情,不喜者可以不看. 学信竞快一年了.可以说有收获也有失去吧. 收 ...

  3. NOIP2018游记(退役记。)

    Noip2018游记 这可能是写的最后一篇博客? \(Day0\) 早上六点从学校出发? 早上有雾,在车上扯淡,睡觉. 莫名其妙到了中午,想着午饭怎么解决,后来才知道早上发的四个面包竟然就包括我的午饭 ...

  4. Noip2018退役记。

    下面是边考试边写的严肃版退役记\(:D\) Day0 其实我本来想取个这个名字:\(NOIP2018\)提高组复赛试题解析 但是这个博客自己求生欲望太强自己改名了. 先占个坑. noip考前毒奶 \( ...

  5. NOIP2018滚粗记

    NOIP2018滚粗记 day 0 上午,说是可以休息,然后睡到快9点起来吃个早饭去了机房.刷了几个板子就十二点了 下午大概就是看别人总结,颓知乎,完全没心思写代码. 晚上不要求,然后在寝室颓了一下, ...

  6. ACM退役记&&回忆录

    ACM退役记 2017.9.19星期二,"九一八事变"八十六年后的第二天,永远记住这个日子,刚好是我报名ACM到现在,刚好满一年,而今天正是我注册杭州电子科技大学OJ的时间(就是这 ...

  7. NOI2018退役记

    NOI2018退役记 终于我也退役了-- Day0 高中毕业前最后一次坐飞机了--在机场干什么呢?当然是打元气打元气打元气.下飞机干什么呢?当然是打元气打元气打元气. 有接机服务,大巴上有个导游,又向 ...

  8. [日常] HEOI 2019 退役记

    HEOI 2019 退役记 先开坑 坐等AFO 啥时候想起来就更一点(咕咕咕) Day 0 早上打了个LCT, 打完一遍过编译一遍AC...(看来不考这玩意了) 然后进行了一些精神文明建设活动奶了一口 ...

  9. ZJOI2019day1退役记

    ZJOI2019day1退役记 每天都在划水,考场上心态炸了,也没什么好说的. 有人催我更退役记,等成绩出来了再更更吧,成绩出来也没心情更了,落差好大,还打不过文化课选手 虽然被卡常数卡到心态爆炸,但 ...

随机推荐

  1. MySQL数据类型--日期和时间类型

    MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...

  2. UIAutomatorViewer 出现错误:Unable to connect to adb

    最近升级了AndroidSDK,打开UIAutomatorViewer.bat,结果发现获取不了Android设备界面上的UI信息.经过一番努力,终于把这个问题解决了,详细过程如下: 1. Unabl ...

  3. Eclipse lombok java

    Stablehttps://projectlombok.org/features/all Lombok介绍及使用方法 - holten - 博客园http://www.cnblogs.com/holt ...

  4. Git Gerrit Code Review

    Gerrit Code Review | Gerrit Code Reviewhttps://www.gerritcodereview.com/

  5. MySQL的binlog及关闭方法

    如何关闭MySQL日志,删除mysql-bin.0000*日志文件 - VPS侦探https://www.vpser.net/manage/delete-mysql-mysql-bin-0000-lo ...

  6. Is there a way to avoid undeployment memory leaks in Tomcat?

    tomcat 项目部署问题 - yshy - 博客园http://www.cnblogs.com/yshyee/p/3973293.html jsp - tomcat - their classes ...

  7. 上古神器之Vim编辑器

    在Linux操作环境下进行文本的编辑少不了编辑器vi ,vim,nona... 一. 修改颜色方案 有时候,使用vim打开一个文件,竟然是蓝色的,辨识度相当的差,这个时候,我们可以调整 一下颜色的搭配 ...

  8. C#复习笔记(5)--C#5:简化的异步编程(异步编程的深入分析)

    首先,阐明一下标题的这个“深入分析”起得很惭愧,但是又不知道该起什么名字,这个系列也主要是做一些复习的笔记,供自己以后查阅,如果能够帮助到别人,那自然是再好不过了. 然后,我想说的是异步方法的状态机真 ...

  9. [转帖]Huge Page 是否是拯救性能的万能良药?

    Huge Page 是否是拯救性能的万能良药? 本文将分析是否Huge Page在任何条件下(特别是NUMA架构下)都能带来性能提升. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢 ...

  10. 剑指offer(15)

    题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 书中的思路: 按照这个思路我们很容易写出以下代码: import java.util.S ...