trick点
1、问题里有取模操作的时候,最后输出(ans+mod)%mod
2、涉及到输出实数0的时候要特判输出的会不是是-0.000000(因为0.00乘一个负的浮点数结果是-0.000000,乘一个正的浮点数结果是0.000000)
3、遇见问题中有|x-c|,min(x,c-x),max(x,c-x)的时候,考虑分类讨论其贡献,一般一个位置都答案的贡献只会分成两段,这个分界线可能是常数,也有可能是一个式子。如果是式子的时候,要尤其注意:比如k<=f(x)时,贡献是a,k>f(x)时,贡献是b,那么f(x)在变动的时候,要考虑f(x)<0,f(x)>n的情况,这时候一般都是和下界取max,和上界取min,要让k有意义。
4、概率dp的时候,有概率和期望两种,尽可能使用概率去做,用期望做的话,加的权值有可能会出错,期望dp加一个权值时候,不能直接加,要乘上这个权值的发生概率
即f[u]表示概率,g[u]表示期望
那么f[u]=Σf[v]
但g[u]=Σg[v] + value[u] * f[u] (注意千万不能写成g[u]=Σg[v] + value[u] )
其实如果要求期望,可以dp它的概率,最后求期望
即E=Σf(i)*value[i] = Σg(i)
5、比如求dp[i]=min(dp[j]*a[j]*b[j]),最后结果对mod取模,不能写成dp[i]=min(dp[j]*a[j]%mod*b[j]%mod),因为中间有个取min操作,取min操作是不支持的取模的
6、Trie树边对应的信息放在下面的点上;Trie树也可以存数字,也是个有序的数据结构,要注意多个数字重复的情况,可能走到叶子节点的路程上对ans没有贡献,要最后判断叠加;Trie树可以支持整体异或,具体的就是询问的时候如果遇到某位是1,那么就swap(lchild,rchild)就行了
7、要注意无意义的清零和无意义的反复求字符串长度,这样可能会带来超时
8、分解质因数最后留下的可能不是1,是个大素数
9、区间筛的时候要注意r-l<=1e6,那么其实中间有1e6+1个数
10、将double类型的数字以int输出时:printf("%d",(int)(number+0.5));
11、遇见多组数据一定要记得检查有没有清空干净(如Trie树自动机什么),有时候甚至会导致MLE!!!
12、数组开小可能会导致TLE
13、cdq分治排序的之后注意坐标一样时,要比较操作类型,一般的修改操作在查询操作前面
14、遇见分组计数的问题记得考虑meet in middle
15、多次FFT、NTT的时候要记得将A[n..len]清0
16、二分分数区间$[\frac {a} {b},\frac {c} {d}]$的时候,$mid=\frac {a+c} {b+d}$
17、当遇到要计算$\frac {p_1+p_2+p_3+...+p_n} {q}$的值的时候,保证结果不超过$2^63$,分母q不超过$2^30$,这样计算就有个问题,就是分子相加的时候会爆long long,有个技巧就是$ans=\lfloor \frac{ans}{q}\rfloor *q+ans \, mod \, q$所以可以记录整除数和余数,这样就不会超过longlong了
18、若干个0和若干个1(1存在)能异或出的2^n个结果中,一定有一半是1,一半是0
19、计算几何一直WA也许不是精度的问题,而是因为小数据边界没有特判
20、==、!=的优先级要高于位运算(包括^),所以位运算要打括号
21、莫队算法的时候记得先移r再移l,否则可能会有的数字出现次数为负数带来数组越界
22、分层图最短路在外面把图先建好,后面直接跑最短路
23、树链剖分处理边权的时候尤其要注意,向上爬到最后,lca的点权不能要
24、处理可撤销并查集时候所用的按秩合并并查集在find的时候不能维护其它信息,其它信息必须另开一个函数get_val()用log(n)的时间求出来
25、当数据量很大的时候注意减少容器和递归的使用
26、当结果对1e9+7取模的时候,一般可以直接用int去做,但是如果数据范围是[-1e9,1e9]那就要小心了,可能会爆掉
27、一个都是整数的数列经过ufwt形成的变化中的数不一定都是整数(因为有/2操作),可以认为并没有一个整数数列对应的fwt的结果是这个数列,要注意。但是如果是fwt(a),fwt(b),a=a*b,ufwt(a),那样是没问题,因为一定有解。
28、数组开大大容易超时,能滚动数组就滚动数组,比如决策单调性优化dp
29、在区间赋值的线段树里,注意tag=0的意思是给区间全部赋为0,而不是没有标记
30、取整数部分用floor,而不要用(int)
trick点的更多相关文章
- EEG preprocessing - A Trick Before Doing ICA
EEGLab maillist My ICs don't have high power in low frequency is b/c I do a small trick here. before ...
- Trick蠕虫病毒来袭!幕后主使竟是一名高中生“黑客”!
黑客一直是美国电影中的重要元素,很多经典大片中都有黑客的身影,如战争游戏.黑客帝国等.电影中黑客总是神通广大.行侠仗义,<战争游戏>中的年轻黑客大卫•莱特曼利用黑客技术避免引爆核武器,&l ...
- csuoj 1392: Number Trick
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1392 1392: Number Trick Time Limit: 1 Sec Memory L ...
- 关于C语言的一些trick
很多东西已经记不起来了,想到一点写一点,碰到一点写一点,慢慢累积. 关于# #在宏定义中用于替换传入变量的字符,例如: #define whole_operation(n) do { printf( ...
- 让gcc支持成员函数模板的trick
让gcc支持成员函数模板的trick 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公用协议 gcc 4.7.3 不支持成员 ...
- [HIHO1062] 最近公共祖先·一(lca, 并查集, 二分, 神trick)
题目链接:http://hihocoder.com/problemset/problem/1062 题意裸,有个trick,导致我当年做的时候一直在WA... 那就是出现这种没有出现在关系中,但是依然 ...
- hdu 1057 (simulation, use sentinel to avoid boudary testing, use swap trick to avoid extra copy.) 分类: hdoj 2015-06-19 11:58 25人阅读 评论(0) 收藏
use sentinel to avoid boudary testing, use swap trick to avoid extra copy. original version #include ...
- Hashing Trick
本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 在机器学习领域, kernel trick是一种非常有效的比较两个样本(对象)的方法. 给定两 ...
- HDU 4930 Fighting the Landlords --多Trick,较复杂模拟
题意:两个人A和B在打牌,只有题目给出的几种牌能出若A第一次出牌B压不住或者A一次就把牌出完了,那么A赢,输出Yes,否则若A牌没出完而且被B压住了,那么A输,输出No. 解法:知道规则,看清题目,搞 ...
- POJ 3207 Ikki's Story IV - Panda's Trick
Ikki's Story IV - Panda's Trick Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 7296 ...
随机推荐
- 字符串:HDU5371-Hotaru's problem(manacher 的应用)
Hotaru's problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Pr ...
- Latex:插入伪代码
*本文属于转载. *转载链接:https://blog.csdn.net/lwb102063/article/details/53046265 目录 clrscode algorithm algori ...
- JS中如何操作数组
背景:随笔中所应用到的代码来自于上一篇随笔,MVC&JQuery如何根据List动态生成表格,部分代码不再重复. 代码如下: $("#btnTan").click(func ...
- 在spring boot中使用webSocket组件(二)
该篇演示如何使用websocket创建一对一的聊天室,废话不多说,我们马上开始! 一.首先先创建前端页面,代码如下图所示: 1.login.html <!DOCTYPE html> < ...
- Hive学习笔记(四)-- hive的桶表
桶表抽样查询 查看hdfs上对应的文件内容 一个两个桶,第一个桶和第三个桶的数据 task = 4 4 / 2 = 2,一共是两个桶 第1个桶,第1+2个桶
- luogu3381 【模板】最小费用最大流
每次选代价最小的流增广 #include <iostream> #include <cstring> #include <cstdio> #include < ...
- python中用exit退出程序
在python中运行一段代码,如果在某处已经完成整次任务,可以用exit退出整个运行.并且还可以在exit()的括号里加入自己退出程序打印说明.不过注意在py3中要加单引号或双引号哦!
- python学习-- 在for循环中还有很多有用的东西,如下:
变量 描述 forloop.counter 索引从 1 开始算 forloop.counter0 索引从 0 开始算 forloop.revcounter 索引从最大长度到 1 forloop.rev ...
- Vue样式绑定、事件绑定
1.样式绑定 1.1class类标签绑定 <p :class="对象"> <p :class="数组"> <p :class=&q ...
- 【bzoj3307】雨天的尾巴 权值线段树合并
题目描述 N个点,形成一个树状结构.有M次发放,每次选择两个点x,y,对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成所有发放后,每个点存放最多的是哪种物品. 输入 第一行数字N,M接下来 ...