4 条题解

  • 2
    @ 2025-3-3 9:26:33

    梁成爱玩原神

    • 0
      @ 2024-11-23 8:25:38
      #include<bits/stdc++.h>
      #define int long long
      using namespace std;
      const int N=5e3+5;
      const int M=1e5+5;
      int n,m;
      struct Node{
      	int l,r,val;
      	bool operator <(const Node &oth)const
      	{
      		return r<oth.l;
      	}
      }a[N];
      int dp[M];
      signed main() {
      	cin>>n>>m;
      	int l,r,val;
      	for(int i=1;i<=n;i++){
      		cin>>l>>r>>val;
      		a[i].l=l,a[i].r=r,a[i].val=val;
      	}
      	sort(a+1,a+1+n);
      	for(int i=m;i>=1;i--){
      		dp[i]=max(dp[i],dp[i+1]);
      		for(int j=1;j<=n;j++){
      			if(a[j].l==i) dp[i]=max(dp[i],dp[a[j].r+1]+a[j].val);
      		}
      	}
      	cout<<dp[1];
      }
      
      • 0
        @ 2024-11-22 21:36:20
        n,m=map(int,input().split())
        l=[0]*5005
        r=[0]*5005
        v=[0]*5005
        for i in range(n):
            l[i],r[i],v[i]=map(int,input().split())
        for i in range(n):
            for j in range(n-i):
                if r[j]>r[j+1]:
                    l[j],l[j+1]=l[j+1],l[j]
                    r[j],r[j+1]=r[j+1],r[j]
                    v[j],v[j+1]=v[j+1],v[j]
        dp=[0]*100005
        i=1
        for j in range(m+1):
            if j>0:
                dp[j]=dp[j-1]
            while i<=n and r[i]<=j:
                dp[r[i]]=max(dp[r[i]],dp[l[i]-1]+v[i])
                i+=1
        print(dp[m])
        
        • 0
          @ 2024-11-22 21:36:05
          #include<bits/stdc++.h>
          #define mst(a,b) memset(a,b,sizeof a)
          template<class T>inline void read(T &x){x=0;char c=getchar();bool f=0;for(;!isdigit(c);c=getchar())if(c=='-')f=1;for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0';x=f?(~(x-1)):x;}
          template<class T>inline void write(T x){if(x<0)return putchar('-'),write(-x),void();if(x>=10)write(x/10);putchar(x%10+'0');return;}
          template<class T>inline void print(T x){write(x);putchar('\n');}
          template<typename type,typename ...T>inline void read(type &x,T&...y){read(x),read(y...);}
          using namespace std;
          const int N=5e3,M=1e5;
          int n,m;
          struct node{
          	int l,r,v;
          	inline friend bool operator <(node _x,node _y){
          		return _x.r<_y.r;
          	}
          }wt[N];
          int dp[M];
          signed main(){
          	read(n,m);
          	for(int i=1;i<=n;++i){
          		read(wt[i].l,wt[i].r,wt[i].v);
          	}
          	sort(wt+1,wt+n+1);
          	mst(dp,0);
          	for(int i=1,j=1;i<=m;++i){
          		dp[i]=dp[i-1];
          		for(;j<=n&&wt[j].r<=i;++j){
          			dp[wt[j].r]=max(dp[wt[j].r],dp[wt[j].l-1]+wt[j].v);
          		}
          	}
          	print(dp[m]);
          	return 0;
          }
          
          • 1

          信息

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