4 条题解

  • 2
    @ 2025-1-22 15:40:03

    Python贪心

    n=int(input())
    z=[]
    num=1
    for i in range(n):
        a=list(map(int,input().split()))
        z.append(a)
    z.sort(key=lambda x: x[1])
    k=z[0][1]
    for i in range(len(z)):
        if z[i][0]>=k:
            k=z[i][1]
            num+=1
    print(num)
    
    
    • 2
      @ 2024-11-23 11:08:35
      #define int long long
      using namespace std;
      const int N=1e5+66;
      int n,t,ed;
      int ans=0;
      struct node {
      	int start,end;
      } a[N];
      bool cmp(node a,node b) {
      	if(a.end==b.end)
      		return a.start<b.start;
      	return a.end<b.end;
      }
      signed main() {
      	cin>>n;
      	for(int i=1; i<=n; i++) {
      		cin>>a[i].start>>a[i].end;
      		ed=max(ed,a[i].end);
      	}
      	int flag=0;
      	stable_sort(a+1,a+n+1,cmp);//nmsl
      //	for(int i=1;i<=n;i++)
      //		cout<<a[i].start<<" "<<a[i].end<<endl;
      	for(int i=1; i<=n; i++) {
      		if(a[i].start>=flag) {
      			ans++,flag=a[i].end;
      		}
      		//cout<<flag<<endl;
      	}
      	cout<<ans;
      
      
      

      我一世英名毁在忘记调用排序上了,艹

      • 1
        @ 2024-11-23 12:22:31

        动态规划求解

        #include<bits/stdc++.h>
        using namespace std;
        int const N=1e5+10;
        struct node
        {
        	int st,ed;
        }q[N];
        int cmp(node x,node y)
        {
        	if(x.st==y.st) return x.ed<y.ed;
        	return x.st<y.st;
        }
        int dp[N];
        int main()
        {
        	int n;
        	cin>>n;
        	for(int i=1;i<=n;i++)
        	{
        		cin>>q[i].st>>q[i].ed;
        	}
        	sort(q+1,q+1+n,cmp);
        	for(int i=1;i<=n;i++)
        	{
        		dp[i]=1;
        		for(int j=i-1;j>=1;j--)
        		{
        			if(q[j].ed<=q[i].st) dp[i]=max(dp[i],dp[j]+1);
        		}
        	}
        	int ans=0;
        	for(int i=1;i<=n;i++)
        	{
        		ans=max(ans,dp[i]);
        	}
        	cout<<ans<<endl;
        	return 0;
        }
        
        • 0
          @ 2024-11-23 8:24:22
          #include <bits/stdc++.h>
          #define int long long
          using namespace std;
          const int N = 1e3+5;
          int n;
          struct Node
          {
          	int l,r;
          	bool operator <(const Node &oth)const
          	{
          		if(r-l==oth.r-oth.l)
          		{
          			if(l==oth.l)
          				return r<oth.r;
          			else
          				return l<oth.l;
          		}
          		else
          			return r-l<oth.r-l;
          	} 
          };
          Node a[N];
          signed main()
          {
          	cin>>n;
          	int s,t;
          	for(int i=1;i<=n;i++)
          	{
          		cin>>s>>t;
          		a[i].l=s,a[i].r=t;
          	}
          	sort(a+1,a+1+n);
          	int ans=0;
          	int now=0;
          	for(int i=1;i<=n;i++)
          	{
          		s=a[i].l,t=a[i].r;
          		if(s>=now) ans++,now=t;
          	}
          	cout<<ans;
          	return 0;
          }
          
          • 1

          信息

          ID
          955
          时间
          1000ms
          内存
          256MiB
          难度
          8
          标签
          (无)
          递交数
          208
          已通过
          25
          上传者