1 #include <bits/stdc++.h> 2 using namespace std; 3 struct node{ 4 int x,y,z,s; 5 }f[1005]; 6 int a[4],l,ans,dp[1005]; 7 bool cmp(node c,node d) 8 { 9 return c.x<=d.x; 10 } 11 bool big(int x,int y) 12 { 13 return x>y; 14 } 15 int main() 16 { 17 freopen("tower.in","r",stdin); 18 freopen("tower.out","w",stdout); 19 int n; 20 cin>>n; 21 for(int i=1;i<=n;i++) 22 { 23 cin>>a[1]>>a[2]>>a[3]; 24 sort(a+1,a+4,big); 25 f[++l]={a[1],a[2],a[3],a[1]*a[2]}; 26 f[++l]={a[1],a[3],a[2],a[1]*a[3]}; 27 f[++l]={a[2],a[3],a[1],a[2]*a[3]}; 28 } 29 sort(f+1,f+l+1,cmp); 30 for(int i=1;i<=l;i++) 31 { 32 dp[i]=f[i].z; 33 for(int j=i;j>=1;j--) 34 { 35 if(f[j].x<f[i].x && f[j].y<f[i].y) 36 dp[i]=max(dp[i],dp[j]+f[i].z); 37 } 38 ans=max(ans,dp[i]); 39 } 40 cout<<ans; 41 return 0; 42 }
1 #include<bits/stdc++.h> 2 typedef long long ll; 3 using namespace std; 4 ll dp[3][1005][1005],f[3][1005][1005]; 5 int main() 6 { 7 freopen("tlrw.in","r",stdin); 8 freopen("tlrw.out","w",stdout); 9 ll n; 10 cin>>n; 11 for(int i=1;i<=n;i++) 12 for(int j=1;j<=n;j++) 13 { 14 ll x; 15 cin>>x; 16 while(x%2==0) 17 { 18 dp[1][i][j]++; 19 x/=2; 20 } 21 while(x%5==0) 22 { 23 dp[2][i][j]++; 24 x/=5; 25 } 26 } 27 for(int i=1;i<=n;i++) 28 for(int j=1;j<=n;j++) 29 { 30 if(i==1&&j==1) 31 { 32 f[1][i][j]=dp[1][i][j]; 33 f[2][i][j]=dp[2][i][j]; 34 } 35 else if(i==1) 36 { 37 f[1][i][j]=dp[1][i][j]+f[1][i][j-1]; 38 f[2][i][j]=dp[2][i][j]+f[2][i][j-1]; 39 } 40 else if(j==1) 41 { 42 f[1][i][j]=dp[1][i][j]+f[1][i-1][j]; 43 f[2][i][j]=dp[2][i][j]+f[2][i-1][j]; 44 } 45 else 46 { 47 f[1][i][j]=dp[1][i][j]+min(f[1][i][j-1],f[1][i-1][j]); 48 f[2][i][j]=dp[2][i][j]+min(f[2][i][j-1],f[2][i-1][j]); 49 } 50 } 51 cout<<min(f[1][n][n],f[2][n][n]); 52 fclose(stdin); 53 fclose(stdout); 54 return 0; 55 }
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,a[5005],v[5005],ans,m; 4 int main() 5 { 6 freopen("box.in","r",stdin); 7 freopen("box.ans","w",stdout); 8 ios::sync_with_stdio(false); 9 cin>>n; 10 for (int i=1;i<=n;i++) cin>>a[i]; 11 sort(a+1,a+n+1); 12 for (int i=1;i<=n;i++) 13 if(!v[i]) 14 { 15 ans++; 16 m=1; 17 for (int j=i+1;j<=n;j++) 18 if (!v[j]&&a[j]>=m) 19 { 20 v[j]=1; 21 m++; 22 } 23 } 24 cout<<ans<<endl; 25 fclose(stdin); 26 fclose(stdout); 27 return 0; 28 }
标签:sort,8.2,记录,int,++,做题,freopen,1005,dp From: https://www.cnblogs.com/wyh0721/p/17602468.html