萌新求助分块
查看原帖
萌新求助分块
366338
fjy666楼主2021/3/19 15:17

RTRT,差分好题被硬生生地用分块。
结果……Wrong Answer\Huge{\color{red}{Wrong\ Answer}}
但萌新不知道为什么啊……

#include <cstdio>
#include <cassert>
#define fo(i_,j_,k_) for(int i_=j_;i_<=k_;++i_)
#define rtn return

const int kMaxn = 200005;
int id[kMaxn],a[kMaxn],b[kMaxn],len,n;

void Init_block(void)
{
	len = 500;
	fo(i,1,::n)
	{
		id[i] = (i-1) / len + 1;
	}
} 

void Add(int l,int r)
{
	int sid = id[l],eid = id[r];
	if(sid == eid)
	{
		fo(i,l,r)++a[i];
		rtn;
	}
	for(int i = l;id[i] == sid; ++i)++a[i];
	for(int i = sid + 1;i < eid;++i)++b[i];
	for(int i = r;id[i] == eid; --i)++a[i];
}

int main()
{
	int k,q; 
	scanf("%d%d%d",&::n,&k,&q);
	Init_block();
	fo(i,1,n)
	{
		int l,r;
		scanf("%d%d",&l,&r);
		Add(l,r);
	}
	fo(i,1,200000)
		a[i] = ((a[i] + b[id[i]]) >= k)?1:0;
	fo(i,1,200000)
		b[i] = b[i-1] + a[i];
	fo(i,1,1)
	{
		int l,r;
		scanf("%d%d",&l,&r);
		printf("%d\n",b[r] - b[l-1]);
	}
    rtn 0;
}

甚至连错误数据都拿到了……

2021/3/19 15:17
加载中...