2013年9月5日

fcntl()

摘要: fcntl()F_GETFL--------------------------------------------- 将文件状态标志作为函数值返回。 文件状态标志: O_RDONLY O_WRONLY O_RDWR O_APPEND O_NONBLOCK O_SYNC FASYNC(O_ASYNC) 三个存取方式标志(O_RDONLY, O_WRONLY, O_RDWR)是互斥的,一个文件只能有这三种值的其中一个。首选需要用屏蔽字O_ACCMODE取得存取方式位,然后将结果与这三个标志相比较。 F_SETFL-------------------------------... 阅读全文

posted @ 2013-09-05 15:57 矮人狙击手! 阅读(795) 评论(0) 推荐(0) 编辑

2012年8月23日

poj1200

摘要: 这题用hash做。算法导论上面讲的很清楚 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 char s[16000005]; 5 int a[100000]; 6 int hash[16000005]; 7 int main() 8 { 9 int n,nc;10 11 memset(hash,0,sizeof(hash));12 memset(a,0,sizeof(a));13 scanf("%d %d ",&n,&nc);14 scanf(&quo 阅读全文

posted @ 2012-08-23 10:05 矮人狙击手! 阅读(217) 评论(0) 推荐(0) 编辑

2012年8月22日

poj2513

摘要: 这道题很有意思大致题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。解题思路:可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点,把木棒看成边,这样相同的颜色就是同一个节点问题便转化为:给定一个图,是否存在“一笔画”经过涂中每一点,以及经过每一边一次。这样就是求图中是否存在欧拉路Euler-Path。回顾经典的“七桥问题”,相信很多同学马上就明白了什么是 欧拉路 了,这里不多作解释。由图论知识可以知道,无向图存在欧拉路的充要条件为:① 图是连通的;② 所有节点的度为偶数,或者有且只有两个度为奇数的节点。其中①图的连 阅读全文

posted @ 2012-08-22 19:18 矮人狙击手! 阅读(448) 评论(0) 推荐(0) 编辑

POJ2503

摘要: 这是一道关于搜索的题,hash,需要用到一个字符串散列函数 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define M 100003 // 槽数,最好用素数 5 struct node{ 6 int hash; 7 struct node *next; 8 }*link[M]={NULL}; 9 char word[100000][11],dialect[100000][11];10 11 12 int ELFhash(char *key)// UNIX 系统ELF字符串 阅读全文

posted @ 2012-08-22 15:24 矮人狙击手! 阅读(396) 评论(0) 推荐(0) 编辑

2012年8月20日

hdu2823

摘要: 线段树原来遇到过了,不过自己写还是很容易出现问题,特别是递归的时候总是忘记返回,这样老是会爆栈还有,好像分析问题的能力很欠缺,而且宏观的概念不是很好,其实感觉写递归就两点,第一宏观上整体把握,第二细节上仔细认真这道题还是整了我很久,真的不太 清楚别人到底是怎么想出来的,反正我是无能为力了。还是先学习这把,突然让我心里升起了征服的欲望还是回头继续说这道题把,关于线段树的优点不言而喻了,把整个大区间分成了一个一个的小区间,这道题恰好利用了这个性质,更改的时候整个区间一块更改了这里的标记兼价值flag很有意思,这样来解释下把,初始化为1,当线段树中的父节点的所有子节点的flag都一样时,父节点的fl 阅读全文

posted @ 2012-08-20 00:25 矮人狙击手! 阅读(399) 评论(0) 推荐(0) 编辑

2012年8月19日

poj2823

摘要: 典型的线段树,很长时间没有写了,好多次都直接用的是模板,这次自己写了下,多多少少还是出了点问题 1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 int a[1000005]; 5 int n,k; 6 struct node 7 { 8 int left ; 9 int right;10 int max;11 int min;12 };13 node tree[1000005*4];14 int MIN[1000005],MAX[1000005];15 16 int Max(... 阅读全文

posted @ 2012-08-19 19:27 矮人狙击手! 阅读(727) 评论(0) 推荐(0) 编辑

2012年8月18日

poj1934(最大公共子数列)

摘要: 这道题完全没有思路。唉,可悲看了大牛的思路才发现,人才啊,都是人才啊我拿过来学习下这道题大致分为三个步骤1 求最大公共子串(LCS),这个应该是比较简答的方法,主要是动态转移方程,这里设i,j是字符串a,b的下标,dp[i][j]表示a的0~i ,b的0~j的最大公共子串 动态转移方程分为两种情况: (1)a[i]==b[j] dp[i][j]=dp[i-1][j-1]+1; (2)a[i]!=[j] dp[i][j]=max(dp[i-1][j],dp[i][j-1]);2用两个变量last1[i][j], last2[i][j]来分别保存字符j(a的序号为0,b的序号为1,.....z的序 阅读全文

posted @ 2012-08-18 23:37 矮人狙击手! 阅读(598) 评论(0) 推荐(0) 编辑

LCS

摘要: 关于最大公共子序列,自己写了个程序程序只要输入两个字符串就ok了一直不明白:最长公共子串和最长公共子序列的区别。 上网查了下,最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续 1 #include 2 #include 3 #include 4 using namespace std; 5 char a[2005]; 6 char... 阅读全文

posted @ 2012-08-18 21:26 矮人狙击手! 阅读(269) 评论(0) 推荐(0) 编辑

poj1014(背包问题)

摘要: 这道题个人觉得至少有三种解法,第一种背包,第二种dfs,第三种母函数这道题我用的是背包问题来求的,首先这个问题是多重背包问题,看了背包九讲,多重背包可以转化为01背包,这道题继续把他转化了,因为如果数据过大,效率就得不到保证,为了提高效率,采用了二进制拆分的方法,关于二进制拆分的方法简答来说是这样的:假设原来某一种类的珠宝数量为N,我们可以把N拆成1,2,4,8,……,2^(k-1),N-2^k+1。这些拆分成的数字能够表示1~N之间的任何一个数。这样,我们就把物品数减小为logN(以2为底,向上取整)。这样把原来的物体转化为了一个一个的单位,以单位计算,这样就成功的把多重背包问题转化为了纯粹 阅读全文

posted @ 2012-08-18 17:20 矮人狙击手! 阅读(2730) 评论(0) 推荐(0) 编辑

多重背包二进制优化

摘要: 转自:http://blog.csdn.net/ronhou/article/details/7738014取模优化当输入样本特别大时,比如给出上百万件物品,这时候仅靠优化算法仍然不能使运行时间降到满意的范围。可考虑如何减少输入样本。poj1014的discussion上有一个非常巧妙的“取模优化”法。设价值为v(1<=v<=6)的物品共有n件,我们希望找到一个比较小的数s(s<n), 且将n件物品v减少到s或s-1件,问题的可分性不变。考虑不可分和可分两种情况:如果该问题不可分,那么n-2件v仍然不可分,依次类推,用s或 s-1替换n仍然不可分如果该问题可分,即可分成价值相 阅读全文

posted @ 2012-08-18 15:32 矮人狙击手! 阅读(963) 评论(0) 推荐(0) 编辑

导航