yd的汇总

因为是我这只蒟蒻个人的汇总嘛,可能有些奇♂怪的东西或者不规范的语言出现啦,见谅见谅

搬了一些到知识汇总里,删了一些过时和无用的,少了好多=。=

1.STL_queue

经实践验证,!qs.empty()快于qs.size()

2.luogu p2114 起床困难综合症

if(位运算) 括号++;

update on 2018.7.2:

发现位运算的优先级比小于号那一堆还低。。。

3.luogu p1853 投资的最大效益

当背包问题中代价/价值为$kn$时可以在循环中用$kn/k$来表示,这样可以压缩dp数组空间从而缩小常数 

4.luogu p1284 三角形牧场

用计算函数时注意接受/返回的变量类型

5.二分答案(个人写法)

整数域上二分:1.卡死上下界 2.当合法时用变量记录答案 3.用$mid+/-1$移动左/右边界(用l<=r作为循环条件)

实数域上二分:1.卡死上下界 2.直接输出合法时的边界 3.用mid移动左右边界(用r-l>eps作为循环条件)

或者实数域二分看情况可以直接限定次数

6.luogu p1498 南蛮图腾

输出字符'\'时要写成'\\',因为'\'单独用是转义字符,'%'同理,它是输出时的标识符

7.luogu p1022 计算器的改良

float/double型的变量值为$0$时被负数除会变为$-0$,输出时注意判

8.long long

永恒的真理:不开long long见祖宗

9.STL

栈和队列取/弹元素时注意判断是否为空

10.luogu p2746 Networks of schools

缩点时注意判断图是强连通图的情况

11.竞赛图缩点

缩完了是条链

12.pow函数

cmath库里的pow函数就是个垃圾,永远都不要用

13.背包方案数

做这类问题时注意全都能买的情况下只有一种方案

14.luogu p3265 装备购买

有时精度误差可以通过拆开计算式的方式解决

15.左偏树

记得Gettop

16.CF474F Ant colony

线段树查询区间$gcd$时不能进入完全不包含的区间,不然返回什么都不是=。=

17.luogu p1867 钉子与小球

算术左移时注意爆int的问题

18.luogu p2233 公交车路线

调不出来的时候就回去仔细读题

19.luogu p2197 单选错位

当范围达到$1e7$的时候就该注意内存限制了

20.调试语句

一定要记得删!!!

21.SCC

Tarjan缩点后建新图后一定要区分好新旧图

22.luogu p1365 WJMZBMR打osu!/Easy

读入字符尽量读字符串后取出来,因为有换行符这个东西。。。

23.luogu p3498 Beads

挂链哈希表用新模数区分哈希值时注意和哈希表的模数区分开

24.边界问题

不要含糊,一定搞清楚,不然说卡死你就卡死你。。。

25.期望

对于OSU类问题(雾,详见洛谷p1654 osu),如果用滚动数组/变量统计答案,注意答案自己是这样的(以将除法转化为模意义下乘逆元为例)

$exp_{ans}+=(exp_1*k_1+exp_2*k_2+...+exp_n*k_n)\%mod$

26.差分约束

可以不要超级源点,将每个点手动入队+手动赋值

27.序列问题的一个套路

统计某种性质的区间时可以维护某个值然后一路扫过去,当这个值出现两次时说明中间这一段有某种性质

28.一个奇怪的东西

