随笔分类 -  greedy

poj-3255 Roadblocks ***
摘要:1 /* 2 *解题报告 3 [转: http://hi.baidu.com/lewutian/blog/item/7986c62c4aa412e18a1399bb.html ] 4 本人在POJ上做过次小生成树的问题。当时的解决思路是把最小生成树里面的边逐个去掉, 5 而计算现在的最小生成树。证明很简单,在此略去。 6 7 可是现在解决次短路问题也采用这样的思路就会非常麻烦。SPFA一次的时间复杂度 8 大约是O(2n),枚举最短路的边是O(r)级别的,这样看来最坏情况下的 9 时间复杂度就会有O(2nr),将近10亿。 10 就算是O(r)太过悲观的话,想在2秒内... 阅读全文

posted @ 2012-03-29 16:27 龙豆 阅读(540) 评论(0) 推荐(0) 编辑

zoj-2921 Stock ***
摘要:1 /*纯粹转, http://hi.baidu.com/sheep_finalfreedom/blog/item/1fbb2046408dd889b3b7dc4a.html */ 2 /* 3 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2921 4 5 最初以为是DP,后来想通之后发现是非常经典的贪心! 6 7 采用的策略就是倒过来,从最后一天开始卖! 8 9 虽然最后一天的股票可能还包含了前面几天没卖掉了股票,10 但是当天的价格对于每张股票都是一样的,11 所以我们用贪心策略,12 先把最后一天自身的... 阅读全文

posted @ 2012-03-26 22:30 龙豆 阅读(455) 评论(0) 推荐(0) 编辑

POJ-1818 ATP ****
摘要:1 /* 2 * 贪心 + 二分 3 * 看了网上的代码 + discuss 才想出解法。。。 4 * 5 * 设答案是排名为p的人 6 * 则贪心策略是: p最后一轮与(p-k)比赛。 7 * 这个还是有点显然的,因为所有与p比赛且能被p赢的人中, 8 * (p-k)是最容易撑到最后一轮的。 9 * 证明: 否则,设p最后一轮与m比赛,(则m > p-k),(p-k)在某一轮与a比赛时被打败, 同时这一轮m是与b比赛且m胜利(因为m撑到了最后一轮)。则我们交换这一轮中的(p-k)和m, ... 阅读全文

posted @ 2012-03-13 20:42 龙豆 阅读(786) 评论(0) 推荐(1) 编辑

poj-1752 Advertisement **
摘要:1 /* 2 * 很自然的 差分约束系统, 没具体写, 转一个。。 3 * 4 * 5 * http://www.cnblogs.com/ihainan/archive/2011/07/23/2114884.html 6 * 解题思路:由题可得如下约束条件: 7 * 如果 b - a >= k 8 * 则 S[b] - S[a] >= k 9 * 否则 S[b] - S[a] >= dis(a, b) 10 * 且 S[b] - S[a] <= dis(a, b) 11 * 同时 0 <= S[i] ... 阅读全文

posted @ 2012-03-11 20:25 龙豆 阅读(579) 评论(0) 推荐(0) 编辑

poj-2054 Color a Tree ****
摘要:1 /* 2 * POJ-2054 color a tree 3 * 4 * 贪心 难题! 5 * 6 * 思路1: 7 * http://hi.baidu.com/cheezer94/blog/item/d98eca065202a2f237d122da.html 8 * 思路2: 9 * http://www.cnblogs.com/X-Kly/archive/2011/11/02/POJ2054.html 10 * 代码: 11 * http://xinbaolianmeng.com/showshouye.a... 阅读全文

posted @ 2012-03-11 19:43 龙豆 阅读(819) 评论(0) 推荐(0) 编辑

poj-3253 Fence Repair **
摘要:/* * 3253 Fence Repair.cpp * * Created on: 2011-10-25 * * Huffman + 堆排 * * _int64 让我WA了无数次, 郁闷 * */#include <iostream>using namespace std;const int maxn = 50000 + 5;__int64 len[maxn], n, size;inline int left(int i){ return 2 * i + 1;}inline int right(int i){ return 2 * i + 2;}inline int ... 阅读全文

posted @ 2011-11-12 00:55 龙豆 阅读(299) 评论(0) 推荐(0) 编辑

UVa-10382 Watering Grass **
摘要:/* * Uva-10382-Watering Grass.cpp * 特别注意精度。。(感觉这道题的判题有问题,开始怎么交都WA,,过两天什么都没改,再交就AC了 , 汗。。 * * 详细代码注释: http://apps.hi.baidu.com/share/detail/24628400 * * Created on: 2011-10-3 * Author: */#include <cstdio>#include <cmath>#include <algorithm>using namespace std;const int maxN = 10000 阅读全文

posted @ 2011-10-06 23:42 龙豆 阅读(467) 评论(0) 推荐(0) 编辑

UVa-10020 Minimal coverage **
摘要:1 /* 2 * Uva-10020 最少区间覆盖-贪心 3 * 4 * 很直接的贪心。。 详见刘汝佳 《奥赛入门经典》 5 * 6 * 测试数据: http://www.algorithmist.com/index.php/UVa_10020#Input 7 * 8 */ 9 10 #include <cstdio>11 #include <algorithm>12 using namespace std;13 14 const int maxN = 100000 + 5;15 int caseNum, m, intervalNum, ansList[maxN];16 阅读全文

