Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
35013 | LYLAKIOI | 【S】T4 | C++ | 通过 | 100 | 104 MS | 129816 KB | 2021 | 2024-11-21 15:42:13 |
#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair #define p_b push_back typedef long long ll; using namespace std; const int mod=1e9+7; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,fa[255],fb[255],fc[255],wa[255],wb[255],wc[255]; ll dp[255][255][255]; struct nd { ll a,b,c,id; }d[255]; bool cmp1(nd a,nd b){return a.a<b.a;} bool cmp2(nd a,nd b){return a.b<b.b;} bool cmp3(nd a,nd b){return a.c<b.c;} bool cmp4(nd a,nd b){return a.id<b.id;} void cmn(ll &x,ll y){x=min(x,y);} void slv(){ n=read(); up(i,1,n)d[i].a=read(),d[i].b=read(),d[i].c=read(),d[i].id=i; sort(d+1,d+n+1,cmp1);up(i,1,n)fa[i]=d[i].id,wa[i]=d[i].a; sort(d+1,d+n+1,cmp2);up(i,1,n)fb[i]=d[i].id,wb[i]=d[i].b; sort(d+1,d+n+1,cmp3);up(i,1,n)fc[i]=d[i].id,wc[i]=d[i].c; sort(d+1,d+n+1,cmp4); memset(dp,0x3f,sizeof(dp)); dp[0][0][0]=0; up(i,0,n)up(j,0,n)up(k,0,n){ if(i!=n){ int x=fa[i+1]; if(d[x].b<=wb[j]&&d[x].c<=wc[k])cmn(dp[i+1][j][k],dp[i][j][k]+wc[k]-d[x].c+wb[j]-d[x].b); else cmn(dp[i+1][j][k],dp[i][j][k]); } if(j!=n){ int x=fb[j+1]; if(d[x].a<=wa[i]&&d[x].c<=wc[k])cmn(dp[i][j+1][k],dp[i][j][k]+wa[i]-d[x].a+wc[k]-d[x].c); else cmn(dp[i][j+1][k],dp[i][j][k]); } if(k!=n){ int x=fc[k+1]; if(d[x].a<=wa[i]&&d[x].b<=wb[j])cmn(dp[i][j][k+1],dp[i][j][k]+wa[i]-d[x].a+wb[j]-d[x].b); else cmn(dp[i][j][k+1],dp[i][j][k]); } }cout<<dp[n][n][n]; } int main(){ //freopen("bakala.in","r",stdin); //freopen("bakala.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }