贪心  优先队列

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <sstream>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
#define maxn 110
#define INF 0x7fffffff
#define inf 10000000
#define MOD 1000000007
#define ull unsigned long long
#define ll long long
using namespace std; struct node
{
int id, f, d;
bool operator < (const node& p) const
{
if(f != p.f) return f < p.f;
return id > p.id; //当f相等时 必须序号小的先出队列
}
} pp[30]; int n, _time, la[30], ans[30], _max; void init()
{
memset(ans, 0, sizeof(ans));
memset(la, 0, sizeof(la));
scanf("%d", &_time);
_time *= 60;
for(int i = 0; i < n; ++ i) scanf("%d", &pp[i].f), pp[i].id = i+1;
for(int i = 0; i < n; ++ i) scanf("%d", &pp[i].d);
for(int i = 2; i <= n; ++ i)
{
scanf("%d", &la[i]);
la[i] = la[i]*5+la[i-1];
// printf("%d ", la[i]);
}
// puts("");
} void solve()
{
priority_queue<node> q;
int tem[30], sum;
_max = -1000; //_max必须初始化为负值
for(int i = 1; i <= n; ++ i)
{
while(!q.empty()) q.pop();
memset(tem, 0, sizeof(tem));
sum = 0;
for(int j = 0; j < i; ++ j) q.push(pp[j]);
int got = _time-la[i];
// printf("*********got:%d\n", got);
while(got >= 5)
{
node tt = q.top();
q.pop();
if(tt.f <= 0) break;
sum += tt.f;
tt.f -= tt.d;
tem[tt.id] += 5;
q.push(tt);
got -= 5;
}
if(got > 0) tem[1] += got; //多的时间加到一号湖
if(sum > _max)
{
// printf("*********%d\n", i);
_max = sum;
for(int j = 1; j <= n; ++ j) ans[j] = tem[j];
}
}
}
int main()
{
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
bool flag = false;
while(scanf("%d", &n) == 1 && n)
{
init();
solve();
if(flag) puts(""); //最后一个样例后没空行
else flag=true;
printf("%d", ans[1]);
for(int i = 2; i <= n; ++ i) printf(", %d", ans[i]);
puts("");
printf("Number of fish expected: %d\n", _max);
// puts("");
}
return 0;
}

uva 757的更多相关文章

  1. UVa 757 - Gone Fishing

    题目大意:John有h的时间可以去钓鱼,有n湖可钓鱼,以5分钟为时间单位,每个湖初始每个单位时间可钓f条鱼,每下一个时间单位数量减少d条.同时,John只能从1号湖往后走进行钓鱼,湖之间的距离需要t个 ...

  2. <算法竞赛入门经典> 第8章 贪心+递归+分治总结

    虽然都是算法基础,不过做了之后还是感觉有长进的,前期基础不打好后面学得很艰难的,现在才慢慢明白这个道理. 闲话少说,上VOJ上的专题训练吧:http://acm.hust.edu.cn/vjudge/ ...

  3. UVA 816 - Abbott&#39;s Revenge(BFS)

    UVA 816 - Abbott's Revenge option=com_onlinejudge&Itemid=8&page=show_problem&category=59 ...

  4. UVa 10012 - How Big Is It? 堆球问题 全排列+坐标模拟 数据

    题意:给出几个圆的半径,贴着底下排放在一个长方形里面,求出如何摆放能使长方形底下长度最短. 由于球的个数不会超过8, 所以用全排列一个一个计算底下的长度,然后记录最短就行了. 全排列用next_per ...

  5. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  6. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  7. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  8. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  9. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

随机推荐

  1. VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Kernel application (二)

    #1 内核对象的静态实例化 内核对象的静态实例化 任务的静态实例化 VX_TASK宏用来在编译时声明一个任务对象.该宏带有2个参数:任务名和栈大小.不像taskSpawn函数,任务名称可以是NULL. ...

  2. 大数求模 sicily 1020

        Search

  3. wage

    #include<iostream> using namespace std; int main() { double wage1,wage2,time; cout<<&quo ...

  4. ADO.NET笔记——使用DataSet返回数据

    相关知识: DataSet和DataAdapter的内部结构: DataSet通过DataAdapter从数据库中获取数据 DataSet对象内部包括一个集合(Tables),也就是可以拥有多个表(D ...

  5. Windows7系统禁用USB和启用USB方法

    被迫装了XX软件之后,无线网络和USB都被禁用了,XX软件还不能被卸载.只能用PE进去时候把XX软件安装目录进行删除,但是删除之后还是不能识别U盘,从网上找到办法一看是注册表的项被修改了. 注册表项为 ...

  6. smarty安装及例子

    环境: smarty3.1.16 1.在http://www.smarty.net/download下载最新smarty包,window选择zips,linux下选择tar.gz.以windows为例 ...

  7. Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name. 的解决方法

    环境:Oracle 11g r2   win7 问题描述:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQN ...

  8. JAVA中toString方法

    因为它是Object里面已经有了的方法,而所有类都是继承Object,所以"所有对象都有这个方法". 它通常只是为了方便输出,比如System.out.println(xx),括号 ...

  9. cookie、session的联系和区别,多台web服务器如何共享session?

    cookie在客户端保存状态,session在服务器端保存状态.但是由于在服务器端保存状态的时候,在客户端也需要一个标识,所以session也可能要借助cookie来实现保存标识位的作用.cookie ...

  10. bw R/3端配置 (转)

    先检查一下两边系统的补丁:R3端如下, BW端按照老师的说法至少补丁要打到17,貌似我们是19,通过,这样做起事情来后顾无忧 登陆R3界面,SBIW这个是R3的最常用事务码,有关BW的所有东东都在他的 ...