上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 32 下一页
摘要: 题意 :有 n个 物品 价值 为a[i],个数为 b[i];求解 能够组成m以内的多少个数题解 :可以认为 到过来想 ,容量 i 被完全装满 ,按 完全装满算 即可#include<stdio.h>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#include<set>#include<map>#define Min(a,b) a>b?b:a#define Max(a,b) 阅读全文
posted @ 2012-08-10 10:18 Szz 阅读(470) 评论(0) 推荐(0)
摘要: Capturing a country Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 380Accepted Submission(s): 164Problem DescriptionAnt and Bob two army want to capture a country. The country is consist of N cities. To capture the city i, it takes Ant A[i] minu. 阅读全文
posted @ 2012-08-08 22:01 Szz 阅读(306) 评论(0) 推荐(0)
摘要: RMQ(Range Minimum/Maximum Query)问题: RMQ问题是求给定区间中的最值问题。当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的算法效率不够。可以用线 段树将算法优化到O(logn)(在线段树中保存线段的最值)。不过,Sparse_Table算法才是最好的:它可以在O(nlogn)的预处理以后实 现O(1)的查询效率。下面把Sparse Table算法分成预处理和查询两部分来说明(以求最小值为例)。预处理:预处理使用DP的思想,f(i, j)表示[i, i+2^j - 1]区间中的最小值,我们可以开辟一个数组专门来保存f(i,j 阅读全文
posted @ 2012-08-06 15:04 Szz 阅读(597) 评论(0) 推荐(0)
摘要: 其实这题用欧几里德扩展原理可以很快的解决,先来看下什么是欧几里德扩展原理: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 假设d 是(b,a mod b)的公约数,则 d | b , d |r ,但是a = kb +r 因此d也是(a,b)的公约数 因此(a,b)和(b,a mod... 阅读全文
posted @ 2012-08-05 15:35 Szz 阅读(1020) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=3767 1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 #include<set> 8 #include<map> 9 #define Min(a,b) a>b?b:a 10 #define Max(a,b) a>b?a:b 11 #defin 阅读全文
posted @ 2012-07-31 10:28 Szz 阅读(251) 评论(0) 推荐(0)
摘要: 在这求第 k 短路用的是,A*+dij 所谓的A* 是一种启发式搜索,他给搜索选定一定的方向,避免了,无谓的搜索,如何来确定搜索的顺序?..也就是用一个值来表示这个值为f[x]..每次搜索取f[x]最小的拓展...那么这个f[x]=h[x]+g[x]其中这个h[x]就是当前搜索时的代价..如求K段路这个就是前一个点的h[x']+边的长度...而g[x]是一个估价函数..估价函数要小于是对当前点到目标的代价的估计..这个估计必须小于等于实际值~~否则会出错...A*的关键也就是构造g[x]..,我们的dij 算法。最短路是,就是一种 A* 搜索,其中 g[x]=0;而这里要说的求K短路一 阅读全文
posted @ 2012-07-31 09:27 Szz 阅读(1668) 评论(0) 推荐(0)
摘要: http://lghjx.573114.com/Blog/Html/103D/275536.html下面的不是很清楚 ,这个 比较好。简介: 详情 前参见 国家集训队论文 2007年 胡伯涛 论文题意:求存在一个环路,所有的点权之和/所以的边权之和 最大是多少?http://poj.org/problem?id=3621算法:此题是对01分数规划的应用,那么首先明白01分数规划的思想.01分数规划的思想的描述如下:令c=(c1,c2,…,cn)和d=(d1,d2,…,dn)为n维整数向量,那么一个0-1分数规划问题用公式描述如下:FP:最小化(c1x1+…cnxn)/(d1x1…dnxn)=c 阅读全文
posted @ 2012-07-29 16:56 Szz 阅读(1650) 评论(0) 推荐(0)
摘要: 题解最小度限制生成树 ,详解减:http://wenku.baidu.com/view/70ef0e00eff9aef8941e06db.html 要求最小 k 度生成树,我们可以按照下面的步骤来做:设有度限制的点为 V0 ,V0称为根节点1,把所有与 V0 相连的边删去,图会分成多个子图(假设为 m 个,显然的,如果 m > k,那么问题无解),让他们分别求最小生成树;然后用最小的代价将 m 个最小生成树和 V0 连起来,那我们就得到了一棵关于 V0 的最小 m 度生成树。2,在 m 度生成树中找一个点和 V0 相连(设这条边的权值为 a),会生成一个环,为了满足最小生成树的要求,我们 阅读全文
posted @ 2012-07-28 14:24 Szz 阅读(388) 评论(0) 推荐(0)
摘要: 1009直接贪心。类似于SPFA算法。我们要求损耗最小,也就是剩余最大。对于每个节点,我们记录起当前可以达到的剩余最大电力。和 Dijkstra算法相似,我们这里每次找寻的是尚未标记的拥有最大值的结点,并把这个最大值作为当前结点的最终结果,标记此结点并通过当前结点拓展与之 相连的结点。因为从一个结点传输电力到另一个几点,电力的总量是不会增加的。所以,在以后的贪心过程中,不会更新之前已经标记的结点,因为不可能有更大的 值。这样只要求得最后到达t的最大剩余电力就能得出答案。View Code #include<cstdio>#include<cstring>#include 阅读全文
posted @ 2012-07-26 20:34 Szz 阅读(265) 评论(0) 推荐(0)
摘要: 高精度除法:(利用了 减法)http://poj.grids.cn/practice/2737/原理 : 例如 a=13455 除以 b=3先把 3 增大为 30000不够减 右移一位 变为 3000 这样不断的减直到 不够减 为 1456 则 可知 商的 千位 为 4(因为 3000 是 3 的 1000倍)这样 3000 在右移一位 300依此类推 得到 百位、十位,个位; #include<stdio.h>#include<string.h>const int maxn=300;int a[maxn],b[maxn],c[maxn];char str1[maxn] 阅读全文
posted @ 2012-07-25 21:47 Szz 阅读(243) 评论(0) 推荐(0)
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 32 下一页