【坑】掉过的坑们(希望我的错误可以给读者以借鉴~)

2015-01-02 21:18

  【BZOJ】【2595】【WC2008】游览计划

  o(︶︿︶)o 唉我就是太水了,离散化写跪了,x*1e5+y*1e4+k,但是这题里我x和y的范围是[1,10]所以在y==10的时候会出错!!

2015年1月15日 21:58:56

  Windows下换行是\n,Linux下是\r\n,所以read函数中第一个while ( ch<'0' && ch>'9')这个地方写成&&(实际应该是 || ),在Windows下不会出错(虽然没执行这个while,但每次刚好一个废字符被浪费掉,所以不会出事)但是在Linux下两个废字符就会导致RE……

  UPD:2015年4月28日 19:07:09(我是傻逼,前面的东西不要看)

  关于换行的知识:http://blog.csdn.net/wjcquking/article/details/6634504

回车符号和换行符号产生背景
 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
     于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
      后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“ <回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号
windows创建的文件是 \n\r结束的, 而linux,mac这种unix类系统是\n结束的。
所以unix的文本到windows会出现换行丢失(ultraedit这种软件可以正确识别); 而反过来就会出现^M的符号了
Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系统下输入的换行符在UNIX/Linux下不会显示为“换行”,而是显示为 ^M 这个符号(这是Linux等系统下规定的特殊标记,占一个字符大小,不是 ^ 和 M 的组合,打印不出来的)。Linux下很多文本编辑器(命令行)会在显示这个标记之后,补上一个自己的换行符,以避免内容混乱(只是用于显示,补充的换行符不会写入文件,有专门的命令将Windows换行符替换为Linux换行符)。 UNIX/Linux系统下的换行符在Windows系统的文本编辑器中会被忽略,整个文本会乱成一团。
 
windows换行是\r\n,十六进制数值是:0D0A。
LINUX换行是\n,十六进制数值是:0A
所以在linux保存的文件在windows上用记事本看的话会出现黑点,我们可以在LINUX下用命令把linux的文件格式转换成win格式的。
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式。
 
linux下删除windows换行符^M
OJ判题时发现一个问题:用%c读入的代码都会报wa。后来发现跟scanf有关。在linux下使用%c会读到\n和\r两个字符。所以需要将^M(也就是\r)字符删掉
删除方法不少。找了一个比较简单的。
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符
unix   下换行符只有:   \r 
Dos   下换行符有:\r\n 
具体的,   \r的ascii   码是:14 
                 \n的ascii   码是:10
博客引用

2015年1月21日 13:30:46

  一棵N个点的树,存边的时候开数组不能开N的,因为存的时候肯定是存双向边,必须开2N!!!!

2015年1月24日 09时33分42秒

  最小树形图:写错的地方:一开始找最小前驱边的时候 把 “!inc[i]"的叹号丢了……

2015年1月28日 22:14:38

  bfs+并查集 http://www.cnblogs.com/Tunix/p/4242931.html

2015年1月31日 11:58:43

  高斯消元解Xor方程组

  string转bitset,顺序是刚好完全反过来的!!!bitset与string

2015年1月31日 17:31:41

  高斯消元解Xor方程组   http://www.cnblogs.com/Tunix/p/4264378.html

  跟上午出现的错误类似……也是bitset的问题汗-_-b 这次是从long long转bitset,直接赋值的,但是最后几位精度丢失了……只能一位一位地转QAQ  so sad

2015年2月1日 22:47:37

  建虚树的时候死循环了!!没有弹栈……果然光抄代码没有理解下来还是不行啊……BZOJ2286消耗战

2015年2月6日 19:13:11

  用生成函数+FFT算方案数的时候,FFT的范围不是与N相关的!!而是与w[i]相关!!BZOJ 3771 Triple

2015年2月14日 22:09:59

  TAT shen me gui……BC Round #30 T1 “离散化”的时候,由于a[i]可能为0,所以用a[i]!=a[i-1]的方法是不对的……应该写成a[i]!=a[i-1] || i==1 QAQ下次再也不敢偷懒了

2015年3月2日 17:38:07

  CF 295 div2

  C题由于#include了<cmath>,而我函数声明的是pow(LL a,LL b)但调用的时候 【没!有!把!n!的!数据类型!!改成!long long !!!】所以触发了自动类型转换……就调用成cmath库里的了!!!

2015年3月4日12:06:39

  HDOJ 1964

  两个左插头的时候要向右找,遇到左插头计数器+1,遇到右插头计数器-1。

  而两个右插头的时候向左找,过程刚好相反……但我写反了啊!!!仍旧是左+右-了……so sad……傻逼错误毁一生啊!

