自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux Shell

一个 shell 脚本就是一个包含一系列命令的文件。shell 读取这个文件,然后执行文件中的所有命令,就好像这些命令已经直接被输入到了命令行中一样。要使得脚本可执行,需要脚本获得可执行权限并且把它shell能够找到的目录下。

2016-03-14 22:24:40 331

转载 Ubuntu软件包管理

Ubuntu Linux采用了Debian的软件包管理机制。由于软件包具有易用性、灵活性和扩展性的特点,再加上Internet的支持,使用户随时都能拥有最新的 Ubuntu系统,这也是Ubuntu受到推崇的一个重要原因。因而,Deb软件包管理也成为Ubuntu中最有活力的部分。Deb软件包Deb软件包本质上是文件包,这点类似于tar文件将多个文件合并为一个归档文件。但是Deb的身价不在于整合文件,而

2016-01-24 19:14:23 609

原创 shell 环境详解

当我们登录系统后,启动 bash 程序,并且会读取一系列称为启动文件的配置脚本, 这些文件定义了默认的可供所有用户共享的 shell 环境。然后是读取更多位于我们自己家目录中的启动文件,这些启动文件定义了用户个人的 shell 环境。精确的启动顺序依赖于要运行的 shell 会话类型。有两种 shell 会话类型:一个是登录 shell 会话,另一个是非登录 shell 会话。 登录 shell

2016-01-10 22:44:51 4228

原创 字符展开详解

Bash 中的特殊字符大全 通过展开, 你输入的字符,在 shell 对它起作用之前,会展开成为别的字符。如:[SL@SL ~]$ echo *Desktop Pic txt.saveshell 在 echo 命令被执行前把 * 展开成了当前工作目录下的文件名字。路径名展开通配符所依赖的工作机制叫做路径名展开。echo *       当前目录所有非隐藏文件echo .*

2016-01-06 21:20:27 1417

原创 TLCL学习总结

学习 shell文件系统中跳转pwd — 打印出当前工作目录名cd — 更改目录ls — 列出目录内容ls -l 长格式输出探究操作系统file — 确定文件类型file filenameless/more — 浏览文件内容less filename more filename操作文件和目录cp — 复制文件和目录复制单个项目item1到项目item2:cp item1 item2

2016-01-05 17:04:43 2603

原创 HDU 5591 ZYB's Game

题目大意两个人玩游戏,都已知数X,在[1,N]中猜中X则算输。若没猜中,则缩小范围。假设两人都足够聪明,求对于任意的X属于[1,N],能使得后手赢的X有多少个。分析类似两堆石子,每堆石子若干个,两个人可在任意一堆石子中捡取若干个,最后一个捡完石子的人胜利。若要使得后手能够胜利,则必然是先手面临两堆石子数量相等的情况。 若两堆石子数量相等,则后手可捡取先手所捡取得同样数量的石子。从而立

2015-12-05 23:30:57 870

原创 Java swing 写的贪吃蛇代码200行

刚学完书上java的swing,无聊做个贪吃蛇练练, 200多行的代码也写了好几个小时 0.0! 代码整体分成三块: * greedySnackMain:框架类 * snackWin: 面板类,这里主要就是对面板进行操作。 * Snack:蛇类 思想很简单:绘制完框架,新建一个线程让蛇跑起来就可以了。//类greedySnackMainpackage GreedySnack;impo

2015-12-04 20:45:20 36822 9

原创 HDU 1695 GCD (欧拉函数+容斥原理)

题目大意求[1,b]的x与[1,d]的y的二元组数,需满足gcd(x , y) == k,且二元组无序,即(1,2)和(2,1)视为同一个二元组分析可转化为:令b/=k , d/=k。求[1,b]和[1,d]互质的二元组数量。假设d>b,枚举[1,d]中的每个数i。当i <= b 时,[1,b]中与i互质的数的为i的欧拉函数当i > b 时,求[1,b]中与i互质的数的个数就要用到容斥原理

2015-11-12 14:01:09 468

原创 hdu 5074 Hatsune Miku (动态规划)

