标签:nbsp 开始 turn 最小 枚举 name font nod lse
关于枚举高度,那就从最大值开始递减可以尽量节约时间
由于数据很弱,下面这个弱弱的代码就能AC
#include<bits/stdc++.h> using namespace std; struct node{ int w,h; }a[1050]; int n; long long ans=2e9; int main() { cin>>n; int max_h=0,min_h=2e9; for(int i=1;i<=n;i++) { cin>>a[i].w>>a[i].h; max_h=max(max_h,a[i].h); max_h=max(max_h,a[i].w); min_h=min(min_h,a[i].h); min_h=min(min_h,a[i].w); } for(int i=max_h;i>=min_h;i--) { bool flag=false; int w=0; for(int j=1;j<=n;j++) { int maxn=max(a[j].h,a[j].w); int minn=min(a[j].h,a[j].w); if(minn>i)//两边长都超出此高度,直接break外层循环 { flag=true; break; } if(maxn>i) w+=maxn;//maxn不能做高,只能加进宽 else w+=minn;//两边长都在高度范围内,从贪心的角度,选小的加进去 } if(flag) break; long long t=w*i; ans=min(ans,t); } cout<<ans; return 0; }
标签:nbsp 开始 turn 最小 枚举 name font nod lse
原文地址:https://www.cnblogs.com/zhouzhihao/p/11216118.html