1 solutions
-
0
C++ :
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; int a[1100],b[1100]; void qsort(int l,int r) { int i,j,mid,p; i=l; j=r; mid=a[(l+r)/2]; while (i<=j) { while (a[i]<mid) i++; while (a[j]>mid) j--; if (i<=j) { p=a[i]; a[i]=a[j]; a[j]=p; p=b[i]; b[i]=b[j]; b[j]=p; i++; j--; } } if (l<j) qsort(l,j); if (i<r) qsort(i,r); } int main() { int n,i,k,x,j,c[1010]; cin>>n; for (i=1;i<=n;i++) { cin>>a[i]>>b[i]; a[i]=a[i]*10000+b[i]; } qsort(1,n); k=1; c[1]=b[1]; for (i=2;i<=n;i++) { x=0; for (j=1;j<=k;j++) if (c[j]<=b[i]) { if (x==0) x=j; else if (c[j]>c[x]) x=j; } if (x==0) c[++k]=b[i]; else c[x]=b[i]; } cout<<k<<endl; return 0; }
Pascal :
var l,w,p:array[1..1001] of longint; i,j,n,t:longint; begin readln(n); for i := 1 to n do read(l[i],w[i]); for i:=1 to n-1 do for j:=i+1 to n do if (l[i]>l[j])or((l[i]=l[j])and(w[i]>w[j])) then begin t:=l[i];l[i]:=l[j];l[j]:=t; t:=w[i];w[i]:=w[j];w[j]:=t; end; i:=1; fillchar(p,sizeof(p),0); t:=0; for i:=1 to n do begin j:= 1; while p[j]>w[i] do inc(j); if j>t then inc(t); p[j]:=w[i]; end; writeln(t); end.
Python :
# coding=utf-8 # 零件分组(Stick) def min_group(num_obj, obj_feature_pair): pair_list = [] # 组成对 processed_list = [] # 被分组过的零件 group = 0 # 组数 for i in range(0, len(obj_feature_pair), 2): pair_list.append([obj_feature_pair[i], obj_feature_pair[i + 1]]) pair_list.sort(key=lambda i: (i[0], i[1])) # 按照长度-》重量排列零件 while len(processed_list) != num_obj: min_f1 = -float('inf') min_f2 = -float('inf') start_flag = False # 出现满足条件的零件标识 for index, pair in enumerate(pair_list): if pair[0] >= min_f1 and pair[1] >= min_f2 and index not in processed_list: start_flag = True min_f1 = pair[0] min_f2 = pair[1] processed_list.append(index) if start_flag: group += 1 return group n = int(input()) li = list(map(int, input().split())) print(min_group(n, li))
- 1
Information
- ID
- 709
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By