posted @ 2011-10-04 23:32 龙豆 阅读(803) 评论(0) 推荐(0) 编辑

poj-1700-Crossing River **
摘要:/* * poj-1700-Crossing River.cpp * *贪心: * 最佳方案构造法:以下是构造N个人(N≥1)过桥最佳方案的方法: * 1) 如果N=1、2,所有人直接过桥。 * 2) 如果N=3,由最快的人往返一次把其他两人送过河。 * 3) 如果N≥4,设A、B为走得最快和次快的旅行者,过桥所需时间分别为a(1)、a(2);而Z、Y为走得最慢和次慢的旅行者, * 过桥所需时间分别为a(n-1)、a(n)。 * 易知:a(n)是肯定会出现在计算cost的和式中的,考虑把a(n)和a(n-1)带过桥: * ... 阅读全文

posted @ 2011-10-03 21:44 龙豆 阅读(608) 评论(0) 推荐(1) 编辑

Matroid[转]
摘要:【矩阵胚(拟阵)的定义】 矩阵胚(拟阵)是一个满足遗传性质与交换性质的序对M=(S, I),其中S是一个非空有限集,I是S的一个非空子集族。 【遗传性质的定义】 若X∈I,则X的任意子集∈I(X是遗传的)。 【交换性质的定义】 若A∈I,B∈I,且|A|>|B|,则∃x∈A-B,使B∪{x}∈I。 【独立子集的定义与性质】 定义:若X∈I,则X是S的独立子集。 性质:独立子集的任意子集都是独立子集。 【矩阵胚(拟阵)的性质】 ①S有至少一个独立子集——空集。 ②独立子集是遗传的。 【加权矩阵胚的定义与性质】 定义:把S中的元素加正的权,可以得到一个加权矩阵胚。 性质... 阅读全文

posted @ 2011-10-03 11:21 龙豆 阅读(441) 评论(0) 推荐(0) 编辑

CEOI 2000 Day 2 Problem 3---Enlightened landscape 【转】
摘要:ProblemEnlightened landscapeConsider a landscape composed of connected line segments:Above the landscape, N light bulbs are hang at the same height Tin various horizontal positions. The purpose of these light bulbs is to light up the entire landscape. A landscape point is considered lit if it can &q 阅读全文

posted @ 2011-09-22 20:58 龙豆 阅读(807) 评论(0) 推荐(0) 编辑

poj-2313 Sequence ***
摘要:/* * 贪心: * 但自己没想出来, 看了网上的解法。。似乎也不太懂。 。 网上给的解法倒是可以证明是对的,但不知道是怎么想的 * 先给网上的解法: * //开始假设b[i] = a[i](1 <= i <= n) * //显然b[i]对于最后最优值产生影响的有三项|a[i]-b[i]|,|b[i]-b[i-1]|,|b[i]-b[i+1]| * //反应在数轴上要使得这三项最小,那么取值应该是这三数居中的那个 * //若存在i使 b[i] < 或者 > Mid(b[i - 1], a[i], b[i + 1]) (2 <= i <= n - 1) * / 阅读全文

posted @ 2011-07-30 20:12 龙豆 阅读(500) 评论(0) 推荐(0) 编辑

poj-2325 Persistent Numbers ****
摘要:/* * 简略版大整数除法 + 贪心 * 不难发现,如果输入的数含有大于等于10的质数因子,则无解,所以 * ,只需要把输入的数分解为2,3,5,7的幂的形式,然后再由低位向 * 高位进行分配即可(越低位的数字,其值尽可能大) * * 开始没好好分析,结果认为 只要 从高位向低位枚举,且满足( ans[i+1] >= ans[i] && ans[i+1]*ans[i] >= 10 )即可, * 每次枚举一个,就将原数除这个数。。。一次递归求每一位数。 只要求出了一个答案,则答案就是这个。。 * 后来发现这个方法是不行的。。 比如:54454680 找到的答案是:25 阅读全文

posted @ 2011-07-30 17:05 龙豆 阅读(706) 评论(0) 推荐(0) 编辑

poj-1042 Gone Fishing **
摘要:/* 贪心+优先级队列 * * 贪心:为了不讨论在路上花费的时间,可以枚举到过的湖:比如:totLake=j 表示 到过湖1、2、..、j 相应的, 花在路上的时间 * 就是 t[1]+t[2]+..+t[j-1] (显然每段路只会走一次) 于是算出leftTime,表示花在钓鱼上的时间 * 这样一来,就不同再考虑路上的时间了,可以认为John有瞬间移动,哪个湖鱼多,就到哪个湖钓(当然 湖的编号 满足 1 <= ~ <=totLake ) * * 于是可以用一个优先级队列,每次到与最多的湖钓, * 还要注意的是,如果某时刻有多个湖有同样多的鱼,则到湖编号最小的那个湖里钓!!(只要对 阅读全文

posted @ 2011-07-27 22:33 龙豆 阅读(1013) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示