上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 20 下一页
摘要: 题目大意:给一个矩阵,找出一个元素之和最大的子矩阵。 可以暴力枚举,不过是时间复杂度是O(n6),通过利用一个sum数组保存已计算的和可以提高效率(sum[i][j]保存从矩阵左上角到m[i][j]的所有元素和),把时间复杂度降为O(n4),都说这是DP,可是我怎么感觉不出来?对DP理解不够深刻的原因吗? 1 #include 2 #define MAXN 105 3 4 int a[MAXN][MAXN], sum[MAXN][MAXN]; 5 6 int main() 7 { 8 #ifdef LOCAL 9 freopen("in", "r", s 阅读全文
posted @ 2013-08-16 20:53 xiaobaibuhei 阅读(395) 评论(0) 推荐(0)
摘要: 题目大意:给出一些点,找到一个位置使这个位置到所有的点的距离的和最短。 很明显,排序,找中位数。关于中位数:有n个从小到大的数,k=(n+1)/2,若n为奇数,k为中位数,若n为偶数,k为中间那两个数中左侧的数。在c语言中,数组以0开始,中位数可以表示为k=(n-1)/2。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 500+10 6 7 int a[MAXN]; 8 9 int main()10 {11 #ifdef LOCAL12 freopen("in", "r 阅读全文
posted @ 2013-08-16 19:44 xiaobaibuhei 阅读(330) 评论(0) 推荐(0)
摘要: 题目大意:对n份文件进行处理使其减少到m份,有l个机构可供选择。每个机构提供两种方案:每减少一份收费a元,或者减少到文件数量的一半收费b元。根据各个机构收取费用进行排序。 很直接的题目,直接进行模拟就好了。其中对A、B两种方案的选择使用贪心策略。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 100+10 7 8 struct Agency 9 {10 char name[20];11 int cost;12 };13 Agency agency... 阅读全文
posted @ 2013-08-15 16:32 xiaobaibuhei 阅读(198) 评论(0) 推荐(0)
摘要: 题目大意:给一个非负整数n,寻找最小的自然数q使得q的各位数字的乘积等于n。 对n进行2~9的因数分解,从9到2循环(分解成9比分解成3,3更小),同时要考虑0和1的特殊情况,除非n是0或1,否则q的各个数字不会有0和1出现。 1 #include 2 #include 3 4 int main() 5 { 6 #ifdef LOCAL 7 freopen("in", "r", stdin); 8 #endif 9 int cnt[10];10 int T;11 scanf("%d", &T);12 while (T--)13 阅读全文
posted @ 2013-08-15 15:07 xiaobaibuhei 阅读(152) 评论(0) 推荐(0)
摘要: 题目大意:有一条长为l,宽为w的草坪,在草坪上有n个洒水器,给出洒水器的位置和洒水半径,求能浇灌全部草坪范围的洒水器的最小个数。 经典贪心问题:区间覆盖。用计算几何对洒水器的覆盖范围简单处理一下即可得到每个区间的范围,剩下的就是区间覆盖了。可参考UVa 10020 - Minimal coverage 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 10000+10 6 7 struct Interval 8 { 9 int pos, r;10 double s, e;1... 阅读全文
posted @ 2013-08-15 13:19 xiaobaibuhei 阅读(264) 评论(0) 推荐(0)
摘要: 题目大意:选择不相交区间问题。给定n个区间(a,b),选择尽可能多的区间,是的这些区间两两不相交。 经典贪心问题,将区间按照上界进行排序,选择第一个区间,然后去掉与第一个区间相交的区间,以此类推。 1 #include 2 #include 3 using namespace std; 4 #define MAXN 1000+10 5 6 struct Interval 7 { 8 int l, r, num; 9 bool operator start)34 {35 start = interval[i].... 阅读全文
posted @ 2013-08-14 21:54 xiaobaibuhei 阅读(211) 评论(0) 推荐(0)
摘要: 题目大意:走廊两侧有两排房间,现在需要在房间之间移动桌子,走廊的宽度只能容纳一张桌子移动,安排方案使得桌子尽可能并发移动以使得移动的总时间最短。 开始感觉是选择不相交区间问题,就开始写,写着写着就卡壳了,憋不出来了...只好投降了,看书... 将房间之前的走廊作为一个统计单位,当所有的办公室都搬运完成之后,看看这段走廊到底被占用了多少次。统计所有走廊被占用次数的最大值max,这个值就是要单独安排的搬运次数,乘以10就是总的搬运时间。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 ... 阅读全文
posted @ 2013-08-14 21:11 xiaobaibuhei 阅读(323) 评论(0) 推荐(0)
摘要: 题目大意:有n个木棍,分别具有长度li和重量wi。对于木棍s1和s2,若l1 2 #include 3 #include 4 using namespace std; 5 #define MAXN 5000+10 6 7 struct Wooden 8 { 9 int l, w;10 bool operator 0)37 {38 time++;39 int prel = -1, prew = -1;40 for (int i = 0; i = prel && wooden[i].... 阅读全文
posted @ 2013-08-14 16:37 xiaobaibuhei 阅读(143) 评论(0) 推荐(0)
摘要: 题目大意:有一台主机,有m个cpu和n的内存,有l个任务,每个任务需消耗一定的cpu和内存,给出任务的开始时间和截止时间,完成任务可获得一定的金钱,同时提前完成有奖金,延后完成要扣钱。计算到某个时间所得收入。 首先按照任务的开始时间和价值进行排序,然后就是模拟题目描述的过程了。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 10000+10 6 7 struct Job 8 { 9 int a, b;10 int t, u;11 int v, w, x;12 ... 阅读全文
posted @ 2013-08-14 15:25 xiaobaibuhei 阅读(350) 评论(0) 推荐(0)
摘要: 题目大意:有一颗完全二叉树,给节点一个信号会从一个表中选择一对信号分别传递给两个子节点。最后判断所有叶子节点是否满足给定的规则。题目有点长,具体可参见原题。 首先是表格中数据的存储,由于会有多个元素,用vector进行保存。其次,树是完全二叉树,可以用数组存储树。然后就是遍历二叉树了。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 struct Signal 7 { 8 int left, right; 9 };10 vector table[20][20];11 char tree[2100];1... 阅读全文
posted @ 2013-08-13 17:01 xiaobaibuhei 阅读(712) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 20 下一页