05 2017 档案

摘要:Brief Solution: 强连通tarjan+压缩点+判断是否除了一个点,其它点都有出度 Detailed Solution: 把牛看成点若一个点b能到达点a,则b认为a受欢迎若所有的点都能到达点a,则a被所有的牛欢迎 对于某个强连通中的点,任意两点可互达,互相受欢迎对图求强连通,并把强连通压 阅读全文
posted @ 2017-05-31 20:43 congmingyige 阅读(179) 评论(0) 推荐(0) 编辑
摘要:稳定排序nlogn之归并排序_一维,二维 稳定排序:排序时间稳定的排序 稳定排序包括:归并排序(nlogn),基数排序【设待排序列为n个记录,d个关键码,关键码的取值范围为radix,则进行链式基数排序的时间复杂度为O(d(n+radix)) 】,冒泡排序(n^2),插入排序(n^2),交换排序(n 阅读全文
posted @ 2017-05-29 20:54 congmingyige 阅读(285) 评论(0) 推荐(0) 编辑
摘要:如1<=n<=10000 开一个10000*10000的longint数组:10000*10000*4/1024/1024=381.4697265625Mb 开一个10000*10000的Boolean数组:10000*10000/1024/1024=95.367431640625Mb 如果是256 阅读全文
posted @ 2017-05-29 19:45 congmingyige 阅读(410) 评论(0) 推荐(0) 编辑
摘要:1 ;HtoD 2 3 data segment 4 n dw ? 5 data ends 6 7 stack segment 8 db 50 dup(?) 9 stack ends 10 11 code segment 12 assume cs:code,... 阅读全文
posted @ 2017-05-28 21:58 congmingyige 阅读(528) 评论(0) 推荐(0) 编辑
摘要:if condition 1 jmp aif condition 2 jmp a……if condition n jmp a xxx ;condition bjmp ca:xxx ;condition ac: 阅读全文
posted @ 2017-05-28 21:56 congmingyige 阅读(589) 评论(0) 推荐(0) 编辑
摘要:逆序输入 正序输入: 阅读全文
posted @ 2017-05-27 00:12 congmingyige 阅读(415) 评论(0) 推荐(0) 编辑
摘要:二叉排序树 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值; (3)左、右子树也分别为二叉排序树; I.建树: 初始时树为空。 对于第一个数,直接作为 阅读全文
posted @ 2017-05-27 00:09 congmingyige 阅读(326) 评论(0) 推荐(0) 编辑
摘要:结构体与指针 1.结构体指针的数值为某个结构体的内存空间的地址,从而指针指向某个结构体,但并不能说结构体指针自带内存空间,用于存储结构体内的内容。 2.结构体指针的初始值为空(0),不指向任何结构体。 3.malloc操作:创建一个新的内存空间(从内存中选择一个内存空间存储结构体),p指向这个结构体 阅读全文
posted @ 2017-05-26 23:28 congmingyige 阅读(1643) 评论(0) 推荐(0) 编辑
摘要:x(负数) mod y(正数) = z 其中x<z<=0 , 且(z-x) mod y=0。 求法:z=x+abs(x)/y*y (这里的除法结果向下取整) 所以当求一个数经过各种计算后的取余,只需 ans=(ans+x*y)%yu ans=(ans-x*y)%yu ans=ans*x%yu 除法: 阅读全文
posted @ 2017-05-25 22:00 congmingyige 阅读(226) 评论(0) 推荐(0) 编辑
摘要:要想对任意(ai,bi)和(aj­和b­j),当ai<aj时,都有bi<=bj;当ai>=aj时,bi>=bj,当对a进行升序排序后(b同时发生改变,从而不改变值,最后有a1<=a2<=…<=an),必须满足b1<=b2<=…<=b­n。 否则,必存在(ai,bi)和(aj­和b­j),有ai<aj 阅读全文
posted @ 2017-05-25 21:46 congmingyige 阅读(176) 评论(0) 推荐(0) 编辑
摘要:逆序对 逆序对:满足i<j且a[i]>a[j]的所有的(a[i],a[j])对的个数。 I.正常的方法O(n^2): 可以从i或j的角度出发 Code: II.有两种方法求逆序对使得时间复杂度为O(nlogn): 1.归并排序+统计 2.离散化+树状数组 1.归并排序+统计 2.离散化+树状数组 C 阅读全文
posted @ 2017-05-25 21:15 congmingyige 阅读(170) 评论(0) 推荐(0) 编辑
摘要:1.汇编运行程序时卡住:一般是没有设置开始标识符和CX编写错误 2.重新编写程序后没有变化:一般是没有重新编译(masm xx;)和连接(link xx;) 3.程序有结果,但是没有结束运行:1.少写了mov ah,4ch , int 21h;2.CX编写错误 4.根据调试需要,可以修改初始值,能使 阅读全文
posted @ 2017-05-23 23:05 congmingyige 阅读(209) 评论(0) 推荐(0) 编辑
摘要:段内短转移:jmp (short):-128~127(八位) 段内近转移:jmp near ptr:-32768~32767(十六位) 段间转移:jmp far ptr 其中ptr指明长度 但是对于条件跳转(如jz,ja,jb,jcxz等),是不能用下面两个转移的(near ptr/far ptr) 阅读全文
posted @ 2017-05-20 21:08 congmingyige 阅读(197) 评论(0) 推荐(0) 编辑
摘要:1.节点与结点I.节点如图/网络中一个点到达另外一个点,可认为中间的点把这两个点截断,为节点(截断点) II.结点数据存储结构如叶子结点 但是这两个点本质是一样的,只是在不同场合叫法不同而已 2.记录对事物的统称如出行记录,学生管理记录等…… 另外:有名为”记录“的数据结构 阅读全文
posted @ 2017-05-17 22:01 congmingyige 阅读(131) 评论(0) 推荐(0) 编辑
摘要:1. 读入字符 scanf/getchar:空格、Tab、回车都可以读入。但要以回车作为结束符。 所以当读入字符时,注意去掉一些干扰输入的字符,如空格和回车 2. 读入字符串 scanf:不能读入空格、Tab、回车。 gets:可以读入空格、Tab、回车。但是读入回车时,字符串为空串。 所以当输入很 阅读全文
posted @ 2017-05-17 19:48 congmingyige 阅读(350) 评论(0) 推荐(0) 编辑
摘要:Solution 经典bfs,所有的点到店的最短距离 其中一开始队列的长度为店的数目 一个点可能有多个订单 关于数据大小: 1.1000*(1000*1000)*2000=2,0000,0000,0000订餐量*客户的数量*距离总数用__int642.1000*(1000*1000)=10,0000 阅读全文
posted @ 2017-05-16 22:10 congmingyige 阅读(324) 评论(0) 推荐(0) 编辑
摘要:排列组合 ——插隔板 I.n个相同小球分成m部分,每部分可以没有球。 在n+(m-1)个数中选择(m-1)次数作为隔板,其它的数作为小球。Count=C(n+m-1,m-1)。 II.n个相同的小球分成m部分,每部分至少有1个小球。 每个在相邻小球的中间,有n-1个隔板,从n-1个隔板中选取m-1个 阅读全文
posted @ 2017-05-09 23:36 congmingyige 阅读(467) 评论(0) 推荐(0) 编辑
摘要:单击该键 用于夜晚在exe运行界面粘贴数据。(正常来说直接按右键即可) 从此粘贴数据不会影响睡觉的人……etc.在宿舍…… 阅读全文
posted @ 2017-05-08 16:09 congmingyige 阅读(180) 评论(0) 推荐(0) 编辑
摘要:详细解释:算法导论/数据结构书 1.链式基数排序 //n个数,每个数有g个关键字//排序:从最后的关键字开始到最前的关键字//分配+收集//每个关键字分配+收集需要n+n时间,而共有g个关键字,时间复杂度为O(2ng),效率很高。//如果用数组,数据集中在一个区间,则区间的长度很长,另外的区间的内存 阅读全文
posted @ 2017-05-06 21:54 congmingyige 阅读(384) 评论(0) 推荐(0) 编辑
摘要:dijkstra(最短路)和Prim(最小生成树)下的堆优化 最小堆: down(i)【向下调整】:从第k层的点i开始向下操作,第k层的点与第k+1层的点(如果有)进行值大小的判断,如果父节点的值大于子节点的值,则修改,并继续对第k+1层与第k+2层的点进行判断和修改,否则不修改,且退出。当点向下移 阅读全文
posted @ 2017-05-06 19:02 congmingyige 阅读(889) 评论(0) 推荐(0) 编辑
摘要:ccf20170304地铁修建_Solution 这里最短路为所以从点1到点n的路径中最长的道路的长度。 因为1 ≤ n ≤ 100000,1 ≤ m ≤ 200000,属于稀疏图,所以使用Spfa(循环队列)较适合,如果使用dijkstra需要堆优化。 其实这道题用并查集最好,对所有道路长度从小到 阅读全文
posted @ 2017-05-06 13:22 congmingyige 阅读(959) 评论(0) 推荐(0) 编辑
摘要:循环队列 队列:先进先出,FIFO。 牺牲一个单元,使队列为空和只有一个元素时不要产生歧义 队首front,队尾rear,队列为a[front+1]~a[rear] 开一个大小为n的数组,a:array[0..n-1] of longint ,当rear=n-1时,需要在队尾增加一个数据,此时没有存 阅读全文
posted @ 2017-05-06 13:11 congmingyige 阅读(302) 评论(0) 推荐(0) 编辑
摘要:zoj3956_Solution H=sum(hi),C=sum(ci),Value=H*H-H*C-C*C 求Value的最大值 Solution: 动态规划: 共两维:H,C 固定一维C,在该维值C相同的情况下另一维应最大H,从而动态规划另一维H,转变为01背包问题。 优化: H*H-H*C-C 阅读全文
posted @ 2017-05-06 11:29 congmingyige 阅读(207) 评论(0) 推荐(0) 编辑
摘要:Problem:https://www.nowcoder.com/question/next?pid=2811407&qid=46573&tid=6015849 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如: {1, 2, 1}, {15, 78, 78, 15} , 阅读全文
posted @ 2017-05-06 00:09 congmingyige 阅读(1744) 评论(0) 推荐(1) 编辑
摘要:1.快速排序思想:从一堆数A中找到一个数x,然后把这堆数x分成两堆B,C,B堆的数小于(或小于等于)该数,放在左边,C堆的数大于(或大于等于)该数,放在右边,有可能把该数x单独分开,放在中间。然后对小于(或小于等于)该数的堆B和大于(或大于等于)该数的堆C进行上述相同的操作,直到堆中的数只有一个,不 阅读全文
posted @ 2017-05-05 21:42 congmingyige 阅读(547) 评论(0) 推荐(0) 编辑
摘要:Sort函数(c) (来自codeblocks) stdlib.h _CRTIMP void __cdecl qsort(void*, size_t, size_t, int (*)(const void*, const void*)); (来自网络) void qsort( void *base, 阅读全文
posted @ 2017-05-05 00:50 congmingyige 阅读(263) 评论(0) 推荐(0) 编辑
摘要:--update 又遇到这个问题,然后搜文章,竟然搜到自己的文章,呵呵~ Problem:求方阵A的值。 设求n*n的矩阵:加法的操作次数为P(n),乘法的操作次数与为M(n)。 对于方法1: j1~jn共有n!种选法:j1有n种选法,j2有n-1种选法,…,jn有1种选法。 P(n)=n!-1 M 阅读全文
posted @ 2017-05-04 23:22 congmingyige 阅读(3387) 评论(0) 推荐(0) 编辑
摘要:全排序与康拓展开 n=3 全排列: 123 132 213 231 312 321 每个数列由1~n组成,且出现一次。 对于第一个位置,有n种选择,对于第二个位置,有(n-1)种选择,…,对于最后一个位置,有1种选择,所有共有n!种排序方法。 数列从小到大排序(或从大到小排序,或不排序))。 数列: 阅读全文
posted @ 2017-05-04 23:17 congmingyige 阅读(344) 评论(0) 推荐(0) 编辑
摘要:rqnoj74 Attention: 1.容易忽略(a[1]_a[2])_(a[3]_a[4]) 模式 2.通过两个整数相除,若保存结果为实型形式,不仅设置保存结果的变量为实型,而且还要1.0*x/y。 Way1: 从所有的数中任意找到两个,并选择任意运算符并运算,使得两个数变成一个数,最后只剩下一 阅读全文
posted @ 2017-05-04 19:36 congmingyige 阅读(1076) 评论(0) 推荐(0) 编辑
摘要:堆排序:二叉树。如果按升序排列,保证父节点的值小于等于子节点的值。 堆排序证明: 1. for i=n/2 downto 1 do down(i); I.每次点i向下操作前保证:以点i的子节点为根节点的子树的所有节点满足它的值小于等于其子节点的值(如果有子节点)。 II.每次点i向下操作后保证:以点 阅读全文
posted @ 2017-05-04 00:11 congmingyige 阅读(458) 评论(0) 推荐(0) 编辑
摘要:1.c=getchar(); //getchar can't accept Space Tab 2. scanf("%c",&c); printf("%ld\n",(long)c); //Enter 10 //Space 32 //Tab 9 3.while (scanf("%c",&c)!=EOF 阅读全文
posted @ 2017-05-03 21:47 congmingyige 阅读(249) 评论(0) 推荐(0) 编辑