
技巧
lhrsdl
这个作者很懒,什么都没留下…
展开
-
poj3253 哈夫曼贪心
题意:把木板切成长度如第二行(及以后)的n块(第一行为n)木板,且切断木板耗费的能量为当前木板本身的长度,想办法求出 所需最少能量并输出。 注意:输出结果要用long long 来存,int存不下 思路:先找问题切入点,求出所需最少能量,那就考虑怎样才能在给定的切割方案中寻找最省力的方案。 从这题给的数据来看就要倒过来想问题,也就是说把一段段切好的木板不断合拢回原来长度原创 2015-02-08 21:33:09 · 614 阅读 · 0 评论 -
poj3190 区间贪心 + STL
题意:n头任性的牛,每头牛都要在自己的时间段里挤奶,问最少用多少个挤奶槽并输出每头牛所在的挤奶槽的编号(从1开始)思路:目标明确,求最少用多少奶槽,并输出如何分配,明显区间贪心,找贪心的方向,就是对时间的最末端进行贪心。简单来说,先把奶牛们的时间输入并按开始时间进行排序,然后依次把有序的时间段都放入堆中,在此过程中每次取出堆中末端时间最小的和当前放入堆的时间段进行比较,如果能放到同一个槽就原创 2015-02-13 00:03:06 · 624 阅读 · 0 评论 -
DP入门50题(7)——NYoj37 回文字符串
题意:给一个字符串,让你添加字符使其变成回文字符串,问最少添加几个 思路:开始真没思路,后来看别人的提示,可以把这个问题转化成上一题的思路——最长公共子序列问题。 就是把这个串反转,然后求这两个串的最长公共子序列,用原串长度减去最长公共子序列长度不就是要添加的字符个数啦! 代码:#include <iostream>#include <cstdio>#include <string>#原创 2015-02-24 17:32:21 · 637 阅读 · 0 评论 -
poj2376区间贪心
题意:给出n段区间和区间长度T(从1开始),以下n行为每段区间的首位地址,求最少需要几段将所有区间覆盖,如果不能全覆盖就输出-1.原创 2015-02-09 23:32:03 · 622 阅读 · 0 评论 -
poj1328 区间贪心 雷达覆盖岛屿
题目地址传送门:http://poj.org/problem?id=1328题意:给若干的岛屿坐标和雷达覆盖半径,让你在海岸线(X轴)上建立雷达站以覆盖所有岛屿,求出最少需要多少个雷达,如果不能覆盖全部就输出-1思路:典型的区间贪心,先考虑不能完全覆盖的情况,就是如果半径小于岛屿y轴高度(这个现实生活中倒是有可能出现),或者雷达覆盖面积小于等于0(这个显然扯犊子),还有一种就是岛的原创 2015-02-10 17:39:59 · 1029 阅读 · 0 评论 -
poj 1862 还是哈夫曼思想贪心
题意:科学家发现一种奇怪的玩意,他们有重量Wi, 如果他们碰在一起,总重变成2*sqrt(t1*t2)。 要求出最终的重量的最小值。思路:果然A题多点经验就用上了,跟农夫锯木头那个一个思路,哈夫曼思想,把所有重量放堆里,每次取俩最小的处理再放堆里,最后堆剩下的最后元素就是答案了代码:#include #include #inclu原创 2015-02-19 22:32:27 · 639 阅读 · 0 评论 -
poj1017 贪心 思维 好题
题意:运输公司有6种规格的物品各若干件:1*1 , 2*2,3*3 ,4*4,5*5,6*6的,这六种物品都要放在6*6的箱子里运输,让你求出最少用多少个箱子。 解题思路:有两种方法来做,第一种特别繁琐,也是最直接的解决方式,那就是根据常识来贪心并模拟,代码量很大,另一种和这个贪心一个思路,实现的时候非常简便,下面是贪心的大致思路: 6*6的只能用单独的箱子来放;原创 2015-02-15 19:37:33 · 1125 阅读 · 1 评论 -
poj2287 田忌赛马
题意:田忌和齐王各有n匹马,想办法尽可能让田忌赢更多的钱,赢一场200,输一场-200,平不扣。贪心思想:先拿田忌最好的马跟齐王最好的马比: 如果快则赢下,如果慢则用最慢的马跟齐王最快的马比 如果一样快则比较二者最慢的马: 如果田忌的慢马比齐王的慢马快则赢下 反之就用田忌的这个慢马跟齐王最快的马比(反正这匹马输定了,那就让它输原创 2015-02-09 14:14:34 · 821 阅读 · 0 评论 -
毛毛虫算法——尺取法
有这么一类问题,需要在给的一组数据中找到不大于某一个上限的“最优连续子序列”于是就有了这样一种方法,找这个子序列的过程很像毛毛虫爬行方式,我管它叫毛毛虫算法,比较流行的叫法是“尺取法”。 喏,就像图里的妹纸一样~ 还是举个栗子: Poj3061给长度为n的数组和一个整数m,求总和不小于m的连续子序列的最小长度输入n = 10,m = 155 1 3 5原创 2015-02-01 21:34:26 · 2944 阅读 · 0 评论 -
算法竞赛入门经典训练指南——例18 max(a[i]-a[j])且(i<j)
题意:如标题所示,给一个数组让你输出a[i]-a[j]的最大值,其中i#include <iostream>#include <cstdio>using namespace std;int a[10010],n,ans,maxi;inline int maxer(int a,int b){return a>b?a:b;}void input(){ for(int i = 0 ;原创 2015-03-26 13:49:52 · 1452 阅读 · 0 评论