IT民工
加油!
摘要: 这道题开始以为是求最小生成树,然后写出来之后发现和样例输出不符合,再看了一遍题,发现求所有的点之间的最大通信成本D。其中有s个卫星频道,可以和任一点连线。我们要降低成本的话就是让远的点用卫星频道,用kruskal算法合并到有 P - S棵树组成的森林,其中后S个点分别单独为一棵树,使用卫星频道。前面的点用的则为radio通信,然后合并到符合条件时取得的边为radio的最大边。#include<stdio.h>#include<math.h>#include<stdlib.h>#include<string.h>#define MAXD 510in 阅读全文
posted @ 2011-12-03 22:38 找回失去的 阅读(218) 评论(0) 推荐(0) 编辑
摘要: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1219这道题先用floyd算法求出所有点之间的距离,然后枚举判断每个点到其他点的最大距离,找出其中最小的一个,如果发现其中有一个点不可到其他点,则输出Can not。#include<stdio.h>#include<stdlib.h>#define MAXD 105#define INF 1000007int d[MAXD][MAXD];int n, m, u, v, w, max, mini;bool flag;int min( int a, int b){ retu 阅读全文
posted @ 2011-12-03 20:45 找回失去的 阅读(249) 评论(0) 推荐(0) 编辑
摘要: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1212这道题要找到中位数,我的方法是将两个序列的数字比较,然后将小的那个放入s中,当s的计数器过了N后,就可以跳出比较的循环,输出s[N]。#include<stdio.h>#include<stdlib.h>#define MAXD 100005int s[MAXD], N, a[2 * MAXD];int main(){ while( scanf( "%d", &N) == 1) { for( int i = 1; i <= 2 * 阅读全文
posted @ 2011-12-03 20:38 找回失去的 阅读(312) 评论(1) 推荐(0) 编辑
摘要: 递推,状态转移方程:dp[j] = dp[j - a[i]]; 依题意a[i] = i^3.#include<stdio.h>#include<string.h>#define MAXD 10005long long dp[MAXD], a[25];int N;int main(){ for( int i = 1; i <= 21; i ++) a[i] = i * i * i; memset( dp, 0, sizeof dp); dp[0] = 1; for( int i = 1; i <= 21; i ++) for( int j = ... 阅读全文
posted @ 2011-12-03 00:15 找回失去的 阅读(201) 评论(0) 推荐(1) 编辑