错误录——未完待续

1 、自信的不看样例说明,自信的不手推一下样例,自信的认为选2个点就一定不能重复选 http://www.cnblogs.com/TheRoadToTheGold/p/6379634.html

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

2、自信的不看输出说明,自信的认为最后一行输不输出换行无所谓http://www.cnblogs.com/TheRoadToTheGold/p/6379634.html

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

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

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

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

第一行就写着Multiple test cases, process to the end of input  http://www.cnblogs.com/TheRoadToTheGold/p/6390851.html

——持续更新

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

http://www.cnblogs.com/TheRoadToTheGold/p/6477230.html 

因为变量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小时

http://www.cnblogs.com/TheRoadToTheGold/p/6513123.html

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

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

http://www.cnblogs.com/TheRoadToTheGold/p/6514866.html

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

应该是至少n+2 http://www.cnblogs.com/TheRoadToTheGold/p/6753325.html

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条边

http://www.cnblogs.com/TheRoadToTheGold/p/7403178.html

 

15、

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

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

否则会无输出

http://www.cnblogs.com/TheRoadToTheGold/p/7412706.html

 

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;
http://www.cnblogs.com/TheRoadToTheGold/p/7412142.html


17、乘法比除法快,所以在dfs剪枝时,除法转化为乘法,但忽略了整数类型上限

http://www.cnblogs.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、涉及到多次循环操作,两个数组轮换

http://www.cnblogs.com/TheRoadToTheGold/p/7768498.html

 

25 http://www.cnblogs.com/TheRoadToTheGold/p/7768498.html

 

错误的二分左右端点方法(以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 http://www.cnblogs.com/TheRoadToTheGold/p/7768498.html

 

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]

http://www.cnblogs.com/TheRoadToTheGold/p/7898967.html

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

http://www.cnblogs.com/TheRoadToTheGold/p/7923005.html

 

29 http://www.cnblogs.com/TheRoadToTheGold/p/8467282.html

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

如果头尾指针是左闭右闭

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

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

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

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

 

30、

int j

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

posted @ 2017-02-28 22:09  TRTTG  阅读(396)  评论(0编辑  收藏  举报