绝处逢生

Mars_Dingdang

2020-11-05 17:46:03

Personal

这篇文章将作为 **CSP-J/S2020** 和 **期中考试** 的游记。 ## 11/4 考语文和物理。 刚考完语文觉得悬,时间其实也蛮紧张的。出来对答案发现有几个点争论不休,没有定论。不过语文作为主观科目,对答案也对不出什么东西。 结果物理就是当头一棒,尤其是计算题,两道全错,第一题漏解,第二题列式错误,完美避开正确答案。实验题其实也没有把握,不过据理力争地分析了最后一道实验题和作图题。 ![](https://cdn.luogu.com.cn/upload/image_hosting/bk7zhz5j.png) 回家之后码了一道 [广搜题目](https://www.luogu.com.cn/problem/P2730),学了康托展开+树状数组维护。然后刷了几套数学,看了几遍历史书。22:00睡觉了(作业要求21:30)。 ## 11/5 数学和历史。 >老师的话不可信。 我一直以为 HY 的老师诚实,结果……数学考试恶心至极,时间还紧,直接放弃了填空最后一题和大题最后一小问,答案对下来已经扣了至少 $10$ 分了。 历史也不怎么来得及,还有一题卡住了。 颓洛谷。用 `unordered_map` 水了一道哈希(oiwiki 上的例题),然后随机跳题跳了一道很水的贪心(区间覆盖),切了。最后用线段树 AC 了树状数组,算是复习,然后自学了 RMQ。 ```cpp #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;i++) const int maxn=1e5+5,maxl=20; int a[maxn],n,m; //<------------head-------------> #define re register #define gg (getchar()) inline int read(){ register int x=0,f=1; re char c=gg; while(!isdigit(c)){ if(c=='-') f=-1; c=gg; } while(isdigit(c)){ x=(x<<1)+(x<<3)+(c^48); c=gg; } return x*f; } //<----------FastIO-----------> class ST{ public: inline void init(){ n=read(),m=read(); rep(i,1,n) a[i]=read(); l[0]=-1; rep(i,1,n) { f[i][0]=a[i]; l[i]=l[i>>1]+1; } rep(j,1,maxl) { for(int i=1;i+(1<<j)-1<=n;i++) f[i][j]=max(f[i][j-1],f[i+(1<<j-1)][j-1]);//Time: O(NlogN) } } inline int query(int x,int y){ int k=l[y-x+1]; return max(f[x][k],f[y-(1<<k)+1][k]);// Time: O(1) } private: int l[maxn],f[maxn][maxl+5];//Memory: O(NlogN) }; ST s; //<---------RMQ------------> int main(){ s.init(); while(m--){ int x=read(),y=read(); printf("%d\n",s.query(x,y)); } return 0; } ``` 明天英语和道法,不算强项,仔细点吧,加油 rp++! 考完后准备复习图论和基础算法,再练几道动态规划吧。 ## 11/6 英语自认为还好,道法也还行。英语出来对答案发现基础好像错了挺多,首字母还好。据收卷同学说我道法写得是全组最少的。 本打算复习 OI 的,结果STEM课题小组要去写论文,于是荒废了半天的时光。晚上有课,因此备战的时间只剩下一个小时,顿时慌的一批。 没有再去看新的算法,自己列了一个提纲,过了几眼高精、逆序对、快速幂、Dijkstra、线段树的板子,公交上还复习了一下MST。晚上回来开始研究 dp 背包和 LCS $O(n\log n)$。 ## 11/7 >CSP RP++! 一直以为上午提高组,紧张至极。到考场发现上午普及,安全。 准时开考,有点不适应环境,T1 卡了一会儿,觉得比去年麻烦,想到转二进制,还开了个辅助数组做出来的。T2 一开始没想到正解,用 `sort` and `nth_element` 暴力都失败了,毕竟复杂度是 $O(n^2\log n)$。考虑二分加插排,瞄到数据 $n$ 的上面一行,限制 $score\le 600$,发现 $O(600n)$ 能过,于是码了一个桶排碰运气。 T3 一开始以为是简单的表达式求值,用栈模拟,结果写着写着发现有些复杂,跳到了 T4。“方格取数”第一眼先暴力 dfs,结果还调了好久,拿了 20 分。再看发现跟洛谷某一次月赛的“雷雨”有点像,并且 $|w|\le 10^4$,于是找了个办法化掉了负边权用 Dijkstra 做。连边方式想了一会儿,最后再计算取到的数和 [这题](https://www.luogu.com.cn/problem/P2384) 有点像。 打完发现大样例过了。再回来测样例一,结果SPFA了,原来没法走环。 没思路,跑回 T3,打了一个暴力保佑。 考试出来才知道:T2 好多人没想到桶排;T4 是动态规划;T3 全输出 0 可以拿很多分…… >提高组要抱灵了qaq 就这样担惊害怕的进了考场。密码输了好久不对,拿到 T1 就慌了。听到旁边两位同学都在飞速 typing,于是决定果断放弃,来看T2。发现这题很简单,随便码了一段居然大样例也过了。检查数据范围:$k\le 64$ 用 `unsigned long long`,又试了几组极限数据,判断了一下边界,觉得切了一题。 T3 T4 明显不会,只能骗分,暴力拿了45回去看T1了。 T1 只好硬着头皮慢慢做,还列了一个提纲式的东西,用九十行的代码过了前两个样例,觉得有 $50\sim 60$ 分,收工了。 ## 11/8 代码公开了,开始自测。 发现结果让我大跌眼镜。普及 100+100+5+35=240,提高 10+60+25+20=115,彻底炸了。很好奇提高 T1T2 到底错哪里了。不管了。 正解:普及 - T1 二进制模拟,特判奇数 - T2 桶排(强制在线很讨厌) - T3 表达式树 - T4 dp $O(nm)$ 提高 - T1 大模拟(我旁边那位码出来了,结果调试行没注释抱灵了) - T2 跟我的思路差不多,可能有几个细节 - T3 拓扑 - T4 贪心 1= 无望了。 ## 11/9 >还能不能见到明天的太阳? 出期中考试成绩,满分460,我语数外集体翻车,还好有物理历史道法救我。 因数学太不符合水准被蔡帝叫去谈话,给我分析卷子:“这题解三角形找特殊角……这题图都对了还错……这几题都是看错……”说着说着我就100了。 一个礼拜总算结束了qaq