原洛谷主页

优先级题单,有空就做这个

记得:static

让不会做的题变成会做的题,易错题变成必对题。

单数日学习,双数日做题。

渗透:

  • 叫什么
  • 地位
  • 干什么
  • 核心思想/原理
  • 具体的原理+实现

A

B

C

我的 flag 们:

  • \(7\) 月:黄题 AC 100。(达成)
  • \(7\) 月:绿题 AC 50。(达成)
  • \(7\) 月:自己做出一道紫题。(达成)
  • \(7\) 月:场切一道蓝题。(达成)
  • \(8\) 月:黄题 AC 150.
  • \(8\) 月:绿题 AC 100,蓝题 AC 50,紫题 AC 10。
  • \(8\) 月:AK 一场 Div.3,abc 场切 6 道题
  • \(8\) 月:AK 一场 CF 比赛,任意难度。
  • \(8\) 月:洛谷等级分 1200,CF rating 1300,AT rating 1000

建图

CSDN

后缀树

画图

博客

已废除的计划:

  • 周一:随机跳题,至少5道黄,1道绿。洛谷日报。

  • 周二:如果周一flag没完成就补一补,更 blog。适当进行比赛补题。洛谷日报

  • 周三:做这个,至少一章节。更blog。洛谷日报。

  • 周四:做彩虹周赛,如果周三flag倒了就补一补。更blog。洛谷日报。

  • 周五:学习深入浅出一章节,并完成一个题单中至少 \(70\%\) 的题目(向上取整)。洛谷日报。

  • 周六:继续学习深入浅出一章节,完成题单。更blog。洛谷日报。

  • 周日:适当对一周进行总结,补题,疯狂的补题,绿及以下的题必补,其余题看情况补。洛谷日报。

当然,如果有某一天任务过多,可以在任意一天补,但是当一周结束,必须完成一周全部任务。

需要打的比赛,请你自行安排时间:abc前5题,CF Div.3/Div.4/Div.2 前两题,彩虹周赛前 \(4\) 题,新手要求无伤 AK,如有洛谷月赛等等比赛,视情况参加。

快读:

inline int read(){
	int x=0,f=1;
	char ch=getchar_unlocked();
	while (!isdigit(ch)){
		if (ch=='-') 
			f=-1;
		ch=getchar_unlocked();
	}
	while (isdigit(ch)){
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar_unlocked();
	}
	return x*f;
}
inline void write(int x){
	if (x<0)putchar('-'),x=-x;
	if (x>9)write(x/10);
	putchar(x%10+'0');
}

实战经验部分

1.检查空间。检查文件名。检查注释。检查调试信息。

2.考前多复习一点板子。

3.没啥特殊情况不要乱开 long long。

4.记得对拍。

5.多测记得清空。

6.如果有可能,尽量保证能做出 T1。

7.能用数组解决的事情一定不要开 STL(尤其是假装是 $ \mathcal{O}(1) $ 的 unordered_map)。

8.检查文件夹是否在正确的位置,注意文件输入输出不能写错。交上去之前要先编译一次。

9.有必要的时候可以用随机化骗一点分,注意退火参数不要写挂。

10.有能力的话冲一点高分暴力和特殊的暴力,如果数据强度低可能可以意外的得到不少分。

11.合理安排开题时间,最好用半小时先看一看题目和分数的分配。不要急着拿到题目就先开始写。

12.记得检查返回值类型,本机通常无法检查出来。

13.不要用变量 y1,会和 cmath 库冲突。

14.二分是 $ l \leq r $ 不是 $ l<r $,要注意各种边界条件。

15.注意不要忘记取模,检查模数是否正确。

16.最好多造几组数据对拍,特别是 corner case

17.使用负数做下标某些情况下可能正常通过编译,请注意越界问题。

18.无向图的空间是 m 的两倍。

19.注意位运算的优先级。

20.记得取模。

21.inf 要开足够大。但不能大到运算结果溢出。

22.如果你的代码是采用类似小数据暴力大数据正解的办法,建议把大样例每种数据规模和特殊数据都测试一遍。

做题 trick 部分

1.如果写 dfs 一定记得尽可能地剪枝。

2.如果能写入 dfs 状态的东西一定要写进去,最后检查是否合法的时候能省去一个 $ \mathcal{O}(n) $ 的复杂度,很多时候这不只是 $ 20 $ 分的差距。

3.注意 dij 和 SPFA,dij 不能处理负权边问题,而 SPFA 有时候会被针对。

4.如果 dfs 的深度并不固定,可以用判重的方法加速,往往比限制深度的 IDDFS 优越不少。

5.关于deque:建议手写,会爆空间,血的教训。

6.如果观察到合法的状态较少,可以考虑尽量只枚举合法的状态。

7.保证数据随机生成 往往是有用的信息,可以骗分也可以借此发现一些性质。

8.枚举子集不要 dfs,直接状压即可。

9.注意题目中某些极小的维度,通常很有用。一般是 $ \mathcal{O}(2^n) $ 或者是 dfs.

10.如果题目中出现 $ 2 $ 考虑转化为二进制。

11.很多序列问题都和逆序对个数有关。

12.多看数据范围,这不仅能保证题目不看错,数组不开错等错误,有时候能启发解法,比如某些维度较小或者较大。

13.尽量优化暴力解法的常数(如果有时间),有时候会有奇效。

14.不给多测的时候不妨自己造几组或者把样例粘在一起(不保险,建议从大到小和从小到大都试一次),多测清空不能memset,推荐的方法是写一个暴力对拍,然后把用到的所有变量在代码里丢在同一个地方,直接粘列表清空。

15.排列题答案取最大值。不妨退一退火或者用随机排列。退火我还不会。适用于相当一部分不是计数的最优化问题。

16.降低枚举量。这在某些题目很好用。

具体地,减少重复枚举和本质相同枚举。一个经典的例子是枚举数改为枚举数出现的次数。

  1. 注意输入格式不要漏掉,不然会挂的很惨。

  2. 线段树实现的时候,懒标记的部分好好想一想。

  3. 倍增记得处理好边界,不要漏掉。

  4. 看到括号题,尤其是匹配括号考虑拆括号的性质。

  5. 遇到不会的计数、统计题优先考虑拆贡献。

  6. 发现跳的次数或者变化的次数比较多且 \(n\) 适当考虑倍增和矩阵加速。

posted @ 2025-10-12 10:42  Cefgskol  阅读(2)  评论(0)    收藏  举报