Visitors hit counter dreamweaver

05 2012 档案

摘要:下面是一种简答素数打表法:#include <iostream>#include <fstream>#include <math.h>using namespace std;#define N 100000 bool p[N]; //判断p[i]中的i是否为素数int pn[N]; //存储素数void prim_num(){ int i,j,n; for(i=1; i<=N; i++) p[i]=true; n=(int)sqrt(N); for(i=2; i<=n; i++) { for(j=i+i; j<=N; j+=i... 阅读全文
posted @ 2012-05-19 23:29 Jason Damon 阅读(2621) 评论(0) 推荐(0) 编辑
摘要:记住这个公式就OK了。for i=1..N for v=w[i]..V f[v]=max{f[v],f[v-w[i]]+v[i]}.这样就转换成为了0/1背包问题是一样的,只不过第二个循环的顺序不一样而已。#include<iostream>#include <fstream>#define MIN(a,b) (a<b?a:b)#define INF 9999999#define MAXN 505#define MAX 10001using namespace std;int t,n,d,e,g;int v[MAXN],w[MAX],f[MAX];int main 阅读全文
posted @ 2012-05-19 21:45 Jason Damon 阅读(286) 评论(0) 推荐(0) 编辑
摘要:AC的代码:#include <iostream>#include <fstream>using namespace std;#define MAX(a,b) (a>b?a:b)#define N 12881#define M 3403int value[N];int W[M],D[M];int main(){ int n,m,i,j; freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { for(i=1; i< 阅读全文
posted @ 2012-05-11 21:32 Jason Damon 阅读(260) 评论(0) 推荐(0) 编辑
摘要:和poj2533是一样的。#include <iostream>#include <fstream>using namespace std;#define MAX(a,b) (a>b?a:b)#define MAXN 100005int A[MAXN],D[MAXN];int main(){ int i,j,ca,max,len,n; ca=1; freopen("in.txt","r",stdin); while(1) { //memset(D,0,sizeof(D)); i=1; len=0; whil... 阅读全文
posted @ 2012-05-10 23:24 Jason Damon 阅读(212) 评论(0) 推荐(0) 编辑
摘要:问题描述:给出一个序列a1,a2,a3,a4,a5,a6,a7….an,求它的一个子序列(设为s1,s2,…sn),使得这个子序列满足这样的性质,s1<s2<s3<…<sn并且这个子序列的长度最长。输出这个最长的长度。例如有一个序列:1 7 3 5 9 4 8,它的最长上升子序列就是 1 3 4 8 长度为4解题思路: 用A[]存储输入的数。D[i]表示以i结束所能得到的最大上升字串,对于每个i,遍历1<=j<i;如果A[i]>A[j] && D[i]<=D[j],则表明A[i]可以加入到A[j]后面,则D[i]=D[j]+1; 阅读全文
posted @ 2012-05-10 22:20 Jason Damon 阅读(1528) 评论(0) 推荐(0) 编辑
摘要:/* * ===================================================================================== * * Filename: poj2568 * * Description: 建一个数组,判断五个里面至少要多少个d才能满足 * deficit的条件,然后就是贪心每次找最远的一个,标记成d * 如果4个d都不能满足,则也输出deficit. * 看了比人枚举也能得出结果。非常简洁。单数如果范围再大点就不行 * ... 阅读全文
posted @ 2012-05-09 01:15 Jason Damon 阅读(283) 评论(0) 推荐(0) 编辑
摘要:昨天把贪心看了一下。开始进入贪心的学习。/* * ===================================================================================== * * Filename: poj 1328 * * Description: 贪心+qsort * 先用计算出要覆盖每个点所需要在x轴上的区间(关键是要理解这点,不懂的可以看看程序)。用Node结构体存储。 * 注意要用double.因为sqrt要求的是double.然后每次从右边开始判断(即找 * ... 阅读全文
posted @ 2012-05-08 13:38 Jason Damon 阅读(290) 评论(0) 推荐(0) 编辑
摘要:题目不难。但是要做出来也要些耐心呀。考虑各种情况。 这题是边输入边判断的,所以当能判断出结果的时候,要继续输入,把剩下的数据继续输入完,不然会影响下一次的输入。其他的就没什么要注意的了吧。该注意的我都在程序里注释了。感觉这题麻烦就麻烦再判断移动的move函数里面,都是重复的操作。应该可以优化吧。 写完后我以为我的代码太长了。。。看了别人的,其实也差不多。呵呵。有空再想想怎么尽量优化吧。/* * ===================================================================================== * * File... 阅读全文
posted @ 2012-05-07 13:18 Jason Damon 阅读(388) 评论(0) 推荐(0) 编辑
摘要:呵呵,自己去思考的就是不一样啊!!加油!孩子~/* * ===================================================================================== * * Filename: main.cpp * * Description: poj 1068 模拟题 * 我是用数组存储括号,左括号标记为0,右括号标记为1;然后再用一个 * bool型used[]数组标记该括号是否已经匹配过。 * 每次输入一个数的时候都可以得到一个匹配,然后从这个... 阅读全文
posted @ 2012-05-07 00:02 Jason Damon 阅读(300) 评论(0) 推荐(0) 编辑
摘要:/* * ===================================================================================== * * Filename: main.cpp * * Description: poj 1008 * * Version: 1.0 * Created: 2012/5/6 22:28:05 * Revision: none * Compiler: gcc * * Author: Jason Damon * ... 阅读全文
posted @ 2012-05-06 22:30 Jason Damon 阅读(231) 评论(0) 推荐(0) 编辑
摘要:直接套用匈牙利算法就OK了。非常简单,非常适合入门。当时复习匈牙利算法了。好了,图论算法先适可而止吧。。。因为校赛上面不会出得太难的,下一步要去看动态规划和贪心了。。加油加油!!/* * ===================================================================================== * * Filename: main.cpp * * Description: poj1274 * * Version: 1.0 * Created: 2012/5/6 11:05:0... 阅读全文
posted @ 2012-05-06 11:07 Jason Damon 阅读(967) 评论(2) 推荐(0) 编辑
摘要:转自:http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.aspx使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了<stdio.h>风格的转换,也许你首先会问:为什么要花额外的精力来学习基于<sstream>的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprint 阅读全文
posted @ 2012-05-03 00:25 Jason Damon 阅读(376) 评论(0) 推荐(0) 编辑
摘要:这题把floyd和bellman-ford两种方法都概括了,所以很值得一做。 题意:根据给出的关系图,判断是否存在一条从1到n的路径,且最终的cost值为正值,初始值为100。中间各个room的值有正有负。但在求路径的时候,任何一点的value都不能小于或者等于零,否则这条路就不能通。当然,如果有正环,并且可以从1到n是连通的,那么就一定winnable。 思路:先用floyd判断是否节点的连通性。并且判断1到n是否连通,不连通则hopeless。然后再用bellman-ford来判断1到n是否存在一条正权通路,或者存在正环。当然,dist为负的节点不用去判断,因为如果为负,则这条通路就会成. 阅读全文
posted @ 2012-05-01 18:53 Jason Damon 阅读(456) 评论(0) 推荐(0) 编辑
摘要:这题比3041要有点难度,主要是在判断节点的时候,要两次扫描输入的矩阵。这个叫我shi也想不到啊。。人家discuss里面给了很好的模板,学着点吧。具体的分析请看下面:转自:http://www.cppblog.com/abilitytao/archive/2009/10/21/99124.aspxSample:4 4*.*..******...*.把行里面连在一起的坑连起来视为一个点,即一块横木板,编上序号,Sample则转化为:1 0 2 00 3 3 34 4 4 00 0 5 0把这些序号加入X集合,再按列做一次则为:1 0 4 00 3 4 52 3 4 00 0 4 0同样加入Y. 阅读全文
posted @ 2012-05-01 00:54 Jason Damon 阅读(235) 评论(0) 推荐(0) 编辑
摘要:http://imlazy.ycool.com/post.1603708.html看了这能很好的理解二分图的最大匹配问题。 这题要会把row和col转换成为两个顶点集,(x,y)看成边。问题就转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题。在二分图中,最小点覆盖数=最大匹配数。所以可以用匈牙利算法解决。 二分图最大匹配的匈牙利算法看了好久,现在终于有点眉目了。加油哟!!#include <iostream>#include <fstream>using namespace std;#define MAXN 501int N,K; 阅读全文
posted @ 2012-05-01 00:41 Jason Damon 阅读(356) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示