# oyjpArt ACM/ICPC算法程序设计空间

// I am new in programming, welcome to my blog
I am oyjpart(alpc12, 四城)
posts - 224, comments - 694, trackbacks - 0, articles - 6

using namespace std; 不能用time G++ CE多次 faint
Gone Fishing
Solution:
// by oyjpArt
#include <iostream>
#include <queue>
using namespace std;
const int N = 30;
struct node {int nf, idx; void set(int nn, int ii) {nf = nn; idx = ii;}};
int nl, time, f[N], t[N], d[N], totf, stay[N], beststay[N];
typedef priority_queue<node> PQ;

bool operator<(const node&a, const node& b) { if(a.nf == b.nf) return a.idx > b.idx; return a.nf < b.nf; }

int main () {
int i, j;
while(scanf("%d", &nl), nl) {
scanf("%d", &time);
time *= 12;
int maxf = -1;
for(i = 0; i<nl; i++) scanf("%d", f+i);
for(i = 0; i<nl; i++) scanf("%d", d+i);
for(i = 0; i<nl-1; i++) scanf("%d", t+i);
for(i = 0; i<nl; i++) {
memset(stay, 0, sizeof(stay));
totf = 0;
if(i>0) time -= t[i-1];
node now;
PQ pq;
for(j = 0; j<=i; j++)
{ now.set(f[j], j); pq.push(now);}
for(j = 0; j<time; j++) {
now = pq.top();
pq.pop();
stay[now.idx] += 5;
totf += now.nf;
now.nf -= d[now.idx];
if(now.nf < 0) now.nf = 0;
pq.push(now);
}
if(totf > maxf) {
maxf = totf;
memcpy(beststay, stay, sizeof(stay));
}
}
printf("%d", beststay[0]);
for(i = 1; i<nl; i++) printf(", %d", beststay[i]);
printf("\nNumber of fish expected: %d\n\n", maxf);
}
return 0;
}

 只有注册用户登录后才能发表评论。