零件分组(stick)
#include<iostream> #include<algorithm> using namespace std; struct node { int l,w; }a[1010]; int t[1010]; bool cmp(node x,node y) { if(x.l==y.l) return x.w<y.w; return x.l<y.l; } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].l>>a[i].w; } sort(a+1,a+n+1,cmp); int ans=0; bool flag=0; for(int i=1;i<=n;i++) { flag=0; for(int j=1;j<=ans;j++) { if(a[i].w>=t[j]) { t[j]=a[i].w; flag=1; break; } } if(!flag) { ans++; t[ans]=a[i].w; } } cout<<ans; return 0; }
先给长度排序,再按条件将重量分组