①$log_ca^b=blog_ca$  ②$log_ab=\frac{log_cb}{log_ab}$(文化课太差,捂脸

29.均摊复杂度

①当一个暴力的复杂度是$m$,另一个暴力的复杂度是$n/m$时,我们可以把它们拼起来,就得到了一个$nsqrt(n)$的解

②当算法的两部分复杂度相差很大时,尝试通过某种手段把复杂度均摊

30.最短路状态爆炸

分层/拆点

31.一个找规律的套路

尝试把下标放在分子/分母上

32.manacher

correct:r[i]=(maxr>=i)?min(r[2*mid-i],maxr-i+1):1;

wrong:r[i]=(maxr>=i)?min(r[2*mid-i],maxr-1+1):1;

不知道为什么我总是写成底下那个(捂脸

33.一个图上问题的套路

求以某个点为起点的某些信息可以考虑拓扑排序,求以某个点为终点/经过某个点的某些信息可以考虑记忆化搜索

34.当你因为限制太多被卡死时

不妨试试枚举吧=。=

35.一个合并区间信息的套路

正反都做一遍,然后前后拼起来

36.一个可行性dp的套路

套上bitset立刻获得$\frac{1}{32}$常数!

37.一个当你会设状态而不太会DP的时候的做法

直接记忆化搜索,非常有用

38.当你对一个题的策略不太确定时

不妨牺牲一些常数和可读性而写得更严密一些

39.Tarjan_CV

一个点可能会在好几个儿子被算成割点,需要打标记记录(建议)或者去重'

40.vector定点插入

举例:在vector<int> ve第$k$个元素之后插入元素$x$: ve.insert(ve.begin()+k,x);

41.不开O2时vector极慢

rt,慎用

42.莫队

加入是++x/--x,删除是x++/x--

43.一个bitset $bset$在$O(\frac{len}{32})$内查询是否能凑出某个数$x$

方法是从尾到头再维护一个反着的bitset $rset$

作差:$bset\&(bset<<x)$

求和:$bset\&(rset>>(Maxn-x))$,其中$Maxn$表示最大的数

44.叉积判斜率大小

斜率小的叉斜率大的得负,反之亦然

45.数论题经常挂的地方

爆int/long long

46.不要上头

在尝试翻译一份指针版FHQ_Treap写的LCT一晚上失败后得出的教训

47.LCT

Getroot之后要记得Splay

48.该传参传参,别老开全局

于2018.12.19上午调了两个小时后得出的教训

49.快读快输一场空,不判负数见祖宗

考试爆一道题得出的教训

50.暴力与优化

拿不准的时候,先把暴力写出来再优化

51.大概是背包的问题

可以考虑转成桶存储之后用多项式卷积优化

52.组合数记得判n<m

调了一个多小时这个=。=?

53.长代码要分块写

就是每块搞一个函数这样

54.输出保留若干位小数

一般需要你强制输出到应有的位数

55.FFT

乘的时候是两个复数相乘,别不知道怎么写成两个x相乘(不应该是手顺啊,明明代码更多了)

我居然调这个调了两个小时(其实是因为样例的写错和写对的答案太像了,我以为哪里丢精度了

56.图同构的一个套路

先把图看成完全图,然后把有/无边看做黑白染色

57.static

意思是静态内存,只有第一次赋值,以后都还用这一块,默认是之前的值

58.lyd快速乘

1 long long bmul(long long a,long long b,long long m) 
2 {
3     long long tmp=((long double)a/m*b+1e-7);
4     long long ret=a*b-tmp*m;
5     return ret<0?ret+m:ret;
6 }

59.一个标记操作

异或一个随机值

60.权值线段树

要用右移操作取mid,因为当l=-1,r=0时,(l+r)/2=-1/2=0,而右移的话-1右移完还是-1,这样才不会无限递归下去

61.关于C++的模运算(?)

在C++中,模运算结果的符号和被除数的符号一致

62.树形DP联通块

一般做的时候后是默认强制选根的

63.调试

可以不断删优化,经常的情况是优化挂了=。=

64.一种构造题

要你去叉人的那种构造题一定要限制一个条件,使得在这个条件下能推出要叉的代码的式子

65.感觉不可做的问题不要扔

离线/莫队/差分/统计贡献/分块/记搜/容斥/二分/枚举/随机化/倒着做/启发式合并/拆解问题 一下,也许还能抢救

66.决策单调性

决策单调性并不代表代价函数是凸的或者递增的

67.计数DP的一个套路

枚举某个属性最大是几,然后处理缩小一级的问题,可以保证不重复计数

68.树上统计的一个套路

联通块大小的乘积可以转化为从每块中选一个点的方案数

69.权值线段树

注意是不是该开long long

70.线段树

如果是奇怪操作一定要考虑加上限制的暴力是不是就是对的

71.统计贡献

如果状态可以步步变化,可以考虑组合数

72.瞪眼

当状态维数较高的时候可以先固定几维再打表

73.unordered_map

注意它的内部是哈希表实现的,所以空间比map要大

74.priority_queue

定义了比较函数也不能直接在外面改影响比较函数的变量,不然堆会乱

(当然可以把跟更改的变量有关的全删了重新插)

75.线段树下放标记

记得取地址,wsl

76.推递推式的时候

可以尝试使用高中数学知识(雾

77.组合数

注意超过模数时上Lucas定理

78.一个套路

答案与顺序无关

79.LCT求LCA

Access(x)再Access(y),最后一个点就是lca

80.计数去重的套路

钦定和第一个部分有关的信息

81.NTT

对一个数组不断NTT会有一些神奇的现象发生

82.多项式卷积的一个思路

可以尝试寻找子结构

83.map

只要访问过就能count到

84.树状数组

可以反着维护后缀和

85.多项式求逆和开根

注意清数组,用清数组,还有Prework的大小

86.动态DP

写的时候注意分清=和+=

inf.原来有的,考完NOIP2018删了,我真tm是能毒奶

NOIP2018考了三道原题(原来大意是提醒自己要注重思考,然后我***奶了一句“正式考试不可能考原题”)

 

转载于:https://www.cnblogs.com/ydnhaha/p/9670472.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值