上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页
摘要: 题目大意:这个也是关于Flood fill的,给一个0和1构成的矩阵,指定一个位置(该位置值为1),计算包含该位置的连通分量中元素的个数。 1 #include 2 #include 3 #include 4 #define MAXN 110 5 6 int G[MAXN][MAXN]; 7 bool vis[MAXN][MAXN]; 8 int n, m, ans; 9 10 void dfs(int x, int y)11 {12 if (x = n || y = m || vis[x][y] || !G[x][y]) return;13 vis[x][y] ... 阅读全文
posted @ 2013-09-11 21:21 xiaobaibuhei 阅读(418) 评论(0) 推荐(0)
摘要: 题目大意:和UVa 572 - Oil Deposits一下,寻找“八连块”的个数。用DFS解决。 1 #include 2 #include 3 #define MAXN 30 4 5 int n; 6 int G[MAXN][MAXN]; 7 bool vis[MAXN][MAXN]; 8 9 void dfs(int i, int j)10 {11 if (i = n || j = n || vis[i][j] || !G[i][j]) return;12 vis[i][j] = 1;13 dfs(i-1, j-1); dfs(i-1, j); ... 阅读全文
posted @ 2013-09-11 18:33 xiaobaibuhei 阅读(350) 评论(0) 推荐(0)
摘要: 题目大意:给出2*n个点,将这些点配成n对,使得所有点对中两点的距离之和尽量小。 用一个整数的二进制形式表示一个集合的子集,以每个集合为状态进行状态转移。具体参见《算法竞赛入门经典》9.5。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct Point 8 { 9 int x, y;10 } point[20];11 double dp[1<<16+10];12 13 double dis(int a, int b)14 {15 int x_diff = p... 阅读全文
posted @ 2013-09-10 21:28 xiaobaibuhei 阅读(186) 评论(0) 推荐(0)
摘要: 题目大意:给一个序列,求最大连续和。 用sum[i]表示前i个元素之和,那么以第i个元素结尾的最大连续和就是sum[i]-sum[j] (j 2 #include 3 using namespace std; 4 5 int main() 6 { 7 #ifdef LOCAL 8 freopen("in", "r", stdin); 9 #endif10 int n;11 while (scanf("%d", &n) && n)12 {13 int sum = 0, lmin = 0;14 int x, ans 阅读全文
posted @ 2013-09-10 17:14 xiaobaibuhei 阅读(359) 评论(0) 推荐(0)
摘要: 题目大意:这个也是和UVa 836 - Largest Submatrix差不多,修改一下数据就可以套用代码的。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 110 6 7 int mat[MAXN][MAXN], sum[MAXN][MAXN]; 8 9 int main()10 {11 #ifdef LOCAL12 freopen("in", "r", stdin);13 #endif14 int T;15 scanf("%d", & 阅读全文
posted @ 2013-09-10 16:13 xiaobaibuhei 阅读(303) 评论(0) 推荐(0)
摘要: 题目大意:和UVa 836 - Largest Submatrix差不多,只需要修改一下数据就可以了。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 110 6 7 int mat[MAXN][MAXN], sum[MAXN][MAXN]; 8 9 int main()10 {11 #ifdef LOCAL12 freopen("in", "r", stdin);13 #endif14 int m, n, x;15 while (scanf("%d% 阅读全文
posted @ 2013-09-10 15:51 xiaobaibuhei 阅读(457) 评论(0) 推荐(0)
摘要: 题目大意:给两个数,比较大小... 1 #include 2 3 int main() 4 { 5 int T; 6 scanf("%d", &T); 7 int a, b; 8 while (T--) 9 {10 scanf("%d%d", &a, &b);11 if (a > b) printf(">\n");12 else if (a == b) printf("=\n");13 else printf("<\n");14 }15 return 0 阅读全文
posted @ 2013-09-10 15:14 xiaobaibuhei 阅读(131) 评论(0) 推荐(0)
摘要: 题目大意:给你一个n*n的矩阵,矩阵元素只由0和1构成,找出只包含元素1的最大子矩阵。 二维最大连续和问题,虽然都说和UVa 108 - Maximum Sum差不多,可是我却没什么思路,只好看提示了,结果只要把矩阵中的0元素换成一个足够“大”的负数就可以了,也是,放大某些因素以便从整体上看出效果,让我想到了“一颗老鼠屎坏了一锅汤”,哈哈... 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int mat[30][30], sum[30][30]; 7 8 int main() 9 {10 #ifdef ... 阅读全文
posted @ 2013-09-10 15:04 xiaobaibuhei 阅读(580) 评论(0) 推荐(0)
摘要: 题目大意:现在有一种新型货币,它的价值分为传统价值x和IT价值y,价值计算方式为sqrt(x*x+y*y),现给一些类型的货币和要达到的目标价值,计算达到目标所需的最少货币数目。注意计算方法是sqrt(所有x和y和的平方和)。 二维完全背包问题? 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 310 7 8 int dp[MAXN][MAXN]; 9 int x[50], y[50];10 11 int main()12 {13 #ifdef LOCAL14 ... 阅读全文
posted @ 2013-09-09 16:08 xiaobaibuhei 阅读(193) 评论(0) 推荐(0)
摘要: 题目大意:就是给出一个序列,求最长递增子序列,并打印方案。 1 #include 2 #include 3 #define MAXN 100000 4 5 int a[MAXN], lis[MAXN], pre[MAXN]; 6 7 void print_lis(int p) 8 { 9 if (pre[p] != -1) print_lis(pre[p]);10 printf("%d\n", a[p]);11 }12 13 int main()14 {15 #ifdef LOCAL16 freopen("in", "r", stdi 阅读全文
posted @ 2013-09-08 16:06 xiaobaibuhei 阅读(585) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页