1 条题解

  • 0
    @ 2022-11-26 10:17:28
    #pragma GCC optimize(1,2,3,"Ofast","inline")
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    #define int long long
    #define fre freopen(".in","r",stdin),freopen(".out","w",stdout)
    #define fcl fclose(stdin),fclose(stdout)
    inline int read() {
    	register int x=0,m=1;
    	register char ch=getchar();
    	while(!isdigit(ch)) {
    		if(ch=='-') m=-1;
    		ch=getchar();
    	}
    	while(isdigit(ch)) {
    		x=(x<<1)+(x<<3)+(ch^48);
    		ch=getchar();
    	}
    	return x*m;
    }
    inline void write(int x) {
    	if(x<0) putchar('-'),write(-x);
    	else {
    		if(x>=10) write(x/10);
    		putchar(x%10+'0');
    	}
    }
    #define read(n) n=read()
    const int N=30;
    int n,h,a[N],f[N],d[N],t[N],Max=-0x3f3f3f3f;
    signed main() {
    //	fre;
    	read(n),read(h);
    	for(register int i=1;i<=n;++i)
    		read(f[i]);
    	for(register int i=1;i<=n;++i)
    		read(d[i]);
    	for(register int i=1;i<n;++i)
    		read(t[i]);
    	h*=12;
    	for(register int i=1;i<=n;++i) {
    		int time=0,sum=0;
    		for(register int j=1;j<=i;++j)
    			a[j]=f[j];
    		for(register int j=1;j<i;++j)
    			time+=t[j];
    		int k=h;
    		while(time<k) {
    			int maxn=-0x3f3f3f3f,maxk=0;
    			for(register int x=1;x<=i;++x) 
    				if(maxn<a[x] && a[x]>0) {
    					maxn=a[x];
    					maxk=x;
    				}
    			if(maxk==0) break;
    			sum+=a[maxk];
    			++time;
    			a[maxk]-=d[maxk];
    		}
    		Max=max(Max,sum);
    	}
    	write(Max);
    //	fcl;
    	return 0;
    }
    
    • 1

    信息

    ID
    219
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    45
    已通过
    12
    上传者