暴力求助[玄关]
查看原帖
暴力求助[玄关]
989997
DGL__DGL_AFO楼主2024/4/15 21:22

10分 至少样例能过

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,cnt,res;
struct L
{
	ll l,r,h;
	bool operator < (const L&t) const
	{
		return l<t.l;  
		return h>t.h;
	}
}  m[414514];

ll ans;

int main()
{
	//freopen("P2061_2.in","r",stdin);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int a;
		cin>>m[i].l>>a>>m[i].h;
		m[i].r=a-1;
	}
		
	
	sort(m+1,m+1+n);
	
	/*for(int i=1;i<=n;i++)
	  cout<<m[i].l<<' '<<m[i].r<<' '<<m[i].h<<endl;*/
	res=m[1].l;	
	for(int i=1;i<=n;i++)
	{
		int p=0;
		if(m[i].r>=res)
		{
			for(int j=i+1;j<=n;j++)
			  if(m[i].r<m[j].l)
			    break;
			  else if(m[i].h<m[j].h)
		  	{
			  	ans+=(ll)(m[j].l-res)*m[i].h;
				  p=1;
				  
				 // cout<<res<<' '<<m[j].l<<' '<<m[i].h<<" ";
				  res=m[j].l;
					break;
			  }  
		  if(p==0)	
	  	{
		  	ans+=(ll)(m[i].r-res+1)*(m[i].h);
		     
		    //cout<<res<<' '<<m[i].r<<' '<<m[i].h<<' ';
		    for(int j=i+1;j<=n;j++)
		    	if(m[j].l>=m[i].r+1)
		    	{
		    		res=m[j].l;
		    		break;
					}
	  
			
			}
		}
		
	}
	cout<<ans;
	
	return 0;
}
2024/4/15 21:22
加载中...