![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
挑战程序设计竞赛!
文章平均质量分 61
c138Rick
.
展开
-
Meteor Shower (POJ 3669,广度优先搜索)
题目链接 首先解释一下,我在第一篇文章说要写全部练习题来着,但是AOJ的题我并没有写,原因当然是并不能看懂日语...so,我就不做AOJ了。 好了,进入正题。 这个题我是自己没有做出来的,然后上网查的。难点并不在于bfs本身,而在于我一开始打算动态的改变地图,在时间变化的同时修改哪个点可移动,哪个不可移动,这样的话就需要用时间作为索引来寻找坐标,于是原创 2017-11-06 22:09:28 · 333 阅读 · 0 评论 -
*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 · 251 阅读 · 0 评论 -
*Protecting the Flowers(POJ 3262, 贪心)
题目链接 题目大意:牛在花园里吃花,牛i每分钟吃花Di,牵走牛i再回来的时间为2Ti,求最小损失花数。 #include #include using 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 · 226 阅读 · 0 评论 -
Cow Bowling(POJ, 3176, 基础dp)
题目链接 #include #include #include using 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 · 215 阅读 · 0 评论 -
Radar Installation(POJ1328, 贪心)
题目链接 这个题的解题思路是这样的: if (y > d) 输出-1就行了 else 1.计算区间(端点为x ± sqrt(d*d - y*y),表示在这个区间上建雷达能够覆盖到该岛) 2.排序 无论是按左端点升序还是右端点升序排还是按坐标x升序排(按x排的话要排完序再计算区间,具体可看代码)都原创 2017-12-04 12:02:50 · 205 阅读 · 0 评论 -
Stall Reservations(POJ 3190, 贪心)
题目链接 我感觉我该去看紫书研究研究STL了,不知道的东西太多了,不会优先队列的话应该是做不了这个题吧,因为既在按开始时间排序之后判断每个cow是否需要新的stall或者说需要用哪个stall的时候需要找之前的cow中B最早的,自己找的话貌似只能用复杂度很高的方法吧,而优先队列插入数据的复杂度为O(lgn),删除数据的复杂度为O(1),这里n的最大值即stall的最大数,而stal原创 2017-12-06 14:56:33 · 175 阅读 · 0 评论 -
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 · 275 阅读 · 0 评论 -
Stripies(POJ 1862, 贪心)
题目链接 题目大意:有一种生物两个遇到后会合成一个质量为2sqrt(m1*m2),给你一些这种生物的质量,问合成的最小质量为多少。 解题思路:质量大的先被拿来合成 #include #include #include using namespace std; const int MAX_N = 105; int N; double ans; i原创 2017-12-19 20:45:31 · 351 阅读 · 0 评论 -
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 · 186 阅读 · 0 评论 -
Curling 2.0 (POJ 3009, 深度优先搜索)
题目链接 这道题就显得有些复杂了(我感觉挺有难度,可能是我太菜了0.0),光读题就读了一会。 判断四个方向能否移动,若能移动,对移动后的情况进行处理,包括1.遇到终点的情况: 将此时移动的步数与之前的最小步数比较,若步数更少,重置最少步数min的值原创 2017-11-02 11:06:59 · 238 阅读 · 0 评论 -
Smallest Difference (POJ 2718, 穷竭搜索)
这个题有两种做法:1.使用next_permutation穷举 2.贪心法 这道题让我发现了一个问题,执行pow(x,y)这个函数就这么费时间么··· 因为这个题在书中属于穷竭搜索的练习题,这里就不说贪心法怎么做了。解题思路就是排列,然后分成两组数,计算差。其实非常无脑,但是我提交了很多遍都TLE。。。直到我看了一下别人写的代码,发现在将一组数字组合成一个多位数时别原创 2017-11-19 13:37:02 · 321 阅读 · 0 评论 -
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 · 308 阅读 · 0 评论 -
Backward Digit Sums(POJ 3187, 穷竭搜索)
题目链接 利用next_permutation函数排列,对于每种排列求出最终的那个和然后判断是否与Input中的final sum相等,若相等,输出此种排列即可。 #include #include using namespace std; int N; int sum; int digit[15]; int a[15]; void ini(){ scanf("%d%d"原创 2017-11-21 17:02:39 · 173 阅读 · 0 评论 -
Hopscotch(POJ, 穷竭搜索)
题目链接 通过此题了解到了set这么个东西。此题很简单,就不多说了。 #include #include #define buyuejue 0<=ny && ny<5 && 0<=nx && nx<5 using 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 · 238 阅读 · 0 评论