UOJ Logo chtomede的博客

博客

#193. 鱼塘钓鱼

2019-02-14 09:03:47 By chtomede

思路:依次枚举可能到达的最远鱼塘的可能性,然后拿总时间减去到达最远鱼塘所需的时间,把人看成可瞬移,不断在可到达的范围内选鱼最多的掉即可

#include<iostream> 
using namespace std;
int n,a[100000],dis[100000],t[100000],aaa,T;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)    cin>>a[i];
    for(int i=1;i<=n;i++)    cin>>dis[i];
    for(int i=1;i< n;i++)    cin>>t[i];
    cin>>T;
    for(int i=2;i<n;i++)    t[i]+=t[i-1];
    for(int i=1;i<=n;i++){
        int tt=T-t[i-1],ans=0,sum[10000]={0};
        for(int j=1;j<=i;j++)
            sum[j]=a[j];
        while(tt>0){ //这里tt必须是>0,写成“tt”是不行的(非零即真) 
            int pos=0;
            for(int j=1;j<=i;j++)
                if(sum[j]>sum[pos])
                    pos=j;
            if(!pos)    break;
            ans+=sum[pos];
            sum[pos]-=dis[pos];
            tt--;
        }
        aaa=max(ans,aaa);
    }
    cout<<aaa<<endl;
    return 0;
}

优先队列优化后风味更佳哦

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。