标签:for lang ack finally rac size spec div 实现
| Time Limit: 2000MS | Memory Limit: 32768K | |
| Total Submissions: 39267 | Accepted: 12205 |
Description
Input
Output
Sample Input
2 1 10 1 2 5 2 4 4 10 15 20 17 0 3 4 3 1 2 3 4 4 10 15 50 30 0 3 4 3 1 2 3 0
Sample Output
45, 5 Number of fish expected: 31 240, 0, 0, 0 Number of fish expected: 480 115, 10, 50, 35 Number of fish expected: 724
枚举在前n个池塘中钓鱼,分别减去时间,然后就能实现在选中的湖间瞬间移动————哪个多去哪里捞,最后比较得出答案。
ac代码:
#include<iostream>
#include<cmath>
#include<stdio.h>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=26;
int n,h,dt[maxn],i,j,k,ans,anst[maxn];
vector<int> f,d;
bool check(int*a,int *b,int i)
{
for(int j=0;j<=i;j++)
{
if(b[j]>a[j])
return true;
else if(b[j]<a[j])
return false;
}
}
int main(void)
{
// freopen("input.txt","r",stdin);
while(cin>>n&&n)
{
ans=0;
memset(anst,0,sizeof anst);
f.clear();
d.clear();
cin>>h;
h*=12;
for(i=1;i<=n;i++)
{
scanf("%d",&k);
f.push_back(k);
}
for(i=1;i<=n;i++)
{
scanf("%d",&k);
d.push_back(k);
}
for(i=1;i<n;i++)
{
scanf("%d",&dt[i]);
}
dt[0]=0;
//贪心
for(i=0;i<n;i++)
{
vector<int>f1(f);
vector<int>d1(d);
h-=dt[i];
int ans1=0;
int anst1[maxn];
memset(anst1,0,sizeof anst1);
for(j=h;j>0;j--)
{
int maxi=0;
for(k=1;k<=i;k++)
{
if(f1[k]>f1[maxi])
maxi=k;
}
int dx=f1[maxi]>d1[maxi]?d1[maxi]:f1[maxi];
ans1+=f1[maxi];
f1[maxi]-=dx;
anst1[maxi]++;
}
if(ans1>ans||ans1==ans&&check(anst,anst1,i))
{
ans=ans1;
for(k=0;k<=i;k++)
anst[k]=anst1[k]*5;
}
}
//output
for(i=0;i<n;i++)
{
cout<<anst[i];
if(i!=n-1)
cout<<", ";
}
cout<<endl<<"Number of fish expected: "<<ans<<endl<<endl;
}
return 0;
}
标签:for lang ack finally rac size spec div 实现
原文地址:https://www.cnblogs.com/zgncbsylm/p/10572875.html