1 solutions

  • 0
    @ 2024-12-11 0:25:37

    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