| 比赛 |
26暑假集训模拟赛1 |
评测结果 |
AWWWWEEEEEEEEEEEEEEEE |
| 题目名称 |
Haybale Stacks |
最终得分 |
4 |
| 用户昵称 |
郑霁桓 |
运行时间 |
3.548 s |
| 代码语言 |
C++ |
内存使用 |
4.86 MiB |
| 提交时间 |
2026-06-29 12:31:54 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long T,n,m,a[500005],p[2505],s[2505],c[2505],dp[2505][105];
struct mm{
long long pp,ss,cc;
}b[2505];
bool cp(mm x,mm y){
return x.cc<y.cc;
}
int main(){
freopen("Stacks.in","r",stdin);
freopen("Stacks.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>T;
while(T--){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>m;
long long mx=0;
for(int i=1;i<=m;i++) cin>>b[i].pp>>b[i].ss>>b[i].cc,mx=max(mx,b[i].ss);
if(mx==1){
sort(b+1,b+m+1,cp);
for(int i=1;i<=n;i++){
int ss=0;
for(int j=1;j<=m;j++){
if(a[i]>=b[j].pp) ss+=b[j].cc*(a[i]-b[j].pp+1),a[i]=b[j].pp-1;
}
cout<<ss<<" ";
}
continue;
}
for(int i=0;i<=m;i++){
for(int j=0;j<=100;j++){
dp[i][j]=1e18;
}
}
dp[0][0]=0;
for(int i=1;i<=m;i++){
for(int j=0;j<=100;j++){
dp[i][j]=dp[i-1][j];
if(j>=b[i].pp+b[i].ss-1) dp[i][j]=min(dp[i][j],dp[i][j-b[i].ss]+b[i].cc);
else dp[i][j]=min(dp[i][j],dp[i][b[i].pp-1]+b[i].cc);
}
}
for(int i=1;i<=n;i++) cout<<dp[m][a[i]]<<" ";
cout<<"\n";
}
return 0;
}