2015-03-04 21:43:13

  HDOJ 3377

  转移时不能随意修改sum值!!因为一个状态两次转移的话,第一次修改了sum值,第二次的转移就会出错!!  

  QAQ怎么我插头DP这么能出错呢……

2015-03-14 18:36:21

  BZOJ 2127

  这道题我遇到了一个神奇的情况……我跟Hzwer都是写的Dinic,但是我跑下来就有15000ms+,他的程序只有1400ms+,速度是我的十倍啊……

  后来我各种修改然后发现:我加了当前弧优化!这个题目中实际上每个点的边数并不多,所以当前弧优化并不明显,但是每次重建残量网络的时候都要重新初始化一遍当前弧数组cur,这带来了大量的时间浪费……所以就华丽丽地……还好没超时。

  所以对于稀疏图还是不要用当前弧优化了= =尤其是在增广次数比较多的时候……

2015年4月4日 21:21:11

  【BZOJ】【2502】清理雪道

  上下界网络流,每次跑网络流是从虚拟源0往出跑,而不是原来的源S……

2015年4月7日 20:44:50

  【BZOJ】【2946】【POI2000】公共串

  求最长公共子串,不同的字符串之间要用不同的特殊字符隔开!!!要不然就会把特殊字符也看作是公共的了!!!

2015年4月9日 09:54:32

  【BZOJ】【1072】【SCOI2007】排列perm

  TAT直接统计0~9各有多少个,枚举数字就行了……因为是直接枚举的数字,而不是枚举用了s中的哪一位,所以是不用去重的!(我一开始写的是10!枚举排列……所以还要相同方案去重……sigh)

  还有就是记得删掉调试信息……sigh

2015-04-10 12:24:02

  【BZOJ】【1251】序列终结者

  这题我WA了的原因是:在Push_up的时候,当前子树的max我是直接取的L、R和v[x]的最大值,但是如果没有左/右儿子,默认是会访问0号结点的mx值,而这个值没有初始化成-INF,而是0,所以就会导致所有负max值全部变为0……

2015-04-10 18:36:25

【BZOJ】【1014】【JLOI2008】火星人prefix

  这次我终于发现了一个之前以为不太重要的点……让我WA了两次= =!!

  就是Splay在执行完序列插入的时候,一定要立即Push_up(c[root][1]); Push_up(root);不能想着别的操作随便splay一下自己就维护了……因为size域是会受到影响的!!

2015-04-18 23:38:27

【BZOJ】【3653】谈笑风生

调了很久的一个地方……

 1 F(i,1,n) update(root[i]=root[i-1],0,n,dep[a[i]],sz[a[i]]-1); 

这一句中我一开始写成.......dep[a[x]],sz[a[x]]-1了!!

因为在dfs的过程中我是用x这个变量来表示某个节点的……然后这里顺着思路就写下来了……

你可能会说,为什么没有CE呢?那是因为我在读入边的时候声明了两个变量x,y……看代码上下文就知道了TAT

2015-04-26 22:59:06

【BZOJ】【3675】【APIO2014】序列分割

由于分母可能为0,也可能为负数,所以斜率优化时不等号的方向一定要注意!!!

2015年5月1日 09:10:55

【tyvj五月有奖赛 暨Loi 55 Round #1】

  线段树每次query的时候ans要清零的啊!!!一句话爆零系列QAQ

2015年5月2日 13:21:54

【BZOJ】【1178】【APIO2009】convention会议中心

  按字典序从小到大依次枚举,在不改变答案的情况下,能加进来就加。

  我想错的地方是:如果第 i 个可以在某个最优解的情况下就加入它(即判断[1,n])。但这样最后得到的可能并不是一组合法解。

 

2015-05-05 22:38:38

【BZOJ】【2750】【HAOI2012】Road

  跪了,pq应该把 < 定义为a.d>b.d……唉真是傻逼了……这样才是小根堆啊QAQ

2015年5月8日 23:05:26

【BZOJ】【4052】【CERC2013】Magical GCD

Orz lct1999,我WA了的原因:

  1.每组数据还是需要清一下tot数组的,不能光靠加新点的时候清tot[i&1],第一个点应该把tot[0]也清掉。

  2.每次是更新这一段的gcd,所以是要记录gcd的,不能光记个端点,每次求两个端点的gcd……这明显不对啊好吗= =

2015年5月13日 7:02:10

【POJ】【2187】Beauty Contest

  好像必须写成循环访问?我在原数组后面复制了一遍点,结果挂了……改成cur=cur%n+1就过了QAQ

  //其实是不是数组没开够所以复制的方法就爆了?

  其实是我点保存在p[1~n]里面,所以复制的时候不能写p[i+n-1]=p[i]; 而应该是p[i+n]=p[i];……QAQ我是傻逼

