1 、自信的不看样例说明,自信的不手推一下样例,自信的认为选2个点就一定不能重复选

然而样例说明举例子举得清清楚楚有重复

2、自信的不看输出说明,自信的认为最后一行输不输出换行无所谓

然而输出说明清清楚楚写着最后一行不输出空格

3、读入优化写成x=1,还去问学长为啥x=1之后会一直输入不停止

学长:你输入的n值变了当然会让你继续输入。。。。。。

4、知道看输入说明了,不认真看,一周内第三个关于读题的错误

第一行就写着Multiple test cases, process to the end of input

——持续更新

5、多组数据,知道数组要清0,漏了变量也要清0

因为变量top没清0,一个下午荒废了

6、洛谷 p3615 ​​https://www.luogu.org/problem/show?pid=3615​

输出一个整数,表示答案。如果无论怎么样都没办法N分钟之内达成,请输出-1

题目不会做怎么办,直接输出-1啊,20分

7、下午做了6到网络流,6次因开小空间RE

写代码之前先算好边数

8、网络流根据题目描述统计边、再将统计出的边转图

2次使用邻接链表,tot,front,next混淆,卡了2小时

9、费用流跑最大费用,dis数组初始化为-1

应该初始化为-inf,因为反向弧的费用为负,未访问过的点不置为负无穷无法完成回流

10、长为n的字符串读入后移一位,相应的数组开到n+1

应该是至少n+2

11、二维树状数组


void change(int a,int b,int w)

{

  for(;a<=k+1;a+=lowbit(a))

    for(;b<=m;b+=lowbit(b))

  c[a][b]=max(c[a][b],w);

}

应该是

​void​​​​change(​​​​int​​​​a,​​​​int​​​​b,​​​​int​​​​w)​​ ​​{​​ ​​ ​​​​for​​​​(​​​​int​​​​i=a;i<=k+1;i+=lowbit(i)) ​​ ​​ ​​​​for​​​​(​​​​int​​​​j=b;j<=m;j+=lowbit(j))​​ ​​ ​​​​c[i][j]=max(c[i][j],w);​​ ​​}​​ 12、输出格式:每组数据之间空一 13、题目没有说忽略行末空格

14、一个点可以八方向扩展,有一些荷叶,向第一次跳到水里的位置连边,每个点可以连不止8条边


15、

在预处理答案O(1)出结果题中

如果很容易判断出0、1等数不合法或答案为0,那么也不能忽略,根据题意赋值为0等其他数

否则会无输出


16、

dp中有一维表示模几的结果时,

dp[i][j][k] 前i位二进制 有j个1 值模m等于k 的数的个数

那么预处理

dp[1][0][0]=1;
dp[1][1][1]=1;是错误的应该为
dp[1][0][0%m]=1;
dp[1][1][1%m]=1;

17、乘法比除法快,所以在dfs剪枝时,除法转化为乘法,但忽略了整数类型上限
http://www.com/TheRoadToTheGold/p/7436234.html
18、无向图tarjan if(to[i]==pre) continue; 其中pre 指父节点,错误!! 若 a--b b--a 从a跑向b之后可以从b再跑回a 正确的方式 if(i==(pre^1)) continue; 其中pre表示边的编号,边从2开始存储
19、bfs不判重bfs不判重bfs不判重bfs不判重bfs不判重
20 vector 是从0开始用的
21 n个点n条边是环套树森林,不是环
22区间加,求区间第k大,k<=10

将前10大全部放到一个结构体里,query时直接返回结构体

合并的时候 重载的 加号 运算符

所以 标记 不能放到 结构体里

下传标记的时候,只传前10大,但应先判断是否具有第i大


23、多次声明STL 极慢


24、涉及到多次循环操作,两个数组轮换


25

错误的二分左右端点方法(以and为例):


即每次判断是否同时满足>=a <=b


这样不满足单调性


while(l<=r)

{

  。。。。。。

  if(res>=a && res<=b) al=mid,r=mid-1;

  else l=mid+1;

}


while(l<=r)

{

  。。。。。。

  if(res>=a && res<=b) ar=mid,l=mid+1;

  else r=mid-1;

}


比如在二分右端点时,算出mid >b


此时应该右移mid 使结果变小


但在上面代码中不满足 if 条件,mid 左移


正确的二分方式:


while(l<=r)

{

  。。。。。。

  if(res<=b) al=mid,r=mid-1;

  else l=mid+1;

}


while(l<=r)

{

  。。。。。。

  if(res>=a) ar=mid,l=mid+1;

  else r=mid-1;

}


即注意二分的单调性


26


st 表 倍增预处理 数组越界


27、合并连续的相同的一段

for(int i=1;i<=n;++i)

{

  if(a[i]!=a[i-1] || i==1)

  {

    col[++cnt]=a[i];

    num[cnt]=1;

  }

  else num[cnt]++;

}

要特判i==1,不然a[1]可能会等于a[0]

28、三分50次,WA了两个点,三分100次AC

29

多个可持久化单调队列,头尾指针相连

如果头尾指针是左闭右闭

如果队列为空,tail<head,导致 后一个队列的尾指针=前一个队列的头指针

这样尾指针替换更改,记录的替换位置为tail,即前一个队列的head

退出dfs替换回去 错误的替换了前一个队列的head

头尾指针左闭右开就不会有这个问题


30、

int j

x &(1<<j),这样得到的j是一个int,不是bool!!!


作者:xxy