自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Since_natural_ran

Have a pure heart to overcome everything .

  • 博客(17)
  • 收藏
  • 关注

原创 POJ2785 (折半枚举)

题意: 给出四组数字,各拿出一个相加之和为0,求出有几种方法。思路: 相对来说还是很好想通,问题数据很复杂, 为了快速的查找,肯定要用优化, 关键是如何与查找联系,这里给出折半的方法,把问题分成两半解决,先枚举 出一半的情况,再二分查找。不过还是要说明一下STL中的两个函数 函数upper_bound()返回的在前闭后开区间查找的关键字的上界,如一个数组number

2016-12-28 15:01:03 1017

原创 POJ 3274 (翻转||关灯)

题意: 有M*N的0、1数列,求出怎么反转才能使其全部为零,反转的方式是上下左右受中间 的牵连也会翻转。思路: 题的模型常常被称为关灯问题,也有点和POJ3276的思想雷同,这里是确定第一行的 排列方式就知道了后边的排列方式。知道这种思想,并且知道位运算是关键。#include <iostream>#include <cstdio>#include <cstring>us

2016-12-26 22:36:15 341

原创 POJ 3276 (变形尺取法)

题意: n头牛,现在要求排列整齐并且方向一致F为前,B为向后,现在有一列牛,求出最少 的次数能把牛方向排列一致。每次只能去固定的牛一起转向。思路: 如果是直接暴力,那么太麻烦的有至少O(N^3)的时间复杂度。 最好的思路是由之前的状态确定下一个状态,例如是从左向右遍历,如果是向后那么 这头牛必须要反转.因为反转的个数是固定的所以要记录之前的反转状态,记住这一点,便不难理

2016-12-26 22:01:50 395

原创 POJ 3320 (尺取法)

题意: 为了复习课本准备考试,J想用最少的时间看书,当然书很厚,但是有些知识点是重复的,为了能复习全部,并且还能看的页数最少,问最少看几页?方法:尺取法:在找到满足条件的情况下,继续向下移动知道结束。#include <iostream>#include <cstdio>#include <cstring>#include <set>#include <map>using namesp

2016-12-25 21:25:57 1067

原创 POJ 3061 (尺取法,二分法的应用)

题意: n 个数,求出最小的相邻的数之和不小于s。思路: 这里使用尺取法,也就是直接找到一段数,其值和必然大于s,这里应该体会sum的妙用。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int sum[100005];int a[100005];

2016-12-25 19:31:05 319

原创 POJ1064(二分查找)

题意: 给出n个木板,求出能割k个木板的最大长度。思路: 挑战编程有个使用二分查找的方式,能很好的实现 不过要注意的是精度,需要向下取整,又学到一个新的函数,开心。#include<iostream>#include<cstdio>#include<cmath>using namespace std;const int inf = 0x3f3f3f3f;int n,k;dou

2016-12-19 20:05:18 364

原创 POJ 3616 (dp)

题意: 有m个时间段,在n时间内可以挤奶,挤一次之后休息r时间,问最多挤多少。思路:分段dp问题:这道题给出了一种分段dp的思想。dp[i]表示第i段时间所挤的奶。注意:最后的求最大,因为有可能最后一种s太大而遍历不到。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace

2016-12-10 11:26:30 223

原创 POJ 2229 (dp)

题意: 分解一个数,问有多少分解的方法,分解出来的只能是2的幂。思路 很多人说是完全背包的问题,我很愚钝,没有看出来,我觉得还是从当前的状态去找答案,分解的数与之前的数相比只是多了1,则可以分成这个数是技术和偶数讨论,奇数的话和之前的数一样,因为只是加了一个1嘛。但是偶数就不同了,偶数的分解可以出现1也可以不出现,所以又出现两种情况,出现1则和之前的数一样,因为这个1就是它自己。不出现1的

2016-12-09 15:06:05 237

原创 POJ 3262 (贪心)

