• 题解-UVA757 Gone Fishing


    好像还没有人写题解鸭,那我就来写(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("
    ");
    		printf("Number of fish expected: %d
    ", ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    JqueryQrcode生成二维码不支持中文的解决办法
    [转载]浅析海量用户的分布式系统设计
    [转载]大型网站应用中 MySQL 的架构演变史
    CSS3变形记(上):千变万化的Div
    JavaScript进阶之路——认识和使用Promise,重构你的Js代码
    Visual Studio Code预览版Ver 0.3.0试用体验
    Apache Spark 2.3.0 正式发布
    Apache Spark 2.2.0 新特性详细介绍
    Apache Spark 2.2.0 正式发布
    Spark 论文篇-论文中英语单词集
  • 原文地址:https://www.cnblogs.com/zcr-blog/p/14901194.html
Copyright © 2020-2023  润新知