算法
文章平均质量分 55
weber-xie
这个作者很懒,什么都没留下…
展开
-
ZOJ 3167 Find 7 Faster Than John Von Neumann
#include#includemain(){ int k,m,n,t,i; int dig[100]; while(scanf("%d%d",&k,&m)!=EOF) { for(i=0;i dig[i]=0; t=1;dig[0]=1;原创 2012-08-04 18:14:09 · 984 阅读 · 0 评论 -
彻底理解各种排序算法
有个小小的强迫症,总感觉写上转载,使得标题前面是黑色很让人讨厌,但还是要分享过来!转自:排序1、冒泡排序(Bubbler Sort)前面刚说了冒泡排序的坏话,但冒泡排序也有其优点,那就是好理解,稳定,再就是空间复杂度低,不需要额外开辟数组元素的临时保存控件,当然了,编写起来也容易。其算法很简单,就是比较数组相邻的两个值,把大的像泡泡一样“冒”到数组后面去,一共要执行N的平方除以原创 2013-09-26 22:20:17 · 1224 阅读 · 0 评论 -
单调队列-poj2823
一下对单调队列的讲解来自:http://xuyemin520.is-programmer.com/posts/25964给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k.要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0,1,...,N-1问题的另一种描述就是用一个长度为k的窗在整数数原创 2013-10-20 18:23:49 · 1167 阅读 · 0 评论 -
利用运算符重载将结构体排序--uva11729
在国内上uva很慢,还好bnuoj有uva的题,很有爱(⊙o⊙)哦,代码参考自刘汝佳的训练指南题目链接:点击打开链接#include#include#includeusing namespace std;#define N 1002struct Job{ int j,b; bool operator < (const Job& x) const{//运算符重载! re原创 2013-11-06 19:54:21 · 1991 阅读 · 0 评论 -
KMP算法
int KMPMatch(char *s,char *p){ int next[100]; int i,j; i=0; j=0; getNext(p,next); while(i<strlen(s)) { if(j==-1||s[i]==p[j]) { i++;原创 2014-03-06 18:27:20 · 796 阅读 · 0 评论 -
poj 3253 Fence Repair
类似Huffman编码,越短的板在二叉树中深度越大如排序后的序列:L1、L2、L3、L4、L5....LN(L1+L2)为最短的两个之后,插入L3、L4、L5....LN中重复上述步骤直至只剩一块板为止#include#include#includeusing namespace std;#define MAX_N 20002typedef long long ll;i原创 2014-04-17 00:35:29 · 949 阅读 · 0 评论 -
poj 3069Saruman's Army 贪心
#include#include#includeusing namespace std;#define MAX_N 1002int x[MAX_N];int r,n;int main(){ while(cin>>r>>n && r+n != -2) { for(int i=0;i<n;i++) cin>>x[i]; sort(x,x+n); int i=0,a原创 2014-04-16 23:19:15 · 942 阅读 · 0 评论 -
poj 3624 Charm Bracelet
标准的01背包#include#includeusing namespace std;#define MAX_N 3405int w[MAX_N],d[MAX_N];int dp[12881];int main(){ int n,m; cin>>n>>m; memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) cin>>w[i]>原创 2014-04-17 16:46:42 · 866 阅读 · 0 评论 -
poj 1664 放苹果
动态规划解DP问题考虑n的m划分a1+...am=n对于每个ai都有ai>0,那么{ai-1}就对应了n-m的m划分,如果存在ai=0那么就对应了n的m-1划分。综上可得出如下递推关系dp[i][j]=dp[i][j-i]+dp[i-1][j]#include#include#includeusing namespace std;int dp[12][12];int main原创 2014-04-18 20:13:02 · 895 阅读 · 0 评论 -
poj Common Subsequence 最长公共子序列
真的很水,,原谅我吧#include#include#include#includeusing namespace std;const int N=1002;int dp[N][N];char a[N],b[N];int main(){ while(scanf("%s %s",a,b)!=EOF) { int n=strlen(a); int m=strlen(b原创 2014-04-17 19:45:11 · 831 阅读 · 0 评论 -
poj 1742 Coins
动态规划,多重部分和问题,,数组得要重复利用,不然会MLE。。#include#include#includeusing namespace std;int dp[100000+2];int a[100+2];int c[100+2];int main(){ int n,m; while(scanf("%d %d",&n,&m)&&(n+m)!=0) { for(in原创 2014-04-18 19:02:07 · 957 阅读 · 0 评论 -
日志结构的合并树 The Log-Structured Merge-Tree
日志结构的合并树 The Log-Structured Merge-Tree近年来,随着互联网数据的日益增长,管理分布式数据需求的日益增加,Bigtable[1]等一系列NoSQL数据库开始涌现。Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据,其在提供Tablet服务时使用内存中的memtable和GFS[2]中的SSTable来相互配合着来存储数据转载 2014-05-18 22:28:25 · 1103 阅读 · 0 评论 -
Strassen's Subcubic Matrix Multiplication Algorithm
Consider multiplying two 2x2 matrices, as follows:A B * E F = AE+BG AF+BHC D G H CE+DG CF+DHThe obvious way to compute the right side is just to do the 8 multiplies and 4 additions.原创 2013-09-24 09:00:55 · 1250 阅读 · 0 评论 -
poj 3624 Charm Bracelet 01背包问题
题目链接:poj 3624 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即F [i, v]表示前i件物品恰放入一个容量为v 的背包可以 获得的最大价值。则其状态转移方程便是: F [i, v] = max{F [i − 1, v], F [i − 1,原创 2013-09-15 19:41:14 · 2026 阅读 · 0 评论 -
zoj 1730 / poj 1455 Crazy Tea Party
这阵子都没怎么写代码,由于开学,忙于各种琐碎的事情,现在静下来了开始跟着暑假的节奏刷题了。 这道题一开是没看清题目~在寝室刷题就是效率不高。。。 后来才知道,题目意思是,一个环形序列,1minute可以交换相邻的两个位置,问逆序所需的最小时间是多少。 如果不是环形的话那就好办了,就是个冒泡。 非环形时:原创 2013-09-03 12:37:33 · 1147 阅读 · 0 评论 -
ZOJ题型分类
ZOJ题型分类 初学者题:1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1334 1337 1338 1350 1365 1382 1383 1394 1402 1405 1414 1494 1514 1622 1715转载 2013-04-09 09:28:03 · 1305 阅读 · 0 评论 -
POJ 1521 Entropy
Huffman树:题目链接:POJ1521#include#include#includeusing namespace std;int t[100],len;char c[1000];int huffman(){ int a,b,c,sum=0; priority_queue,greater >q;//priority_queue,greater > q;原创 2013-06-12 23:48:53 · 1217 阅读 · 0 评论 -
棋盘覆盖问题
题目描述: 在一个2k´2k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊(残缺)方格,且称该棋盘为一特殊棋盘。 根据特殊方格出现的位置,有种 4k不同的特殊棋盘。 棋盘覆盖问题:用 4 种不同形态的 L 型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L 型骨牌不得重叠覆盖。 分治法:2k´2k棋原创 2013-06-14 14:03:41 · 1180 阅读 · 0 评论 -
poj 1661 Help Jimmy
题目链接:http://poj.org/problem?id=1661 标准的DP,首先将输入数据按高度进行排序,将开始下落的位置初始化为左右坐标均为x,高度为y的平台(方便统一处理),然后从上至下搜寻最短路径。。 DP的思想已经掌握了,但是各种细节的处理还是远远达不到,这里贴出大神的代码,以示参考 #include#include#include#inc原创 2013-07-28 10:12:52 · 969 阅读 · 0 评论 -
POJ 2255 Tree Recovery
发现自己懒得思考,不能一直刷一眼就看出结果的水题吧? 思路: 根据二叉树前中后续遍历的特性 1、前序遍历的第一个字母必是 根2、在中序遍历的字母串中找出 根字母,那么根字母左右两边的字符串就分别是它的左、右子树3、利用递归复原二叉树(把子树看作新的二叉树)4、后序遍历特征:后序遍历字母串 自右至左原创 2013-08-05 15:48:28 · 1004 阅读 · 0 评论 -
ZOJ 1589 Professor John ~Floyd算法
这题用Floyd和Dij都可以,但是感觉用Floyd会十分方便,也是第一次使用Floyd算法,一开始没有这个思路滴,参考别人的。。~~~~(>_<)~~~~ #include#include#includeusing namespace std;int main(void){ int ncases,n,i,j,k; int map[30][30],mark[30原创 2013-08-05 11:11:56 · 1359 阅读 · 0 评论 -
ZOJ 1092 Arbitrage Floyd算法
简单的Floyd算法的使用,初始时map对角线上置为1,使用floyd算法处理后只需检查对角线上有没有大于1的,有则赚到了(*^__^*) ! #include#includeint main(void){ int n,t,i,j,k,x,y,count = 1; char c[32][35],temp1[35],temp2[35]; double map[32][32],p原创 2013-08-06 09:17:40 · 1181 阅读 · 0 评论 -
并查集及其应用
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 并查集的操作: 1、查找某元素x所在集合 首先定义x的父节点为f(x),则查找x所在集合的操作即为查找x节点的祖先。原创 2013-08-08 15:48:43 · 1189 阅读 · 0 评论 -
poj 3984 迷宫问题 bfs
学会这道水题之后我懂得了不少哈,首先水题也能学到不少知识,尤其像我这样刚入门的小菜鸟,能学到一些小技巧。 然后就是可以从别人的代码里学到不一样的思路和想法。 这题就是求最短的路径,首先想到就是用bfs,但是求到最短之后不知道怎么输出了咋办?很着急有木有??? 基本的广搜题已经做的挺熟练的,但是这个记录路径还是原创 2013-08-09 09:54:12 · 2438 阅读 · 0 评论 -
zoj 2277 The Gate to Freedom
N^N = X ---> Nlog10(N) = log10( X ) ----> X的最高位为 10^( Nlog10(N) - (long long int )Nlog10(N) )的第一个非0位 #include#includeint main(void){ double n; while(scanf("%lf",&n) != EOF原创 2013-08-16 17:07:56 · 1131 阅读 · 0 评论 -
qsort 与 sort 对结构体排序
struct circle{ int begin,end;}circle[10002];typedef struct circle CIR;//qsort的比较函数int cmp( const void *a,const void *b){ return ((CIR*)a)->end - ((CIR*)b)->end;}//sort的比较函数bool cmp1(CIR a,原创 2013-08-28 20:58:39 · 3788 阅读 · 0 评论 -
poj 2431 Expedition 贪心+最大堆
当油量不够时从走过的油站中选最大加油量的#include#include#include#includeusing namespace std;#define MAX_N 10005struct node{ int dist,fuel;}t[MAX_N];bool cmp(const node &a,const node &b){ return a.dist<b.dis原创 2014-04-27 23:39:04 · 974 阅读 · 0 评论