摘要: 题意: 有 n 个池塘,只能从第一个池塘开始走,可以在每个池塘中钓鱼,而且知道了每个池塘每五分钟钓鱼的数量都会下降一定额数值,且从池塘到下一个池塘之间都有一定的距离,知道了每个池塘走到下一个池塘的时间和每个池塘一开始能够钓鱼的数量,求在规定的时间内所能钓的最多的鱼的数量。分析: 枚举以每个池塘为终点的情况,找到最大值。 有个注意的地方就是,没枚举一个终点,先把这段路的每个间隔所花时间去掉,这样就可以每次贪心去找单位时间可以钓最多的鱼了,而且可以保证贪心到最后可以找到最优解。#include<cstdio>#include<cstring>#define clr(x)me 阅读全文
posted @ 2012-07-27 23:06 'wind 阅读(870) 评论(0) 推荐(0) 编辑
摘要: POJ刷题分类(一):用的比较多的初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3... 阅读全文
posted @ 2012-07-27 19:44 'wind 阅读(341) 评论(0) 推荐(1) 编辑
摘要: 题意: 有个储蓄罐 ,内部物品重量已知,内部可能有 n 种钱币,知道每个钱币的重量和价值,问储蓄罐内部钱币价值最少是多少。分析: 完全背包,由于是最小价值,所以应把 数组初始为无穷大。#include<stdio.h>#include<string.h>int f[10005];int min(int a,int b){ return a<b?a:b; }int main(){ int t,i,n,v,emp,a,b; scanf("%d",&t); while(t--) { scanf("%d%d",&em 阅读全文
posted @ 2012-07-27 19:34 'wind 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题意: 有N 个点,且这些点都在整数坐标上,找出一个点使得所有点到这个点的曼哈顿距离和最小。分析:可以以每个点为中心,把平面分别按 位于该点上方, 位于该点下方, 位于该点左方, 位于该点右方, 可以先对 X 排序, 记点的左方所有点到该点的 X 坐标距离差之和为 LX 记点的右方所有点到该点的 X 坐标距离差之和为 RX 求出第一个点的 LX,RX 后,后面的点可依次有前一个点推出 即 LX2=LX+i*dxRX2=RX-(n-i)*dx每个点上方的 Y 距离差之和 SY,和下方的 XY 求法同上, 最后枚举每个点的 LX+RX+XY+SY找出最大值即可。#include<stdio. 阅读全文
posted @ 2012-07-27 18:13 'wind 阅读(254) 评论(0) 推荐(0) 编辑