荆门市网站建设_网站建设公司_Java_seo优化
2025/12/19 20:07:27
网站建设
项目流程
OI 方面
- 取模运算有可能出现负数时,需加上模数
mod。
- 用
getchar() 输入二维字符数组时,记得在读完一行再用 getchar() 吞掉 \n。
- 位运算取 \(x\) 从右数第 \(k\) 位:
(x>>(k-1))&1。
- 一行代码 GCD:
gcd(a,b){while(b^=a^=b^=a%=b);return a;} 记得特判 \(0\)。
- 一行代码快速幂:
ksm(a,b,p){ll s=1;while(b){if(b&1)s=s*a%p;a=a*a%p,b>>=1;}return s;}。
- 涉及到多个 \(10^9\) 级别的数相加时,注意
long long。
- 图论题 \(n\) 是点数,\(m\) 是边数,\(T\) 是数据组数,\(Q\) 是询问次数,不要再把点和边写反了,读入完 \(n,m\) 就直接
for(i=1;i<=m;i++)。
- 多个点坐标 \(P(x_P,y_P)\),\(Q(x_Q,y_Q)\) 函数传参就写成
xp,yp,xq,yq 就好了,不要写成 xp,xq,yp,yq。按照这种写法,如果传参不是 x,y 交替出现那么大概率是写错了。
- 二维前缀和建立
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];,求和 s[xb][yb]-s[xa-1][yb]-s[xb][ya-1]+s[xa-1][xb-1];
- \(n\) 行 \(m\) 列的二维数组,如果写成
a[m][n] / a[j][i] / a[y][x] 等等,大概率就是写错了。
- 随机数:
mt19937 rng('Neuvillette is a lovely sea otter');/mt19937 rng('I'm Neuvillette and Alhaitham's chuzi');(种子是乱写的) 设置范围为 \([l,r]\):uniform_int_distribution<int> dist(l,r); 产生随机数 dist(rng),还不能过就多换几个种子。遇到构造类题目或者分组类题目(比如 B3800 P2503 P2577 这一类题目随机出奇迹)
- 题目有无解情况的要记得判无解
if(ans==inf) cout<<"no";,记得 return 0;
- 把多个部分分的代码拼起来时一定要在特判后退出程序
return 0;!不要让 NOIP 2023 的惨案再出现。
- 线段树输入完原数列之后就建树建树建树
build(1,1,n); !并查集也给我初始化!
- 线段树传参的时候注意不要把
l 写成 1,要不然没有语法高亮估计找两年半都找不出来。
- \(n\) 叉树第 \(k\) 层结点数:\(n^{k-1}\),前 \(k\) 层结点数总和:\(n^k-1\)
- 禁止在
int*int 时不开 long long
- 开了个
mx[i] 一样的东西存放某个最大DP 值这样的数组,那就不要一遍更新 DP 一遍更新 mx,因为 DP 可能在后面的位会被更新导致答案不正确:P4310 WA AC
- 在做括号的串串题时,注意如果遇到了右括号失配,则要清空栈:P1944 最长括号匹配
- 遇到