上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 182 下一页
摘要: bfsView Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define maxl 50#define maxn 105struct Elem{ int age; char name[maxl];}decendant[maxn];struct Edge{ int v, next, w;}edge[maxn];int n;int head[maxn 阅读全文
posted @ 2012-07-10 10:31 undefined2024 阅读(192) 评论(0) 推荐(0)
摘要: dp,这一题是没有后效性的,只要在保证了每个子问题时间最少的基础上在追求运送次数最少即可。是不会有运送次数减少了,而时间却增多了的情况的。所以时间最优是次数最优的前提。所以状态转移的时候,只要从自问题的时间最优的情况来,肯定没错。f[i] = max(f[j], arrive_time[i]) + each_time * 2View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define max 阅读全文
posted @ 2012-07-10 09:59 undefined2024 阅读(237) 评论(0) 推荐(0)
摘要: 题意:给定n个数,从中选出连续的若干个,使得和为n的倍数。多解时输出任意解。分析:设sum[0]=0,sum[i]表示数列中第1~i个数的和对n取余的结果。那么现在有sum[0~n],n+1个整数,分布在区间[0,n-1]上的n个整数点上,则至少有两个数会分布在同一个整数点,即存在sum[i]==sum[j]且i!=j。这样以来第i+1~j个数即为所求。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace 阅读全文
posted @ 2012-07-09 17:57 undefined2024 阅读(509) 评论(0) 推荐(0)
摘要: dpf[i] = max(f[i], sum(i~i+j-1) + f[i + j * 2]) 或者 f[i] = f[i + 1]View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 10005int n, m;int dis[maxn];int f[maxn];int sum[maxn];void input(){ scanf("%d%d", &am 阅读全文
posted @ 2012-07-09 16:22 undefined2024 阅读(179) 评论(0) 推荐(0)
摘要: 题意:求区间[l,u]内,距离最近的两个素数,和距离最远的两个素数。区间长度最大1000000,l和u都在int范围内。分析:由于l,u在2^31内,所以先从1到2^16筛素数。这些素数足以用来判断2^31内的所有数字是否为素数,对于每对l,u,用已知的1~2^16内的素数圈定一个可以筛l,u之间的数字的范围,来筛l,u之间的数字。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>using 阅读全文
posted @ 2012-07-09 15:58 undefined2024 阅读(938) 评论(0) 推荐(0)
上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 182 下一页