- 博客(190)
- 资源 (1)
- 收藏
- 关注
原创 Memory Hierarchy
由于硬件技术的限制,我们可以制造出容量很小但很快的存储器,也可以制造出容量很大但很慢的存储器,但不可能两边的好处都占着,不可能制造出访问速度又快容量又大的存储器。因此,现代计算机都把存储器分成若干级,称为Memory Hierarchy. 按照离CPU由近到远的顺序依次是CPU寄存器、Cache、内存、硬盘,越靠近CPU的存储器容量越小但访问速度越快,下图给出了各种存储器的容量和访问速度的典型值。
2017-08-23 14:39:59 676
原创 leetcode 4 Median of Two Sorted Arrays(二分+思路)
题意:给出两个分别有序的数组,数组长度分别为m和n,设计一个求出这两个数组所有元素的中位数的算法,要求时间复杂度不大于O(log(m+n)).解题思路:https://leetcode.com/problems/median-of-two-sorted-arrays/#/solutions自己没有思路。这个方法非常好,作者讲的简单易懂,非常有条理。代码:clas
2017-04-26 22:11:27 504
原创 leetcode 10 Regular Expression Matching(Dynamic Programming)
题意:'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string (not partial).The function prototype should be:bool isMa
2017-04-26 21:37:19 886
原创 基数排序
百度百科上写的代码像是一坨翔。1.基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用。2.基数排序的实现方法分为两种:最高位优先(Most Significant Digit first)法
2017-03-30 11:15:05 540
原创 can't find compiler executable in your configured search path's for GUN GCC Complier的应对办法
今天安装codeblocks,安装完打开。出现了如下问题:找不到编译器。问题出现的可能原因:1.在官网第一次下载的时候,下载了没有mingw的那个。可以简单地从安装后的文件夹大小来简单判断是否下载了这个:通过此方法安装后的文件夹大小在100m左右?或小于100m?(目前是这个样子。。)解决方法:卸载,然后重新下载。这可能是最容易操作的办法。2.若选择下载
2017-01-02 01:47:00 19222 15
原创 hdu 5475 An easy problem (2015 上海网络赛 H题)
看起来像是除法取余,求逆元运算其实是简单的线段树 单点修改,区间查询。
2015-09-27 11:17:30 1316
原创 组合数取模(杨辉三角+Lucas定理+模合数)
/* (1) 1 <= m <= n <= 1000 和 1 <= p <= 10^9 ( p可以是任何数 ) 这个问题比较简单,组合数的计算可以靠 杨辉三角 ,那么由于和的范围小,直接两层循环即可。*/long long C[maxn][maxn];void Comb(int n, int m, int p){ memset(C, 0, sizeof(C));
2015-09-21 16:23:59 1996
原创 中国剩余定理 互质与不互质两种
1.什么是中国剩余定理?这个问题困扰了窝好久,看了好多书上的解释,但都很片面地只进行了部分阐述...搞得我也是迷乱..最后发现还是百度百科讲的最靠谱了...(也可能是看的多了自己就懂了吧..百度百科上的所给的证明非常棒..浅显易懂!(窝都看懂了...一发链接:孙子定理然后还是说一下我的理解吧:下面这个一元线性同余方程组
2015-09-20 11:38:16 2464
原创 欧拉函数
由费马小定理 得出的 欧拉函数欧拉函数的值 = 不超过m 并且 和m互质 的数的个数/* 求欧拉函数的值 O(sqrt(n))*/int euler_phi(int n){ int res = n; for(int i = 2; i * i <= n; i++){ if(n % i == 0){ res = res / i *
2015-09-18 21:12:21 439
原创 基础数学总结 关于模运算 1
1.模运算基本公式 和 几点注意/* (a + b) mod n = ((a mod n) + (b mod n)) mod n (a - b) mod n = ((a mod n) - (b mod n) + n) mod n (a * b) mod n = ((a mod n) * (b mod n)) mod n 对于除法没有类似公式,但是可以通过求逆元的
2015-09-18 20:23:27 2714
原创 基础数学总结
1.最基础的辗转相除法 O(log max(a, b))// 复杂度O(log max(a,b))int gcd(int a, int b){ if(b == 0) return a; return gcd(b, a%b);}2.扩展欧几里得算法 O(log max(a, b))/* 用于解决方程:ax + by = gcd(a, b) 事实上,一定存在
2015-09-18 16:48:58 590
原创 hdu 1815 2-SAT经典题
题意:n个农场要连在转接站上 共有两个转接站s1,s2每个农场可以选择连在s1或者s2上给出m条限制关系:两个牧场必须连在同一个转接站上 或者 两个必须连在不同的转接站上~然后给出转接站之间的距离 牧场和转接站之间的距离 问 在满足限制条件的前提下 怎样连接可以使得任意两个牧场之间的联通之后的距离的最大值最小~思路:最大值最小 —> 阔以想到二分求解选一或
2015-09-01 16:55:50 570
原创 hdu 4689 Derangement
题意:求n(n 即排列之后的每个位置上的数字,减去初始排列1 2 3 4 ... n,得到的结果满足题目中所给的正负关系 思路:DP 比赛时我学弟想了个状态压缩DP,然后就开始搞了,搞到最后超时了...这个思路很好的..但是不能在这里用..code:我强调一遍...下面↓这个代码 !超时!......#include#include#include#inc
2015-08-26 19:58:38 782
原创 hdu 4277 暴力+set
题意:给n条边, 可以围成多少种不同的三角形思路:暴力枚举三角形的三条边分别由哪些边组成hash三角形的三条边之后存到set中最终答案是set的大小code:#include#include#include#includeusing namespace std;const int maxn = 20;typedef long long LL;int a[
2015-08-25 17:04:11 756
原创 树链剖分学习记录
HDU 3966 基于点权 修改(增减)一条路径上的点 单结点查询code:#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#includeusing namespace std;const int maxn = 50010;struct Edge{ int to, n
2015-08-16 11:38:11 632
原创 矩阵优化的模板(用的时候注意要修改呀)
1.这个是我在算概率dp的时候用的一个~是浮点数啦,然后没有取余操作的~struct Matrix{ double mat[2][2];};Matrix mul(Matrix a,Matrix b){ Matrix ret; for(int i=0;i<2;i++) for(int j=0;j<2;j++) { ret
2015-08-01 10:29:05 473
原创 POJ 3744 Scout YYF I 概率DP+矩阵优化
题意:一条路上有n个地雷,给出地雷的位置。某人从起点(位置1)出发,走一步的概率是p,走两步的概率是(1-p),问这个人活着。。(嗯活着)走过这条路的概率是多少..思路:首先n很小的,首先想到,平安走过,即到达 最后一个地雷 的下一个位置的概率。设为dp[x[n]+1];然后我们会想到对于任意一个位置来讲,会有dp[i] = p * dp[i-1] + (1-p) * dp[i
2015-08-01 10:13:05 653
原创 hdu 2112 (题意是错的)
题意:给相连的两个站点之间的距离,求从起点到终点的最短路径ps: 这道题目真是见过的最傻逼的题目了....不知道出题人是不是傻逼。。根本就没写双向路好不好!还特么傻逼一样加了“每行有站名s,站名e” 这么蛋疼的提示,坑人也特么不会真特么SB艹code:#include #include #include #include #include #include #incl
2015-07-29 14:21:11 487
原创 poj 1459 多源汇最大流
分析在这里窝把原来的那个方法也写上好了,反正也差不多....其实....还写了最高标号预流推进....................................就是这么蛋疼....然而在这道题目上来说,,这三种方法其实都一样。。。code:#include#include#include#include#include#include#include#i
2015-07-27 17:58:57 813
原创 poj 1459 多源汇网络流 ISAP
题意:给n个点,m条边,有np个源点,nc个汇点,求最大流思路:超级源点把所有源点连起来,边权是该源点的最大允许值;所有汇点和超级汇点连接起来,边权是该汇点的最大允许值;跑最大流code:#include#include#include#include#include#include#include#include#include#include#i
2015-07-27 17:53:21 944
原创 UVA 10735 混合图的欧拉回路
题意:判断混合图中是否存在欧拉回路,如果存在欧拉回路,输出路径。思路:欧拉回路 存在每条边经过且只经过一次后回到原点的路径在混合图中存在欧拉回路,需要满足以下条件:1.把所有无向边任意规定一个方向后,对于每个点,满足 |入度-出度| % 2 == 02.按照上面已经规定的方向,利用 无向边 建图(有向边忽略掉),然后对于每个结点u,如果in[u]out[u], 建边(u,
2015-07-27 17:35:21 719
原创 ZOJ 2366 Weird Dissimilarity (简单DP)
题意:字符c1和c2的距离为d(c1, c2),已知两个字符串s和t,现在要找长度相等的两个字符串a和b,使得s是a的子序列,t是b的子序列,且a和b的距离最小。思路:字串和子序列是不一样的。。。。子序列是允许中间 间断 的,而字串必须是连续的...比赛的时候居然理解错了....T_T这样的话,用最长公共子序列的思路来解决这道题就好啦~dp[i][j]表示 “第一个串处理到
2015-07-13 13:09:40 1462
原创 hdu 4940 Destroy Transportation system( 无源汇上下界网络流的可行流判断 )
题意:有n个点和m条有向边构成的网络,每条边有两个花费:d:毁坏这条边的花费b:重建一条双向边的花费寻找这样两个点集,使得点集s到点集t满足 毁坏所有S到T的路径的费用和 > 毁坏所有T到S的路径的费用和 + 重建这些T到S的双向路径的费用和。思路1:然后这个无源汇带上下界网络流的可行流问题的求解方法见这里~~建图就是上面说的那样啦~最后判断有没有可行流就是
2015-07-09 14:43:22 1067
原创 hdu 4939
题意:长度为n个单位的map,每个单位需要时间t来走完。每个单位可以放置一个塔。一共有三种塔,每种塔的作用不同:1.只能攻击当前单位,每秒x点伤害(红塔)2.攻击当前单位之后的所有单位,每秒y点伤害(绿塔)3.使目标经过本单位之后减速,之后每单位需要的时间+z(蓝塔)问目标受到的最多的攻击是多少思路:首先明确,1塔只能放在最后才最优。然后就是解决前面的塔放2还是
2015-07-08 19:42:09 928
原创 uva 10934 装满水的气球
题意和思路见:http://blog.csdn.net/shuangde800/article/details/11273123我的想法:首先问题转化一下将问题转化成:定义f[i][j] 表示给i个水球和j次实验机会,最高能够测试到几层~则会有如下的转移方程:f[i][j] = f[i][j-1] + f[i-1][j-1] + 1;后一部分是说选在第k层试第一次,
2015-07-07 15:58:42 1624 1
原创 uva 1001 建图+最短路
题意:在一个三维的空间内求从起点到终点的最短时间花费。其中n个洞,在洞内通过的时间花费是0,在洞外的时间花费是每单位10sec思路:水题建立起点到每个洞的边,建立终点到每个洞的边,建立起点到终点的边 ,边权是到达所需的时间花费。求一次最短路即可。code:#include#include#include#include#include#includeusin
2015-06-10 17:26:48 895
原创 fzu 2058 问题转化 + 二分
题意A array contain N number, can you tell me how many different pair i,j that satisfy a[i] + a[j] = M and 10 思路:用map记录会超时所以想到手写二分。思考一下其实满足题目条件的对数和每个数字的位置并没有关系——排序+二分查找(范围来确定个数)即可。code:
2015-05-16 15:34:21 675
原创 fzu 2056 暴力
题意:现在有一个n*m的矩阵A,在A中找一个H*H的正方形,使得其面积最大且该正方形元素的和不大于 limit。思路: 水题预处理矩形元素和,然后二分枚举最大边长,然后把这边长在整个矩形中试一遍(O(n*m))看是否符合。总时间复杂度O(n*m*log(min(n,m))) 可暴code:#include#include#include#include
2015-05-16 15:27:01 657
原创 hdu 4777 树状数组这么用好厉害
题意:给出m个区间查询,查询 区间里和区间中的其他数字 都互质 的数字的个数思路:简单题,因为并没有 修改,全是查询把所有查询读入,按照左端点 从左往右来处理。(原因稍后首先预处理对于每一个位置(id)的数字,往左和往右最远到哪个位置,会出现和这个数字不互质的数字,用l[id]和r[id]保存下来。同时用邻接表(因为这么处理比较简单)保存下来对于一个位置iid,有哪个数字,它的
2015-05-16 15:15:00 912
原创 fzu 2059 并查集+离线处理
题意:There is a array contain N(1Every query will be:1 x : ask longest substring which every number no less than x2 y x : change the A[y] to x. there are at most change 10 times.For each ask
2015-05-16 14:37:18 690
转载 树链剖分
“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。 记siz[v]表示以v为根的子树的节点数,dep[v]表示v的深度(根深度为1),top[v]表示v所在的链的顶端节点,fa[v]表示v的父亲,son[v]表示与v在
2015-05-15 01:18:14 473
原创 uva 10817 状态压缩DP
题意:有S个课程要教,学校本来有m个教师 给出工资和所教课程编号 (在职教师不能辞退)来应聘的有n个教师 给出工资和所教课程编号问保证每个课程都有两个老师可以教的前提下,最少发多少工资思路:水题;总共最多只有8个课程,状态压缩d[i][s1][s2] 表示当前状态下,有一个老师教的课程是s1,有两个或两个人以上教的课程是s2转移就是当前教师选或不选,对应的转移
2015-05-14 22:35:40 668
原创 hdu 3874 树状数组+离线处理
题意:这和hdu 3333 根本就是一道题 链接:http://blog.csdn.net/u013382399/article/details/45689977思路:同hdu 3333 code:#include#include#include#include#include#include#include#include#include#includ
2015-05-13 11:15:35 644
原创 hdu 3333 树状数组+离线处理
题意:查询区间和,重复的数字只计算一遍思路:先离线读入所有区间,然后按照区间右端点从小到大排序。从数组的第一个数开始,依次修改bit直到每个区间的右端点,然后bit求区间和。修改方式:用一个map记录当前数字是否已经出现过以及出现过的上一个位置,然后将该位置改为0,并更新一下map即可。(因为一旦出现重复数字,其实只有该区间中的最后一个数字是起作用的,在他之前的都应该忽略,
2015-05-13 10:37:07 918
原创 hdu 5139 (离线处理)
题意:f(n)=(∏i=1nin−i+1)%1000000007You are expected to write a program to calculate f(n) when a certain n is given.思路:写出前几项,就很容易得出递推式。但是因为n的数据范围是1~10000000,而内存给的小,所以并不能直接打表(MLE)采用离线处理——
2015-05-12 18:11:30 709
原创 反思 并查集
最近其实并没有刻意去练并查集,不过昨天和今天做到了两道题目,均是用并查集来解决的在解决这两道题目的过程中,我在运用并查集的时候,都出现了严重的错误。具体表现在,思路很清晰,应该怎么做也很明白,但是在处理的过程中对并查集的操作并不正确。很多时候都出现了由于对两个节点互相赋值而造成的find函数中的死循环。然而我并不清楚是什么原因。其中一一道题目,是赛码杯1003 是一个判断是
2015-05-05 22:07:36 500
原创 poj 3684 Physics Experient
题意:需要注意的一点 所有的球都是从 H 这个位置初速度为 0 落下的。这道题简直把我弄炸了 一个是看书的时候上面这个条件并不知道 另一个是有半径的时候为什么要加上2*R*i 后来每次睡觉满脑子都是这个鬼T_T!!后来总算大概明白了这个草尼玛的物理题 真是够了!enough!!!T_T一点都不想再看这道题了。别人的解:既然每个球不会有动能损失,我们假设每个球的半径
2015-04-30 11:06:10 597 1
原创 poj 1151 求矩形面积并 (线段树扫描线)
题意:给出n个矩形的左下角和右上角坐标,求这n个矩形所构成的面积思路:线段树扫描线这是第一次做到线段树扫描线,刚开始也不懂如果不懂,可以看:http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html和 http://www.faceye.net/search/69289.html我是看第
2015-04-28 02:10:44 1072 1
原创 poj 2378 树上的DP
题意:给一棵n个节点连通的树 条件 : 去掉一个节点 使剩下的每个连通分量 都不超过n/2个节点让找出所有符合上述条件的点 按照从小到大的顺序输出思路:首先建树 然后在建树的过程中,统计每个节点的子树中 最多的节点个数同时统计以此结点为根的树的 节点总数 sum[i]可以根据 n - sum[i] 算出上面一个祖先连通分量的节点个数判断即可code:
2015-04-22 21:55:38 637
原创 poj 2377
题意:最大生成树思路:最大生成树code:#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 0x3f3f3f3f#define PI acos(-1.0)#define eps
2015-04-22 20:53:59 659
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人