2015年5月13日 20:34:47

【BZOJ】【3083】遥远的国度

  WA了几发:这题中点权的范围是0~2147483647(P.S.我一开始还以为得开unsigned int,因为写的是$\leq2^{31}$……)所以不能认为tag=0就是没有标记,而应该用-1作为空标记……

2015年5月14日 21:19:27

  【BZOJ】【2752】【HAOI2012】高速公路(Road)

  WA:在upd的时候,由于运算时出现了l*r这个不和谐的项……所以传进去的 l 和 r 得是long long

2015年5月19日 10:26:06

  CTSC 2015 D1T1

  进行dij+heap求最短路的时候,如果半中间break了出来(比如当num==n时),那么一定要加清空队列这个操作

2015年5月19日 21:04:15

  【BZOJ】【3053】The Closest M Points

  多组数据的题目,KD-Tree一定要记得清空 l 和 r ……要不然叶子节点会有一些奇怪的问题……

2015年5月20日 11:43:50

【模拟试题2】【20150520】

  给定一些目录&文件,让按给定格式输出一个文件列表

  其实直接排序一下,就可以满足字典序的条件了,顺便还能使在同一目录下的文件顺序连在一起,然后模拟一下“dfs”的过程即可:

    记录当前在第几层目录,以及当前的目录名称,然后比较一下,如果相同则输出“|    | ....  |",否则更新当前目录,并清空后面的目录。

    唉我就是没加清空后面目录的操作,导致【root/A/abc 和root/B/abc】的两个abc当成是一个目录了……挂了20分……sad。。。

  其实蛮好写的……

2015年5月20日 21:08:48

【BZOJ】【2626】JZPFAR

  感觉KD-Tree容易出错的是0号点= =边界情况需要仔细处理……根据题意而定的,比如这题就必须将0号点的距离设置成最近……比如-2……(因为我一开始向堆里加的占位点的距离是-1

2015年5月22日 08:48:09

【BZOJ】【4066】简单题(强制在线)

  TLE:rebuild的时候,我没清当前点的min和max就直接build子树&Push_up(o)了……活该跪……

2015年5月23日 22:23:24

【BestCoder】【Round#42】

  B 以后这种空间复杂度为线性的题目……在允许的情况下还是尽量开大点好了……

UPD:2015年5月25日 07:50:50

  突然想清楚为什么挂了,因为离散化以后,权值的范围是1~2*n,而不是1~n(因为有查询的n个数)所以只开10W的数组肯定是不行的……sad

 

2015-06-07 19:04:46

【BZOJ】【2435】【NOI2011】道路修建

  本来以为是一道傻逼题,然而跪了好久……一直RE……

  直接dfs就好了……x->y val=c  :  ans+=abs(n-size[y]-size[y])*c;

  然而为啥会一直RE呢?

  

  后来改成dfs返回当前节点的size就过了……过了……

  100W的节点难道linux下也会爆栈嘛= =?sad

2015-06-08 09:35:59

【BZOJ】【2434】【NOI2011】阿狸的打字机

TLE:一开始依旧写的以前的AC模板……其实那个是Trie图的,因为要出边补全,所以无论是否有这条出边都要找一遍fail,而这题只是一个AC自动机,不需要出边补全,所以可以大量减少找fail的复杂度……就轻松过了……

2015年6月10日 22:52:40

  【UOJ Round #8】

  这题我TLE了好久……

  重点是题解里说的:先判断右子树,再判断左子树!!!(就像KD-Tree的时候,要先像估价值较大的那一侧走啊!我怎么给忘了……sad

2015年6月23日 21:19:34

  【ContestHunter】【弱省胡策】【Round8】

  这里我处理斜率的时候少考虑了一个地方:我在插入凸包中插入一个新点时(p[x]=y),是删除它左右两个点对应直线的斜率,再加入两个新的斜率,然后对 凸包进行调整。然而如果p[x]这个位置原来就有一个点的话!就应该是删掉原来的点与两边的点之间线段的斜率,再加入新的斜率,然后对凸包进行调整。

  另外就是用KDTree写的时候……Insert进去的节点忘记赋值了

2015年6月24日 09:16:10

  【UOJ Easy Round #1】

  动态维护并查集的连通关系,断开谋条边后,从fa[x]到root的size都要减去size[x],但是一定要小心root是否真的被修改了!如果是while(i!=fa[i])进行修改,就应该修改每个 i 的fa[i],如果是修改 i 就不会修改root!

posted @ 2015-01-15 22:02  Tunix  阅读(622)  评论(5编辑  收藏  举报