AC#1线段树+二分球跳
查看原帖
AC#1线段树+二分球跳
752953
sLMxf楼主2025/1/14 08:17

rt,code

#include<bits/stdc++.h>
#define int long long
#define lowbit(x) ((x)&(-x))
#define N 15*114514
using namespace std;
int a[N],n;
const int maxn=N;
struct _{
	int l,r,t;
	void input(){cin>>l>>r>>t
	;}
	bool operator < (const _ A) const {
		return r<A.r;
	}
}s[N];
struct Segment{
	long long a[maxn],w[4*maxn],lzy[4*maxn];
	void pushup(int u)
	{
		w[u]=w[u*2]+w[u*2+1];
	}
	bool InRange(int L,int R,int l,int r)
	{
		return (l<=L)&&(R<=r);
	}
	bool OutofRange(int L,int R,int l,int r)
	{
		return (L>r)||(R<l);
	}
	void maketag(int u,int len,long long x)
	{
		lzy[u]=x;
		w[u]=len*x;
	}
	void pushdown(int u,int l,int r)
	{
		int m=(l+r)/2;
        if(lzy[u]==0) return;
		maketag(u*2,m-l+1,lzy[u]);
		maketag(u*2+1,r-m,lzy[u]);
		lzy[u]=0;
	}
	int query(int l,int r,int u=1,int L=1,int R=n)
	{
		if(InRange(L,R,l,r)) return w[u];
		else if(!OutofRange(L,R,l,r))
		{
			int m=(L+R)/2;
			pushdown(u,L,R);
			return query(l,r,u*2,L,m)+query(l,r,u*2+1,m+1,R);
		}
		else return 0;
	}
	void update(int l,int r,long long x,int u=1,int L=1,int R=n)
	{
		if(InRange(L,R,l,r)) maketag(u,R-L+1,x);
		else if(!OutofRange(L,R,l,r))
		{
			int m=(L+R)/2;
			pushdown(u,L,R);
			update(l,r,x,u*2,L,m);
			update(l,r,x,u*2+1,m+1,R);
			pushup(u);
		}
	}
};
void Main()
{
    Segment bb;
	int k;
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=k;i++)
	{
		s[i].input();
		s[i].l=lower_bound(a+1,a+n+1,s[i].l)-a;
		s[i].r=upper_bound(a+1,a+n+1,s[i].r)-a-1;
		if(s[i].r==0) i--,k--;
	}
	sort(s+1,s+k+1);
	for(int i=1;i<=k;i++)
	{
		int l=s[i].l,r=s[i].r,t=s[i].t;
		if(bb.query(l,r)>=t) continue;
		int L=l-1,R=r-1;
		while(L<R)
		{
			int mid=(L+R+1)>>1;int sum=bb.query(l,mid);
			if(sum+r-mid>=t) L=mid;
			else R=mid-1;
		}
		bb.update(L+1,r,1);
	}
//	for(int i=1;i<=n;i++) cout<<bb.query(i,i)*114514<<' ';
	cout<<n-bb.query(1,n)<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int T;
	cin>>T;
	while(T--) Main();
	return 0;
}
2025/1/14 08:17
加载中...