题意: 有n头牛在花园里吃花朵,老头要一个一个赶走他们,赶走的时候别的牛仍然在吃. 现在问最小的损失是什么。重点内容 输入的第一行是牛的头数,然后n行每行两个数分别是赶走需要的时间 和每单位时间所吃的花。思路:有一个证明能很好的说明问题: 如: 两头牛分别是(a,b),(c,d)如果先赶走第一头,那么花费花朵为b*x + (x + a*2)*d,先赶走第二头,花费花

2016-12-09 14:22:57 815

原创 POJ 3040 (贪心)

题意: 要付给某人一周的工资c,现在给出一共有的钱,以及每种钱的数量。问能付多少周。思路: 至今不知道如何理解这种方法,暂时是这么理解的:给工资的时候可以多给点,但是不能少给,比c大的钱直接给(很有钱的样子)然后再从大到小给钱若找不开则从小到大找零钱给。不过还是有一个好的思路,就是可以用num记录每一种方案所花的钱数,然后以倍数的关系进行计算。#include<iostream>#i

2016-12-09 13:22:14 445

原创 POJ 1862 (贪心)

题意: 现在有很多粒子,两个碰撞之后形成一个粒子并且会减小质量,求最小值量。思路: 很简单,选出最大的两个碰撞质量减少最多。 不过也复习了一下优先队列与结构体的使用。#include<iostream>#include<algorithm>#include<queue>#include<cmath>#include<cstdio>using namespace std;cl

2016-12-07 20:31:59 276

原创 POJ 2393 (贪心)

题意: 工厂要在n周生产y[i] unit的奶酪每一周生产的价格会波动,当然也可以趁着便宜的时 候多生产然后存储起来,储存需要费用,现在给出数据,问最便宜要多少钱生产这些 奶酪。思路: 储存起来最便宜的价格然后生产既可,简单贪心。#include<cstdio>int main(){ //freopen("in.txt","r",stdin); int

2016-12-07 18:29:17 287

原创 POJ 3190 (贪心)

题意: 有n头牛,每头牛挤奶的时间段是不同的,现在问在不同的时间段中最少用多少机器才能满足。思路: 首先这是贪心类型1的题:被称为 staying ahead,即保持领先,意义为如果我们运用某个策略,在算法的每一步中都使某个条件保持领先,那么最后可以利用这个领先条件来证明最优解。这里用两个策略:按照开始时间进行排序,这样可以遍历每一种情况按照每次结束的时间最早的寻找满足无交叉的时间段

2016-12-06 20:01:36 399

原创 POJ 1328 (贪心)

题意: x轴上方是海,其中有n个岛屿,需要在x轴上安装雷达,半径为d,问最少需要多少。思路: 可以先确定每一个岛屿能接受雷达的范围,也就是在半径d下边与x轴的交点,然后按 照交点大的依次遍历,哪些可以直接覆盖就直接标记。 不知道 为什么G++过不了,C++可以。#include<iostream>#include<algorithm>#include<cstdio>

2016-12-06 17:59:01 445

原创 POJ2376(贪心)

题意: 给定一个区间m,再给出很多小区间,问最少多少小区间才能组成大区间,如果 无法组成便输出-1.思路: 贪心算法,肯定需要一个标记t来确定选择最优解。 t表示组成的区间最右边。 这道题的处理方法是先排序,然后在能选择的范围中选择y的值最大的。#include<iostream>#include<cstdio>#include<algorithm>using na

2016-12-05 19:27:28 656

原创 POJ3050(dfs)

题意: 从任何一个数字出发上下左右找到六个数所组成的数,问有多少个。5*5的方格。思路: dfs暴力搜索,注意条件就行。#include<iostream>#include<cstdio>#include<set>using namespace std;int a[10][10];int ans[10000],pos,t;int dir[4][2] = {{1,0},{-1,0}

2016-12-05 18:41:41 278

原创 POJ3009 dfs

题意: 给一个图,1表示石头,2表示出发点,3表示终点,求从2到3的最短步数。 有特殊条件就是在没有遇到1之前,只能一个方向走,遇到1之后1变为零, 然后可以在之前的状态向四个方向走。思路: 1.dfs重要的是入口和出口的控制条件。 2.想好一个位置的状态以及怎么处理它。#include<cstdio>int n,m;int gragh[30][30];int sx

2016-12-01 16:59:10 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除