MnZn 求助 WA on 389
查看原帖
MnZn 求助 WA on 389
310818
蒟酱厂妹楼主2022/10/4 08:57
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cassert>
#define siz(x) int((x).size())
#define cauto const auto
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
using std::cin;using std::cout;
using std::max;using std::min;
template<typename any>inline void cmin(any &x,const any &y){if(y<x)x=y;}
template<typename any>inline void cmax(any &x,const any &y){if(x<y)x=y;}
template<typename any,typename...args>inline void cmax(any &x,const any &y,const args &...z){cmax(x,y);cmax(x,z...);}
template<typename any,typename...args>inline void cmin(any &x,const any &y,const args &...z){cmin(x,y);cmin(x,z...);}
using loli=long long;
using uloli=unsigned long long;
using lodb=long double;
using venti=__int128_t;
using pii=std::pair<int,int>;
using inlsi=const std::initializer_list<int>&;
using bsi=std::basic_string<int>;
constexpr venti operator""_vt(uloli x){return venti(x);}
constexpr int N=86410,inf=0x3f3f3f3f;
int n,m1,m2,ans=inf,s[N<<2];
struct cow{
	int t1,t2,w;
	friend bool operator<(const cow &x,const cow &y){
		return x.t2<y.t2;
	}
}a[N];
#define ls (u<<1)
#define rs (u<<1|1)
#define mid ((l+r)>>1)
void updata(int u,int l,int r,int x,int k){
	// if(l==r){s[u]=k;return;}
	if(l==r){cmin(s[u],k);return;}
	x<=mid?updata(ls,l,mid,x,k):updata(rs,mid+1,r,x,k);
	s[u]=min(s[ls],s[rs]);
}
int query(int u,int l,int r,int x,int y){
	if(x<=l&&r<=y)return s[u];
	int res=inf;
	if(x<=mid)cmin(res,query(ls,l,mid,x,y));
	if(y>mid)cmin(res,query(rs,mid+1,r,x,y));
	return res;
}
#undef ls
#undef rs
#undef mid
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	std::ios::sync_with_stdio(false);cin.tie(nullptr);
	cin>>n>>m1>>m2;m1++,m2++;
	for(int i=1;i<=n;i++)cin>>a[i].t1>>a[i].t2>>a[i].w,a[i].t1++,a[i].t2++,cmax(a[i].t1,m1),cmin(a[i].t2,m2);
	std::sort(a+1,a+1+n);
	for(int i=m1+1;i<=m2+1;i++)updata(1,1,m2+1,i,inf);
	for(int i=1;i<=n;i++)updata(1,1,m2+1,a[i].t2+1,query(1,1,m2+1,a[i].t1,a[i].t2)+a[i].w);
	cout<<query(1,1,m2+1,m2,m2);
	return 0;
}

只有 70 分,看了 WA on 89 的改法只有 0 分了。

2022/10/4 08:57
加载中...