码迷,mamicode.com
首页 > 其他好文 > 详细

UVA757 【Gone Fishing】

时间:2021-06-19 18:45:27      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:直接   class   操作   tmp   while   namespace   ring   size   ==   

好像还没有人写题解鸭,那我就来写(shui)一篇吧。

求最多能钓到多少鱼,容易想到贪心。

先把时间的单位换成时间片。

因为不知道终点在哪所以我们可以枚举终点。

枚举完之后花在路上的时间就确定了,直接减去即可。

然后我们在所有湖能钓到的鱼中贪心选最大值,选完之后再把这个湖能钓到的鱼的数量减去\(d[i]\),再重复上述操作,知道时间为\(0\)

我们可以通过优先队列来实现这个操作。

注意到要尽量在编号小的湖里待的时间长,所以排序时如果相同则编号小的优先级高。

这样就做完了。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int N = 30;
struct node{
	int val, id;
	friend bool operator < (node a, node b) {
		if (a.val == b.val) return a.id > b.id;
		return a.val < b.val;
	}
};
int n;
int h;
int f[N], d[N], t[N];
priority_queue<node> q;
int tmp, temp, ans, cnt;
int tim[N], tim_tmp[N], cc;
int main() {
	while (scanf("%d", &n) != EOF && n) {
		cc++;
		if (cc > 1) puts("");
		memset(tim, 0, sizeof(tim));
		ans = -10000;
		scanf("%d", &h);
		h *= 12;
		for (int i = 1; i <= n; i++) scanf("%d", &f[i]);
		for (int i = 1; i <= n; i++) scanf("%d", &d[i]);
		for (int i = 1; i < n; i++) {
			scanf("%d", &t[i]);
			t[i] += t[i - 1];
		}
		for (int i = 1; i <= n; i++) {//枚举终点 
			while (!q.empty()) q.pop();
			memset(tim_tmp, 0, sizeof(tim_tmp));
			cnt = 0;
			tmp = h;
			tmp -= t[i - 1];
			for (int j = 1; j <= i; j++) {
				q.push(node{f[j], j});
			}
			while (tmp > 0) {
				node cur = q.top();
				q.pop();
				if (cur.val <= 0) break;
				cnt += cur.val;
				tim_tmp[cur.id]++;
				q.push(node{max(0, cur.val - d[cur.id]), cur.id});
				tmp--;
			}
			if (tmp) tim_tmp[1] += tmp;
			if (cnt > ans) {
				ans = cnt;
				for (int j = 1; j <= n; j++) {
					tim[j] = tim_tmp[j];
				}
			}
		}
		printf("%d", tim[1] * 5);
		for (int i = 2; i <= n; i++) {
			printf(", %d", tim[i] * 5);
		} printf("\n");
		printf("Number of fish expected: %d\n", ans);
	}
	return 0;
}

UVA757 【Gone Fishing】

标签:直接   class   操作   tmp   while   namespace   ring   size   ==   

原文地址:https://www.cnblogs.com/zcr-blog/p/14901194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!