无敌飞舞Hanggoash的总结贴
无敌飞舞Hanggoash的总结贴
注意点
- 一定要学会根据数据范围推复杂度。
- 卡题15分钟就先跳(指 202410-11月时常不能切掉div2c)
- 切忌倒序开题,现在暂时没有那个本事。(CF984 rk9600)
- 少看榜 (至少目前为止不需要)
- if else 一定要审清逻辑,不偷懒。
- 交互题最好就只写 cin cout,endl本身就具有刷新缓冲区的作用,注意每次输出都要刷新缓冲区(包括输出答案)。
- 当整数范围过大时还要调用sqrt的话,应该使用sqrtl或者是手写。
- 用了 ios::sync_with_stdio(0) 就不要再用任何除了 cin cout 之外的io方式了!!!(已经是第三次犯蠢了)
- 超过三十分钟没有一个明确思路就直接跳,切忌恋战。
- 序列上的贪心题,一般注意 \(n=1\) 或者 \(n=2\) 或者 \(k=1\) 的边界情况。
- set 和 map 都有比较巨大的常数。
- map 和 set 都需要定义严格弱序的比较符号,不能让两个逻辑上不同的对象在比较法则下显得相同。
- 多变量的式子经常通过移项实现形式上的统一
- floyd 的转移是无环的,dp转移存在环的时候要使用bfs或者是最短路
杂 trick
- 序列中选择任意数加减 \(a,b\) 等价于加减 \(gcd(a,b)\)
- 可以通过 (a+b-1)/b 来进行不涉及浮点数的上取整,下取整是 a/b
- vscode 环境中通过 ctrl + l 可以快速选择整行
- 注意值域区间 \(+-1\) 具有的rank不变性
- 期望dp把相同项移到一边后再dp
- 区间修改+最小操作次数问题,往差分角度考虑 O(nlogn)。
- 中位数问题通常向 \(+1,-1\) 和 二分答案 上面转化。
- 多次排序问题可以向 \(01\) 串的排序 和 二分答案 上面转化。
为什么要练,为什么要写?
引用一句让我幡然悔悟的话:
“练了不一定写的出来正解,不练一定写不出来正解”
本文来自博客园,作者:Hanggoash,转载请注明原文链接:https://www.cnblogs.com/Hanggoash/p/18599145

浙公网安备 33010602011771号