2015-01-02 21:18
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(我是傻逼,前面的东西不要看)
关于换行的知识:
回车符号和换行符号产生背景 关于“回车”(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+并查集
2015年1月31日 11:58:43
高斯消元解Xor方程组
string转bitset,顺序是刚好完全反过来的!!!bitset与string
2015年1月31日 17:31:41
高斯消元解Xor方程组
跟上午出现的错误类似……也是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
C题由于#include了<cmath>,而我函数声明的是pow(LL a,LL b)但调用的时候 【没!有!把!n!的!数据类型!!改成!long long !!!】所以触发了自动类型转换……就调用成cmath库里的了!!!
2015年3月4日12:06:39
两个左插头的时候要向右找,遇到左插头计数器+1,遇到右插头计数器-1。
而两个右插头的时候向左找,过程刚好相反……但我写反了啊!!!仍旧是左+右-了……so sad……傻逼错误毁一生啊!
2015-03-04 21:43:13
转移时不能随意修改sum值!!因为一个状态两次转移的话,第一次修改了sum值,第二次的转移就会出错!!
QAQ怎么我插头DP这么能出错呢……
2015-03-14 18:36:21
这道题我遇到了一个神奇的情况……我跟Hzwer都是写的Dinic,但是我跑下来就有15000ms+,他的程序只有1400ms+,速度是我的十倍啊……
后来我各种修改然后发现:我加了当前弧优化!这个题目中实际上每个点的边数并不多,所以当前弧优化并不明显,但是每次重建残量网络的时候都要重新初始化一遍当前弧数组cur,这带来了大量的时间浪费……所以就华丽丽地……还好没超时。
所以对于稀疏图还是不要用当前弧优化了= =尤其是在增广次数比较多的时候……
2015年4月4日 21:21:11
上下界网络流,每次跑网络流是从虚拟源0往出跑,而不是原来的源S……
2015年4月7日 20:44:50
求最长公共子串,不同的字符串之间要用不同的特殊字符隔开!!!要不然就会把特殊字符也看作是公共的了!!!
2015年4月9日 09:54:32
TAT直接统计0~9各有多少个,枚举数字就行了……因为是直接枚举的数字,而不是枚举用了s中的哪一位,所以是不用去重的!(我一开始写的是10!枚举排列……所以还要相同方案去重……sigh)
还有就是记得删掉调试信息……sigh
2015-04-10 12:24:02
这题我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
调了很久的一个地方……
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
由于分母可能为0,也可能为负数,所以斜率优化时不等号的方向一定要注意!!!
2015年5月1日 09:10:55
线段树每次query的时候ans要清零的啊!!!一句话爆零系列QAQ
2015年5月2日 13:21:54
【BZOJ】【1178】【APIO2009】convention会议中心
按字典序从小到大依次枚举,在不改变答案的情况下,能加进来就加。
我想错的地方是:如果第 i 个可以在某个最优解的情况下就加入它(即判断[1,n])。但这样最后得到的可能并不是一组合法解。
2015-05-05 22:38:38
跪了,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
好像必须写成循环访问?我在原数组后面复制了一遍点,结果挂了……改成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
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
给定一些目录&文件,让按给定格式输出一个文件列表
其实直接排序一下,就可以满足字典序的条件了,顺便还能使在同一目录下的文件顺序连在一起,然后模拟一下“dfs”的过程即可:
记录当前在第几层目录,以及当前的目录名称,然后比较一下,如果相同则输出“| | .... |",否则更新当前目录,并清空后面的目录。
唉我就是没加清空后面目录的操作,导致【root/A/abc 和root/B/abc】的两个abc当成是一个目录了……挂了20分……sad。。。
其实蛮好写的……
2015年5月20日 21:08:48
感觉KD-Tree容易出错的是0号点= =边界情况需要仔细处理……根据题意而定的,比如这题就必须将0号点的距离设置成最近……比如-2……(因为我一开始向堆里加的占位点的距离是-1
2015年5月22日 08:48:09
TLE:rebuild的时候,我没清当前点的min和max就直接build子树&Push_up(o)了……活该跪……
2015年5月23日 22:23:24
B 以后这种空间复杂度为线性的题目……在允许的情况下还是尽量开大点好了……
UPD:2015年5月25日 07:50:50
突然想清楚为什么挂了,因为离散化以后,权值的范围是1~2*n,而不是1~n(因为有查询的n个数)所以只开10W的数组肯定是不行的……sad
2015-06-07 19:04:46
本来以为是一道傻逼题,然而跪了好久……一直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
TLE:一开始依旧写的以前的AC模板……其实那个是Trie图的,因为要出边补全,所以无论是否有这条出边都要找一遍fail,而这题只是一个AC自动机,不需要出边补全,所以可以大量减少找fail的复杂度……就轻松过了……
2015年6月10日 22:52:40
这题我TLE了好久……
重点是题解里说的:先判断右子树,再判断左子树!!!(就像KD-Tree的时候,要先像估价值较大的那一侧走啊!我怎么给忘了……sad
2015年6月23日 21:19:34
这里我处理斜率的时候少考虑了一个地方:我在插入凸包中插入一个新点时(p[x]=y),是删除它左右两个点对应直线的斜率,再加入两个新的斜率,然后对 凸包进行调整。然而如果p[x]这个位置原来就有一个点的话!就应该是删掉原来的点与两边的点之间线段的斜率,再加入新的斜率,然后对凸包进行调整。
另外就是用KDTree写的时候……Insert进去的节点忘记赋值了
2015年6月24日 09:16:10
动态维护并查集的连通关系,断开谋条边后,从fa[x]到root的size都要减去size[x],但是一定要小心root是否真的被修改了!如果是while(i!=fa[i])进行修改,就应该修改每个 i 的fa[i],如果是修改 i 就不会修改root!