题目大意给出m种音符,编号为1…m,以及一个m*m的矩阵s。s[i][j]表示音符j出现在i之后时,ij这个组合能得到的分数。n个数,每个数num[i]代表一种音符。-1则是可以用任何音符替换,正数则是num[i]本身。求能得到的最大分数分析dp[i][j]表示对于前i个音符,第i个音符用j替换时能得到的最大分数i和i+1都是-1时dp[i+1][k] = max(dp[i+1][k],

2015-11-08 21:46:18 500

原创 hdu 5071 Chat (模拟题)

题目很长,但理解清楚就很好做了。有两个值得注意的地方: * 最后输出Bye的时候每次只输出当前的top。所以一开始若有Always on top,就要首先输出。 * 再输出Bye的时候,若是一句话也没讲,就不用输出代码#include <iostream>#include <string>#include <map>#include <vector>using namespace std;

2015-11-08 21:31:12 347

原创 HDU 2202 最大三角形 (凸包+旋转卡壳)

题目大意给出n(3 <= n <= 50000)个点,求这n个中最大三角形的面积分析暴力求解O(n^3),妥妥超时很容易想明白,最大三角形必定存在在这n个点构成的最大严格凸包中。所以先求凸包,时间复杂度O(nlogn)然后用旋转卡壳法在这个凸包中求最大三角形面积。时间复杂度O(m^2)(m为凸包中的点的数量)代码#include <iostream>#include <algorith

2015-11-07 13:47:19 738

原创 HDU 5533 Dancing Stars on Me(凸包)

题目大意给出n个点,判断这n个点能否构成一个等边的严格凸包分析首先直接求凸包,判断是不是n个点全部用到了。再依次比较每条边是否相等。代码#include <iostream>#include <cmath>#include <algorithm>using namespace std;const int maxn = 110;struct point { int x , y

2015-11-04 16:30:19 336

原创 POJ 3041 Asteroids (匈牙利算法)

题目大意给出n*n的矩形,k个点。每次可选择删除一行或一列的点,求至少需要删除几次方可将点全部删除。分析构造有向二分图:把每行x或者每列y看成一个点,而障碍物(x,y)可以看做连接x和y的边。问题就转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题。Konig定理: 最小点覆盖数 = 最大匹配数用匈牙利算法求二分图的最大匹配即可代码#include

2015-10-28 20:48:18 332

转载 匈牙利算法详解

转自:http://blog.csdn.net/dark_scope/article/details/8880547【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径

2015-10-28 20:23:24 390

原创 POJ 1094 Sorting It All Out (拓扑排序)

题目大意给出一个数n,表示有n的大写字母,从A开始。然后给出m个字符串,均是X < Y的格式,其中X,Y均是单个的大写字母。问根据这m个字符串得到前n个字母的关系:全序,有环,偏序按以下三种格式输出:Sorted sequence determined after **i** relations: **XXXX**.Inconsistency found after **i** relati

2015-10-26 22:38:39 308

原创 POJ 3026 Borg Maze (Prim)

题目大意给出m行n列的矩阵,所有元素均为’#’,’ ‘, ‘A’ ,’S’。其中#代表墙,即不可通过,’ ’ 则代表路。要求从S出发到达所有A的道路长度。分析所有字母都作为结点,字母之间的距离作为边,构造图。首先用BFS找出每个节点到其他点的距离,从而得到边然后直接prim求解代码/* 所有字母都作为结点,字母之间的距离作为边,构造图 * 首先用BFS找出每个节点到其他点的距离,从而构

2015-10-25 22:38:56 326

原创 POJ 1789 Truck History (Prim)

题目大意给出n个长度为7的串,串之间的dis为两个串中不同字母的个数,任何一个串都是可以由其它串得到,代价是两个串的dis求将所有串转换成同一个串的最少代价分析以串作为结点,串之间的代价作为边,建图。然后就是直接求最小生成树代码#include <iostream>#include <string>#include <cstring>using namespace std;#def

2015-10-25 20:12:31 269

原创 POJ 2240 Arbitrage (Floyd)

题目大意给出n种货币,以及m种对换方式的兑换率。求通过兑换能否使钱增加。分析dis[i][j]表示货币i兑换货币j的最大兑换率。求出所有货币的之间的最大兑换率。最后查看dis[i][j] * dis[j][i] 是否大于1即可。初始化dis[i][j] = (i == j ? 1 : 0);直接使用Floyd算法即可代码#include <iostream>#include <stri

2015-10-25 16:43:05 300

原创 POJ 1125 Stockbroker Grapevine (Floyd)

题目大意给出n个经纪人,接下来的n行,每行的第一个数m代表该经纪人的朋友数。紧接着有m对数,第一数代表朋友编号,第二个表示将消息传给该朋友所需时间。求从某个人开始,将消息传送到所有人所需花费的最少时间。分析很明显,要求出任意两点的最短路径,用Floyd算法。然后遍历结果数组dis,求出每一行的最大值的最小值即可。代码#include <iostream>using namespace s

2015-10-25 15:58:49 360

原创 POJ 2253 Frogger(floyd 或 dijstra)

题目大意出个n个点的坐标,任意两个点都是互相可到达的。求第0点到第1点的所有路径中,长度最大的边的最小值。Floyd算法求解Floyd是求图中任意两个点的最短路,即dis[i][j]表示i到达j的最短距离。这里稍作变换,令dis[i][j]表示i到达j的所有路径中长度最大的边的最小值。则if(dis[i][j] > max(dis[i][k] , dis[j][k])) dis

2015-10-25 14:31:24 314

原创 POJ 1062 昂贵的聘礼 (dijkstra)

题目大意有n个物品,编号为1…n,每个物品都有三个属性P、L、X(X < N),分别表示物品的价格,等级,替代品数量(即使用其它物品来替代该物品后,只需付出那个物品的价格和替代后的优惠价格即可得到该物品)。给定m,表示物品之间相差等级不能超过m。假设3个物品,m=1,等级依次为1,2,3。可以用2替代1,却不能使用3替代2,因为1,3之间等级超过m。求得到物品1的至少需要付出的金币数量分析

2015-10-24 21:06:42 365

原创 POJ 3259 Wormholes (Bellman-ford)

题目大意给出n个点,m条边以及w个虫洞。每条边都是双向的,并且有一个权值v表示通过这条边需要花费秒。每个虫洞是单向的且有一个权值v表示通过这个虫洞可以回到v秒之前。求最终到达起点时,所花费时间相对于起始时间是否为负分析判断是否存在负环即可#include <iostream>#include <vector>using namespace std;#define INF 0x3ffff

2015-10-24 17:21:39 310

原创 POJ 1860 Currency Exchange(Bellman-Ford)

题目大意给出n个顶点,m条边,原点s及初始金钱v。每条边有6个参数from, to, c1, r1, c2, r2。假设在from出有v的金钱,从from -> to,金钱 = (v - c1) * r1; 假设在to出有v的金钱,从to -> from,金钱 = (v - c2) * r2;求从s出发,最终回到s时金钱能否增长分析把每条双向边改写成两条单向边。只需用Bellman-F

2015-10-24 16:03:52 306

转载 Bellman-Ford算法详讲

概要Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。所以就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个,时间复杂度O(VE)。spfa是在Bellman-Ford上的队列优化,时间复杂度O(kE) (k << V),但在最坏的情况下,有可能退化

2015-10-24 15:54:51 463

原创 HDU 2825 Wireless Password (AC自动机+DP+状态压缩)

题目大意有m个单词,每个单词的长度不超过10。求长度为n的串包含至少k个单词的串的数量,所有字符均有小写字母组成。(0<=m<=10,1<=n<=25)分析将所有单词构造成AC自动机用状态压缩表示单词,val[i]表示结点i包含的单词;状态dp[i][j][k]表示长度为i的串,到达状态j,包含k的word时的数量状态转移方程dp[i+1][v][k|val[v]] += dp[i][j

2015-10-15 21:19:47 469

原创 POJ 1625 Censored! (AC自动机+DP+大数加法)

题目大意给出包含N个字符的字典,组成长度为M的句子,求无禁止单词的句子有多少个。禁止单词有P个,单词长度不超过10,所以字符的ASCII码均大于32(1 <= N <= 50, 1 <= M <= 50, 0 <= P <= 10)。分析状态dp[i][j]表示第i步时,到达状态j的字符串数,途中不能经过危险结点则状态转移方程为dp[i][j] = sum(dp[i-1][k]),其中j是k

2015-10-14 22:53:43 366

原创 POJ 1054 The Troublesome Frog

题目大意给你一块m*n的矩阵,以及num个点的坐标,含有点的数量最多的直线所含有的点的数量。要求:直线上的点间距要相等,不足3个点的记为0。若前k个点在矩阵内,第k+1个点的坐标也在矩阵内,但矩阵中不存在该点,则此直线无效。分析先对坐标按x排序,若x相等,则按y排序枚举每条直线上的**前两个点**s1 ,s2即可。计算出步长lenx = s2.x - s1.x , leny = s2.y

2015-10-10 20:48:24 464

原创 POJ 1191 棋盘分割 (DP)

题目大意输入一个8*8的矩阵,将其分解成n个矩阵,使各矩阵总分的均方差最小。均方差,其中平均值,xi为第i块矩形棋盘的总分。 分析将方差公式化简成s^2 = (x1^2+…+xn^2) / n - x^2,x为平均值dp[i][x1][y1][x2][y2]表示对于(x1,y1)(x2,y2)的矩阵,第i次分割后得到的平方和的最小值sum[x1][y1][x2][y2]表示矩形(x1,y

2015-10-09 18:31:37 305

原创 ZOJ 2319 Beautiful People (LIS的变形)

题目大意有n个人的,每个人有一个si和bi,对于i和j来说,只有当si < sj && bi < bj ,或者 si > sj && bi > bj 时,二人才不会互相讨厌。也就是说,只有两个人其中一方的s和b都小于另一方时,二人才不会互相讨厌。求最多有多少人不会互相讨厌分析给n个人按s排序从小到大,若s相等则按b从大到小排序。然后求b的最长上升子序列的长度ans即可用O(nlogn)

2015-10-08 20:06:59 403

原创 POJ 1159 Palindrome (LCS)

题目大意给出一个字符串s,求至少添加几个字符使之成为一个回文串分析求出s与s的逆序s’的最长公共子序列的长度d,然后len - d即可dp[i][j]表示s串种1…i和n…n-j的最长公共子序列的长度状态转移方程若s[i] = s[j],则dp[i][j] = dp[i-1][j-1] + 1 否则,dp[i][j] = max(dp[i][j-1] , dp[i-1][j])由于s长度

2015-10-08 18:51:07 317

原创 POJ 1080 Human Gene Functions (类似LCS)

题目大意题目给出一张5*5的映射表,分别是ACGT-,每对字符都有一个相似值。给出两个字符串,由ACGT组成,求两个字符串匹配的最大相似值和,可以用-代替字符匹配。分析类似求最长公共子序列dp[i][j]表示s1中1….i和s2中的1….j匹配的最大相似值状态转移方程dp[i][j] = max{dp[i-1][j-1]+mp[a][b] , dp[i-1][j]+mp[a][4] ,

2015-10-08 16:21:19 244

原创 POJ 1163 The Triangle (数塔)

题目大意一个n层的数塔,从第一层走到最后一层,沿途经过的数的最大值分析dp[i][j]表示到达(i , j)时的最大值状态转方程dp[i][j] = max(dp[i-1][j-1] , dp[i-1][j]) + a[i][j];代码#include <iostream>#include <cstring>using namespace std;const int maxn = 360

2015-10-08 14:05:09 276

原创 POJ 2533 Longest Ordered Subsequence (LIS)

求最长上升子序列的长度O(n^2)的算法dp[i]表示以i结尾最长上升子序列的长度状态转移方程:dp[i] = max(d[j])+1,j代码//时间复杂度O(n^2)的算法#include <iostream>using namespace std;const int maxn = 1010;int dp[maxn]; //dp[i]表示以i结尾最长上升子序列的长度int a[maxn

2015-10-08 13:02:01 273

原创 POJ 1260 Pearls (简单DP)

题目大意给出n类珠子,以及每类珠子的数量num[i]和单价val[i]。单价从小到大排序,买每一类珠子的价格是(num[i]+10)*val[i]。问买sum(num[i])的珠子,所需最少花费。其中,价格较低的珠子可有价格高的珠子替代,反之不行。分析很容易看出,珠子是不能跳跃替代的。比如说,若用第3类珠子替代第1类珠子时,则第2类珠子也要由第3类珠子替代。否则,用第2类珠子替代第1类珠子更

2015-10-08 12:10:49 429

原创 POJ 1836 Alignment (简单DP)

题目大意给出n个浮点数(2 <= n <= 1000 , 0.5 <= 浮点数 <=2.5),然后求一段序列长度ans,要求这个序列中从左到右递增,或者从右到左递增。输出n - ans分析求最长上升子序列和最长下降子序列的长度dp1[i]表示以i结尾的最长上升子序列的长度dp2[i]表示以i结尾的最长下降子序列的长度然后枚举两段区间[0,i] [j,n-1]时间复杂度O(n^2)代

2015-10-07 16:34:01 265

原创 POJ 3267 The Cow Lexicon (简单DP)

题目大意输入一个长度为m的文本串,n个模板。求在文本串中至少去掉几个字母可以完全匹配模板。(2<= m1<= 300, ≤ n ≤ 600,模板串长度 ≤ 25),全部由小写字母组成。分析dp[i]表示以i结尾的子串至少需要去掉字符数状态转移方程: dp[i] = min(dp[i] , tmp+dp[j]),其中tmp为匹配模板需要去掉的字符数,j是匹配完后的位置。初始化dp[i] = d

2015-10-05 16:57:25 317

原创 POJ 1837 Balance (简单DP)

题目大意一架天平,天平上有m个钩子,有n个砝码(2 <= c <= 20,2 <= G <= 20),天平的坐标范围为[-15,15]。给出m个钩子的坐标c[i](-15<=c<=15),以及n个砝码的重量g[j](1 <= g <= 25),要求所有砝码都要用到,求最终平衡的方案数分析dp[i][j] 表示对于前i个砝码,在平衡度为j时的方案数最大平衡度maxn = 15 * 20 *

2015-10-05 14:06:50 471

原创 POJ 1276 Cash Machine (多重背包)

题目大意给定cash,N,表示有cash现金,N种账单。每种账单的额度为D[i],数目为n[i],求在不超过cash的前提下,最多能兑换到到少money。分析对于每种额度的账单,可选择k张(0 , 1 , … , n[i]),很明显的多重背包问题。状态:dp[j]表示在剩余j的现金下,前i种账单最多能兑换到的money状态转移方程: dp[j] = max(dp[j] , dp[j-D[i

2015-10-03 15:48:18 266

原创 HDU 2243 考研路茫茫——单词情结 (AC自动机+矩阵快速幂求和)

题目大意给出n个模板,求长度小于等于m的字符串中有多少个包含这n个模板中至少一个,所有字符串均是小写字母组成,答案对2^64取模。分析对2^64取模,用unsiged __int64 即可实现自动取模转化为 总的数量-不包含模板的数量建立AC自动机,构造矩阵M,M[i][j]表示节点i走到节点j只走一步的方法数,从而 ans = (26 + 26^2 + ... + 26^m) - (M

2015-09-24 20:02:00 369

原创 POJ 2778 DNA Sequence (AC自动机+矩阵快速幂)

题目大意有m个字符串,求所有长度为n的字符串中,不包含这m个串的个数。这些串全部以A,C,G,T组成。分析把m个串构造成AC自动机然后用M[i][j]表示结点i到结点j只走1步,可行的方法数。那么矩阵M的n次方则代表i到j走n步的可行方法数。由于n最大为20亿,所以用矩阵的快速幂AC自动机上面例子是{AGC,C}构造成的AC自动机,红线是失败指针,蓝线是状态之间的转移。例如,从状态0出发走

2015-09-23 23:25:12 371

求点到线段的距离

求点到线段的距离

2014-03-20

C++计算机和常用到的一些函数

ACM计算几何:求叉积,点积,两点间的距离,点是否在线段上,点到线段的距离,判断两条线段是否相交,线段与直线的位置关系等等

2014-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除