1 条题解
-
0
#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
- 上传者