- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 Cow Bowling(POJ, 3176, 基础dp)
题目链接#include#include#includeusing namespace std;const int MAX_N = 355;int N, num[MAX_N][MAX_N], dp[MAX_N][MAX_N];void init(){ memset(dp, 0, sizeof(dp)); for(int i=1; i<=N; i++){ for(i
2017-12-19 21:13:39
265
原创 *Allowance(POJ 3040, 贪心)
题目链接 题目大意:FJ每周给Bessie最少C,FJ有各种面值的钱各多少,求最多能支付多少周。 解题思路:从大到小凑近或等于C但不能等于,然后从小到大凑够C(等于或大于C)。/*大于C的coin每周一个发给Bessie就好了 小于C的: 从cent最大的开始取,凑近C但不能等于C 从cent最小的开始取,等于或大于C */#inclu
2017-12-19 21:00:22
304
原创 *Protecting the Flowers(POJ 3262, 贪心)
题目链接 题目大意:牛在花园里吃花,牛i每分钟吃花Di,牵走牛i再回来的时间为2Ti,求最小损失花数。#include#includeusing namespace std;const int MAX_N = 100005;struct cow { int T, D;} a[MAX_N];int N, rest_D;long long ans;bool
2017-12-19 20:53:19
284
原创 Stripies(POJ 1862, 贪心)
题目链接 题目大意:有一种生物两个遇到后会合成一个质量为2sqrt(m1*m2),给你一些这种生物的质量,问合成的最小质量为多少。 解题思路:质量大的先被拿来合成 #include#include#includeusing namespace std;const int MAX_N = 105;int N;double ans;i
2017-12-19 20:45:31
411
原创 Packets(POJ 1017, 贪心)
题目链接 题目大意:有sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6的packet和size 6*6的parcel,告诉你各种size的packet有多少,问最少能用几个parcel放下所有的packet。 学了一招:(p[3]+3)/4#includeusing namespace std;int ans,
2017-12-19 20:22:14
302
原创 Yogurt factory(POJ 2393, 贪心)
题目链接 这个题就比较简单了,算是我做的最快的几个题之一了,不过还是WA了一次,因为看到“Note that the total might be too large for a 32-bit integer.”后,我果断使用了long类型而忘了long也是32位,还好我很快就反应过来了,不然又要浪费时间去检查代码了。/*i周的per unit of yogurt的最低成本为b[
2017-12-07 20:03:30
332
原创 Stall Reservations(POJ 3190, 贪心)
题目链接 我感觉我该去看紫书研究研究STL了,不知道的东西太多了,不会优先队列的话应该是做不了这个题吧,因为既在按开始时间排序之后判断每个cow是否需要新的stall或者说需要用哪个stall的时候需要找之前的cow中B最早的,自己找的话貌似只能用复杂度很高的方法吧,而优先队列插入数据的复杂度为O(lgn),删除数据的复杂度为O(1),这里n的最大值即stall的最大数,而stal
2017-12-06 14:56:33
224
原创 Radar Installation(POJ1328, 贪心)
题目链接 这个题的解题思路是这样的: if (y > d) 输出-1就行了 else 1.计算区间(端点为x ± sqrt(d*d - y*y),表示在这个区间上建雷达能够覆盖到该岛) 2.排序 无论是按左端点升序还是右端点升序排还是按坐标x升序排(按x排的话要排完序再计算区间,具体可看代码)都
2017-12-04 12:02:50
306
原创 Cleaning Shifts(POJ 2376, 贪心)
题目链接 选择开始shift为1的那个cow作为第一个(若没有开始shift为1的print-1),找开始shift小于等于这个cow结束shifit+1,结束shift最大且大于上一个cow的结束shift的那个cow作为第二个cow,ans++(若未找到结束shiift大于上一个cow结束shift的cow,print -1),以此类推,直到最后一个cow或者已能覆盖到第T个s
2017-11-29 21:27:41
361
原创 Hopscotch(POJ, 穷竭搜索)
题目链接 通过此题了解到了set这么个东西。此题很简单,就不多说了。#include#include#define buyuejue 0<=ny && ny<5 && 0<=nx && nx<5using namespace std;int grid[10][10];int dy[4] = {-1, 1, 0, 0};int dx[4] = {0, 0, -1,
2017-11-21 17:10:54
303
原创 Backward Digit Sums(POJ 3187, 穷竭搜索)
题目链接 利用next_permutation函数排列,对于每种排列求出最终的那个和然后判断是否与Input中的final sum相等,若相等,输出此种排列即可。#include#includeusing namespace std;int N;int sum;int digit[15];int a[15];void ini(){ scanf("%d%d"
2017-11-21 17:02:39
219
原创 Smallest Difference (POJ 2718, 穷竭搜索)
这个题有两种做法:1.使用next_permutation穷举 2.贪心法 这道题让我发现了一个问题,执行pow(x,y)这个函数就这么费时间么··· 因为这个题在书中属于穷竭搜索的练习题,这里就不说贪心法怎么做了。解题思路就是排列,然后分成两组数,计算差。其实非常无脑,但是我提交了很多遍都TLE。。。直到我看了一下别人写的代码,发现在将一组数字组合成一个多位数时别
2017-11-19 13:37:02
375
原创 Meteor Shower (POJ 3669,广度优先搜索)
题目链接 首先解释一下,我在第一篇文章说要写全部练习题来着,但是AOJ的题我并没有写,原因当然是并不能看懂日语...so,我就不做AOJ了。 好了,进入正题。 这个题我是自己没有做出来的,然后上网查的。难点并不在于bfs本身,而在于我一开始打算动态的改变地图,在时间变化的同时修改哪个点可移动,哪个不可移动,这样的话就需要用时间作为索引来寻找坐标,于是
2017-11-06 22:09:28
383
原创 Curling 2.0 (POJ 3009, 深度优先搜索)
题目链接 这道题就显得有些复杂了(我感觉挺有难度,可能是我太菜了0.0),光读题就读了一会。 判断四个方向能否移动,若能移动,对移动后的情况进行处理,包括1.遇到终点的情况: 将此时移动的步数与之前的最小步数比较,若步数更少,重置最少步数min的值
2017-11-02 11:06:59
278
原创 Red and Black (POJ 1979,深度优先搜索)
题目链接 这道题和前面的例题Lake Couting十分相似。只需判断四个方向上是否为'.',若为'.',移动过去并将这个'.'改为'#',移动的次数加一即为答案。本题比较简单,就不多说了。#include const int MAX_W = 20;const int MAX_H = 20;int W, H;char t[MAX_W][MAX_H];int dx[4
2017-11-02 10:13:32
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人