- 博客(310)
- 资源 (30)
- 收藏
- 关注
原创 GCC damangling stack traces
GCC damangling stack tracesTons of useful info: this URL is no useful http://www.acsu.buffalo.edu/~charngda/backtrace.html BTW:I’m afraid to lose these pages,so i’ve copied these pages at hereCALL ST
2015-10-30 19:06:01
1735
原创 Smashing The Stack
Smashing The StackReferenceSmashing the stack在许多C语言的实现中,有可能通过写入程序中所声明的数组的结尾部分来破坏可执行的堆栈.践踏堆栈使用的代码可以造成程序的返回异常,从而跳到任意的地址.这导致了一些极为 险恶的数据相关漏洞(已人所共知).其变种包括堆栈垃圾化(trash the stack),堆栈乱写(scribble the stack),堆栈毁坏
2015-10-29 20:29:30
841
原创 红黑树实现
红黑书具体介绍见,里面详细介绍了旋转以及各个情况的处理很详细:http://blog.youkuaiyun.com/v_july_v/article/details/6105630实现代码:基本上是个伪stl的set,但是加了kth和rank以及lower_bound还有depth等,可以print观察树的构造,但是有些细节的边界取值没处理太好。#include<iostream>#include<strin
2015-10-22 20:06:28
976
原创 Linux 信号
Linux 信号ref信号的概念最常见的信号就是在bash下启动一个程序按Ctrl+c 产生的硬件中断。如果CPU当前正在执行当前代码,则该进程的用户空间代码暂停,CPU就从用户态切换到内核态处理中断。BTW:Ctrl-c产生的信号只能是前台进程发送,有些通过命令后+&放到后台运行,这样不必等待进程结束就可以接受新的命令,shell就可以在一个前台进程的同时跑多个后台进程,信号相对于进程的控制流程来
2015-10-14 19:56:03
2208
原创 Linux内核模块指南(第十一章===>附录)。。。翻译完。。。
第十一章 计划任务 11.1.计划任务 经常的话,我们有“内务处理”,它会在特定时间或者一直来处理内务。如果这个任务由进程完成了,我们就会把它放到crontab文件。如果任务由内核模块完成了,我们有两种可能性。第一个是把进程放到crontab文件,这个文件将会由系统调用在必要时候唤起模块,例如打开一文件。这种是非常低效的,然而--我们不用crontab运行一个新
2015-10-08 21:51:37
734
原创 Linux内核模块指南(第九章===>第十章完)。。。翻译完。。。
第九章 阻塞进程 9.1阻塞进程 当有人需要你做某些事但是你不能马上做的时候你会怎么办?如果你是一个人类并且你也被另一个人打扰,你需要做的仅仅是说一声:“现在,我很忙,走开”。但是如果你是一个内核模块,并且你被一个进程打扰了,你就另外一种可能了。你能把进程sleep直到你能服务他的时候。毕竟,进程被内核sleep后能随时醒来,(这也是单核CPU在同时处理多进程的
2015-10-06 16:51:00
830
原创 Linux内核模块指南(第六章===>第八章完)。。。翻译完。。。
第六章.使用/proc来输入 6.1 TODO:写一章关于sysfs 这个现在仅是个预留位置。最终我想要看到一个(准备写的)章节关于sysfs来替代这里。如果你对于sysfs熟悉,并且想要加入到写着一个章节,那么请联系我们(LKMPG维护者)。 第七章.谈谈设备文件 7.1谈谈设备文件(writes and IOCTLs)
2015-10-05 19:48:30
719
原创 Linux内核模块指南(第四章===>第五章完)。。。翻译完。。。
第四章,字符设备文件 4.1 字符设备驱动 4.1.1 文件操作结构 文件操作结构定义在linux/fs.h中,然后它包含函数指针的定义,可由驱动在设备上执行各种操作。结构的每一块对应到一些由驱动定义的函数地址来处理对应的操作。 例如,每个字符驱动需要定义一个函数,来从设备读操作。文件操作结构给了模块函数的地
2015-10-04 17:03:31
765
原创 Linux内核模块指南(前言===>第三章完)。。。翻译完。。。
Linux内核模块指南The Linux Kernel Module Programming GuidePeter Jay Salzman Michael Burian Ori Pomerantz Copyright © 2001 Peter Jay Salzman 2007-05-18 ver 2.6.4 Linux 内核模块编程指南是一本免费的书;你可以根据开源软件许可条例1.1下复制
2015-09-26 21:42:35
1261
原创 bzoj 1146树链剖分
我用的是此题的树链剖分方法,此题时限50S。。。。首先将树按链重新标号,然后将一段链给放到线段树中取。由于求u到v的k大值,那么我们可以对于一段链中二分查找对于某一个值小于这个值的个数有多少个,那么我们就可以知道这个值如果恰好是第k大的就是答案所求。用线段树的话可以将一段区间的值快速求出来实现就是对于线段树表示表示区间的节点,对于那一段区间我们建立一个二叉搜索树(我用的treap,用于统计
2013-11-29 14:56:53
2169
原创 hdu 4352 数位+状压
这题用状态压缩维护数列0,9哪些数字出现过 然后通过状压推lis其他的就是数位统计了这里说下我做的时候有个地方没想到。。。导致写出了后效性其实就是我用状压维护lis的是时候如果对于当前数x后面已经有数了 那么如果加入x必然不会够成lis,那么我们又要统计方案数。那么我们就可以把当前这个x换成第一个比它大的,那么相当于原序列还是lis,且递增长度不变,但是方案数却增加
2013-10-10 00:28:42
1580
原创 cf119 div1 a,b,c Permutations AlgoRace Weak Memory
a题:纸上模拟下就知道在b中找一个连续的序列对应a,那么其他后面的值都可以往后或者插入了。直接考虑b中连续的对应a的位置就好了b题:先预处理每辆车的floyd距离 然后dp【i】【j】【k】 用i辆车,从j到k的最短时间 转移是dp【i】【j】【k】=dp【i-1】【j】【kk】+dp【0】【kk】【k】 即类似floyd的转移c题:貌似很多人是二分+spfa或者
2013-10-09 12:10:14
1082
原创 hdu 3886
数位啊。。不会啊啊啊。。。dp【i】【j】【k】【l】 匹配到第i个长度(包含前导0,),j判断当前是否是开始位置(因为有前导0),k表示前一位数是什么,l表示匹配str到什么位置然后就是三个状态转移,说先是判断一直到前导0的,然后一个是转入str下一个运动趋势,在一个是保持原有的趋势。然后就没了。
2013-10-08 21:02:32
2219
原创 cf 120 c,d,e STL Non-Secret Cypher Counter Attack
c题:建立一棵树,对于每个跟节点表示一个pair然后子节点是pair或者int叶子节点必然为int 加判断一下就好了D题:可以想对于一个右边已经定下的点,只要前面有个数大于k个那么就可以统计这个所有之前的位置都是满足条件的2 3 4 5 6 1 1 1.。。。。。假设k是3 那么在第三个1的位置可以匹配的个数就是2,3,4,5,6,1都可行。首先离散化一下值
2013-10-08 20:22:40
1162
原创 Code Forces Round 201 B Lucky Common Subsequence 拓展提问
这题原题的思路就是dp+kmp在此我有个小问题。。。如果这题的virus换成多个串,那么题目就可以是不能同时满足所有的virus 和不能满足对于任意的virus之和 那么我们该怎么用ac自动机来匹配呢?我的开始想法是把多个virus建到自动机上去,然后在用同样的dp方程来匹配但是感觉有点写不动。因为对于不能同时满足所有的virus 那么我们直接把所有的virus看成一个串建自动
2013-10-07 16:27:14
1232
原创 cf202 b apple tree
这题目。。。由于每个节点都是要减去的值必然要能整除子树个数,那么必然是先对子树个数求lcm,然后找所有子节点的最小值在用当前的最小值(因为不可能多余)减去这个值%lcm 那么这个值必然能被lcm整除,即为所求对于输出 只要记录所有的和,然后减去根节点的值就好了记得在做的时候考虑0!!! 就是在比赛的时候没考虑0!wa32组了
2013-10-07 14:30:32
875
原创 ceoi2004 锯木厂选址
此题的证明和公式可搞得够呛。。我是参考了以前的几分论文一起才搞懂的PS:谁能告诉我在csdn中怎么插入公式啊。。。首先我们定义几个变量:Sw【i】=∑w【i】 表示前i棵树的的总重量Sd【i】=∑d 【i】 表示第一棵树到i棵树的距离 其中Sd【1】=0; Sd【n+1】表示第一棵树到山脚锯木厂的距离Cost【i】 表示第i棵树的位置建立一个锯木厂,然后将前i-1棵树运送到次锯
2013-10-05 16:19:45
1487
转载 HDU 4035 树上的期望
pps:这个是我转的,此题做了好久完全没思绪。。。网上大牛解释太过简单。。。此大牛写了详细的推导过程。相当好。我自己推了大概两大张纸才搞出来。一定要自己好好推,一步一步推过去。。。 对于有些地方我改了点http://blog.163.com/fengjie1314126@126/blog/static/96609996201181423525697/ps:只要你有信心把这篇文章看下
2013-10-03 13:50:52
1089
原创 cf 163e e-Government
此题是那次做了GRE的题目后,相同做法的题。先接着上次说的说说fail树吧:考虑把fail的指针反向建边,由于对于fail节点每个节点所指向的fail唯一,根据fail的原理,我们会从某个节点返回到root,所以fail的反向建边后性质就成了个fail树,这个树表示的是对于如果访问到某个子节点,那么他的祖先节点必然可以作为子串出现,那么鉴于此,我们要统计子串访问多少次,就是该节点返回到root
2013-10-02 20:04:36
1073
原创 hdu3652
此题 做了好久啊啊啊。。。看大家的做法大多是dfs 而且dp方程表示的和我最初想的不同。。。。。。试试我这种方法吧最开始的想的是 dp[ i ] [ j ] [ k ] 表示长度为i,最高位为j,余数为k的满足条件的个数,但是在做的时候发现这个方程真心不好维护比方说前面413 本是不满足条件的 但是4134 是满足条件的 这样我得把前面不满足条件的也加上。。。所以我们想到
2013-10-02 14:40:35
1798
原创 hdu 4117 AC自动机 + DP+线段树
此题着实蛋疼。。。。 写了个简单的dp 我居然交了20次代码后有个ac出现。。。。不知道此题数据是不是现场随机生成在跑的。。。题意:给定n个字符串,每个串都有个权值,找出若干个字符串组成一个序列,前面一个字符串是后面一个字符串的子串,问我们能获得最大权值和?首先dp方程应该好想吧 到dp[i] 到以第i个串结尾的最大权值和首先把所有串一起加入trie建自动机, 那么fail指针指向的所
2013-09-29 22:10:30
1391
原创 HDU 4003
一开始dp写出来了。。。结果初始化理解错了。。。dp[i][j]表示对于以i结点为根结点的子树,放j个机器人出去不收回所需要的权值和。 当j=0时表示放了机器人下去收回来,这里网上说是放一个人下去一直不能理解,其实是可以放多个下去,这里表示放了机器人回来的权值和,但是权值和是一个人遍历的值;比方说一个人遍历全部的点回到 i 和两个人分别遍历回来结果是一样的,可以理解为一个人下去一个
2013-09-18 10:14:40
794
原创 hdu 4747
这题思路有点纠结啊啊啊啊啊!!! 类似于今年多校的线段数,多校的时候是固定左端点,此处是固定右端点。。。这类题还是要多想想维护啊。。。。考虑一组数,那么最小的肯定是0,1,2...递增的数,那么首先预处理出1到n的mex值(表示从1到i的区间mex值为多少),然后我要记录以后当前值得后一个与其相同的值得位置,用next【i】表示,这里为什么,后面再说然后考虑从L 到 R 位置,
2013-09-16 23:31:14
1452
转载 glibc的几个有用的处理二进制位的内置函数
— Built-in Function: int __builtin_ffs (unsigned int x)Returns one plus the index of the least significant 1-bit of x, or if x is zero, returns zero.返回右起第一个‘1’的位置。— Built-in Function: int
2013-09-14 10:33:13
3314
原创 dp泛做1
这里的dp范做根据网上的动态归法分析和网上的有个100个dp方程做的,题解很多是原版,没怎么动,有些是别人的一些其他做法,还有一些自己的想法。如果看到题解很别人一样,那就是摘自别人的。且这里只是一半。由于本文有些摘自网上,如有原主看到不想在此贴出的,请说明,将会撤出。如此文方法错误,或者冒犯某些原博主的文章还请见谅,还请指出,非常感谢机器分配(HNOI’95)0-1背包变形ty
2013-05-20 20:02:39
145096
2
原创 hdu 4349 lucas定理的推导
Lucas定理如下,是Édouard Lucas于1878年证明的定理,其数学表达式如下:For non-negative integers m and n and a prime p, the following congruence relation holds:whereandare the base p expansions of m and
2013-04-28 18:16:17
980
转载 计算一个 32 位无符号整数有多少个位为 1
http://blog.youkuaiyun.com/rappy/article/details/1788969引用:Counting out the bits 可以很容易的判断一个数是不是2的幂次:清除最低的1位(见上面)并且检查结果是不是0.尽管如此,有的时候需要直到有多少个被设置了,这就相对有点难度了。 GCC有一个叫做__builtin_popcount
2013-04-25 00:39:48
1096
转载 A bit of fun: fun with bits
A bit of fun: fun with bitshttp://www.cnblogs.com/drizzlecrj/archive/2007/03/13/672576.html 【原文见:http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=bi
2013-04-25 00:39:03
683
原创 cf283d
此题证明花费时间够长。。。特意写这个来述说我痛苦的证明过程。。。。此题要在比赛的时候证明出全部的性质还是比较难的。。。(自己太菜了。。。)首先对于y个连续数的和可以这样表示:x=t+(t+1)+(t+2)+...+(t+y-1) 那么总和就是:x=y*(y-1)/2+y*t===>x=y*((y-1)/2+t)=====>2*x=y((y-1)+2*t)然后讨论奇偶情况:y为奇数时,只
2013-04-18 12:44:57
769
转载 C++拷贝构造函数(深拷贝,浅拷贝)
C++拷贝构造函数(深拷贝,浅拷贝)http://www.cnblogs.com/BlueTzar/articles/1223313.html对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #incl
2013-04-17 02:07:16
515
原创 cf256e
此题算是线段树维护的dp其实单纯想很容易,对于一个对于以i节点开始,j节点结束,那么其方案数就是dp【i】【J】=dp【i】【K】*dp【L】【J】其中保证(K,L)这个对是符合要求的就可以了,那么由于区间较大,就用线段树来维护就好了。。。我写的中规中矩,没加优化是2000ms+,但是貌似可以优化,由于我是递推上来的,那么有些pushup其实是不必要的。还有就是处理好清空的情况,即设置为0
2013-04-10 19:56:51
662
原创 cf219e
此题困扰时间甚长啊。。。一开始看题目。。。标题就是那个46d,估摸着也是区间合并。。。果不其然。。。然后就像这题算是点更新,相对于那题是段更新。。。果断就照46的往里写。。结果样例都过不去。。。后面自己手工模拟了下。。。发现当两端都取完的时候要取中间。。。然后中间1个为1一个为2的时候视为同一情况,可以自己手工模拟下样例然后我就一直在想如何维护两端和中间按那题的做法那么我无论怎么样
2013-04-10 16:07:12
827
原创 cf46d
此题区间精度把我搞的郁闷死了。。。其实很好理解,此题和hotel是一个性质,由于两端点不好处理,我就在左端加一个b,右端加一个f,然后这样就可以保证所有车都可以满足条件了,然后在询问的时候把b加回来就好了。。。。。就是由于我的坐标轴往后延伸了b,然后我的是有负数,然后处理的时候总会有精度差。。。把我debug调死了。。。搞了2个小时没搞定这个。。。索性不这样建了。。直接下标0开始,然后
2013-04-09 00:37:55
773
原创 poj3667
我发现我居然以前只是看了这题,居然没有做。。。晕死此题对于做区间合并入门真是不错。对于一段连续区间,且要保证左端点优先,那么就用3个域来维护,一个lsum一个rsum一个sum这个在notonlysuccess的博客里面写了。。这里说下query要注意的。query其实是一个二分逼近的过程,就是不断去找最左端点的那个可行值,那么在找左端点的时候有个事情是要做的即pushdown,需要把
2013-04-08 20:36:18
819
原创 cf258e
此题和前面两个dfs序列其实是差不多的。只是稍微复杂点。首先需要明白:某个点的子树就是DFS序列里一段连续的区间。所以我们要给其子树赋值,就是给对应的dfs序列中的连续区间赋值。那么首先用dfs预处理出连续区间。然后离线的保存所有的询问。然后按dfs序列来搜,每搜到一个节点,则更新其区间,然后统计出来有多少个就可以了,这和前面的那两题是差不多的。这个步骤可以用线段树来维护,或者树状数组来维
2013-04-08 16:54:26
719
原创 大视野1782 slowdown
此题同样是dfs序列对于一个牛到了第i个节点,那么后面访问i节点的牛必然会要统计+1,那么即:对于以i为根的点其子树加一,所以当前这个节点已经被访问过,那么要想访问以这个节点为根的子树的元素,都必须加1,同样还是树状数组。对于它后面的节点不是它的子树,只要将在这个子树的后面那个节点值-1抵消就可以了。
2013-04-08 13:22:14
580
原创 hdu3887
此题是类似于求dfs序列。。题意:给定一颗树,告诉你根节点,求每个结点下面序号比它小的个数,注意是从1开始。单纯用dfs会爆栈 如果在ms c++ 下加program就不会,但是不保险啊手打栈还是好的。此题记录入队时比他小的节点数,出队时候记录大的节点数就好了。
2013-04-08 12:26:29
854
转载 Win32 环境下的堆栈
Win32 环境下的堆栈选择自 slimak 的 Blog Win32 环境下的堆栈(一)简介在Win32环境下利用调试器调试应用程序的时候经常要和堆栈(Stack)打交道,尤其是在需要手工遍历堆栈(Manually Walking Stack)的时候我们需要对堆栈的工作过程有一个比较清晰的了解.接下来的这些文字将通过一个例子程序详细的讲解堆栈的工作过程
2013-04-07 21:36:29
994
原创 poj2076
最近在看概率先A个水题。E(i,j)=1+(i*j/n/s)*E(i,j)+(i*(s-j)/n/s)E(i,j+1)+((n-i)*j/n/s)*E(i+1,j)+(n-i)*(s-j)/n/s*E(i+1,j+1);这个解释网上很多了解释下为什么是递推做。因为根据这个式子,且n有1000,如果用高斯消元的话中间变量将会非常大,就会爆掉。那么考虑到其结构是线性递推,那么就将上式化
2013-04-07 19:30:30
928
原创 generator
这个题目有两题一个是:la3490 即zoj2619 此题 还有一题是hdu3058 这个算是前一题的进阶版,但是其长度要段些。然后说下此题解法,是参照俞勇的那本书写的。先给出:然后说明如下:F【i】记为从i状态到达L状态期望的步数c【i】【j】表示从i状态末尾加第j个大写字母后,得到的新状态是什么然后做的时候由于除n有可能丢失精度,那么两边同时*n就好做了。对于la349
2013-04-07 16:06:39
868
Four different tricks to bypass StackShield and StackGuard protection
2015-10-29
网络流sap算法(whitecloud)
2012-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人