2012年4月7日

UVa 10167 - Birthday Cake

摘要: 这道题是直接暴力,需要注意的是cherry不能在直线上,因此需要两个变量来分别统计在直线两边的个数;还想到一种方法:把所有斜率排序,然后二分枚举,复杂度为O(n+n*lgn+lgn)。 1 # include <stdio.h> 2 3 int c[105][2]; 4 5 int main() 6 { 7 int n, c1, c2, A, B, i, ans[2]; 8 9 while (1)10 {11 scanf("%d", &n);12 if (!n) break;13 14 for ( i = 1; i <= 2*n; ++i)15 s 阅读全文

posted @ 2012-04-07 20:27 getgoing 阅读(221) 评论(0) 推荐(0) 编辑

WA:ZOJ 1025 Wooden Sticks

摘要: 思路是:先对长乘以重量进行排序,除去完全相同的(l,w分别相等),然后依次计算dp(i),最后统计f[i] == 1的个数。为什么这样考虑呢?看图:为什么这样不对呢?看图:这就说明了统计1的个数的想法是错误的。看了网上的代码,都说是贪心。谁说WA的代码就没用? 1 # include <stdio.h> 2 # include <memory.h> 3 # include <stdlib.h> 4 5 typedef struct { 6 int l, w; 7 }stick; 8 9 int T, n;10 int mask[5002];11 int f[ 阅读全文

posted @ 2012-04-07 11:23 getgoing 阅读(312) 评论(0) 推荐(0) 编辑

ZOJ 1093 Monkey and Banana

摘要: 和The Tower of Babylon一模一样,这里给出两个代码:一个是直接做的,不说了;另一个是参考了Staginner大牛的方法,做了一个优化:将底面积按大到小排序,这样搜索时,只用从当前石块的下一个石块开始即可,最后打印 f[1] 即可,复杂度降低很明显的。/* 方法二实际上有个错误,具体见后述。*/方法一 1 # include <stdio.h> 2 # include <memory.h> 3 # include <stdlib.h> 4 5 typedef struct { 6 int x, y, h; 7 }block; 8 9 int 阅读全文

posted @ 2012-04-07 00:16 getgoing 阅读(195) 评论(0) 推荐(0) 编辑

导航