首页 > 其他分享 >[SHOI2007] 园丁的烦恼

[SHOI2007] 园丁的烦恼

时间:2024-07-30 13:40:58浏览次数:12  
标签:园丁 struct int 烦恼 t1 cc SHOI2007 n1 500005

  • 二维数点问题
  • 我们通过扫描线可以将静态的二维问题转换为动态的一维问题
  • 维护动态的一维问题就使用数据结构维护序列
点击查看代码
#include <bits/stdc++.h>
using namespace std;
struct t1
{
	int x,y;
}t[500005];
struct q1
{
	int x1,y1,x2,y2;
}q[500005];
struct l1
{
	int x,y1,y2,id,opt;
}l[1000005];
int c[10000005],ans[500005];
int read1()
{
	char cc=getchar();
	while(!(cc>=48&&cc<=57))
	{
		if(cc=='-')
		{
			break;
		}
		cc=getchar();
	}
	bool f=false;
	int s=0;
	if(cc=='-')
	{
		f=true;
	}
	else
	{
		s=cc-48;
	}
	while(1)
	{
		cc=getchar();
		if(cc>=48&&cc<=57)
		{
			s=s*10+cc-48;
		}
		else
		{
			break;
		}
	}
	if(f==true)
	{
		s=-s;
	}
	return s;
}
int lowbit(int n)
{
	return n&(-n);
}
void add(int n1)
{
	if(n1==0)
	{
		c[0]++;
		return;
	}
	while(n1<=10000000)
	{
		c[n1]++;
		n1+=lowbit(n1);
	}
}
int ask(int n1)
{
	int s=0;
	while(n1>0)
	{
		s+=c[n1];
		n1-=lowbit(n1);
	}
	return s+c[0]*(n1>=0);
}
bool cmpt(t1 a,t1 b)
{
	return a.x<b.x;
}
bool cmpl(l1 a,l1 b)
{
	return a.x<b.x;
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		t[i].x=read1();
		t[i].y=read1();
	}
	for(int i=1;i<=m;i++)
	{
		q[i].x1=read1();
		q[i].y1=read1();
		q[i].x2=read1();
		q[i].y2=read1();
		l[i].x=q[i].x1-1;
		l[i+m].x=q[i].x2;
		l[i].y1=l[i+m].y1=q[i].y1;
		l[i].y2=l[i+m].y2=q[i].y2;
		l[i].id=l[i+m].id=i;
		l[i].opt=-1;
		l[i+m].opt=1;
	}
	sort(t+1,t+n+1,cmpt);
	sort(l+1,l+2*m+1,cmpl);
	int j=0;
	for(int i=1;i<=2*m;i++)
	{
		while(j+1<=n&&t[j+1].x<=l[i].x)
		{
			j++;
			add(t[j].y);
		}
		ans[l[i].id]+=(l[i].opt*(ask(l[i].y2)-ask(l[i].y1-1)));
	}
	for(int i=1;i<=m;i++)
	{
		printf("%d\n",ans[i]);
	}
	return 0;
}

标签:园丁,struct,int,烦恼,t1,cc,SHOI2007,n1,500005
From: https://www.cnblogs.com/watersail/p/18332163

相关文章

  • 【2024-06-12】自我烦恼
    20:00现在我们做中国人要顶勇敢,什么都不怕,什么都顶有决心才好。                                                 ——林徽因昨天一整天,心思都不在工作,打开手机,插着充......
  • 语音转文字电脑工具有哪些?6个工具助你告别会议烦恼
    不知道打工人们是否有同样的感受,对开会记录会议纪要非常苦恼。因为不仅耗费了大量的时间和精力,而且稍有不慎,就可能漏掉一些至关重要的信息。然而,就在俺感到无比沮丧之时,还好得到一位朋友的推荐,他向俺介绍了几款能够迅速将语音转换为文字的神奇工具。自从俺使用这些工具后,再也......
  • 2024年华为OD机试真题-快递员的烦恼-C++-OD统一考试(C卷D卷)
     2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述:快递公司每日早晨,给每位快递员推送需要送到客户手中的快递以及路线信息,快递员自己又查找了一些客户与客户之间的路线距离信息,请你依据这些信息,给快递员设计一条最短路径,告诉他最短路......
  • 轻松赚取零花钱,这些神器APP让你告别广告烦恼!
    在快节奏的现代生活中,很多人都希望能够在闲暇之余轻松赚取一些零花钱。然而,很多所谓的赚钱软件却充斥着大量的广告,让人不胜其烦。今天,我就为大家介绍9款不用看广告就能赚零花钱的软件,其中包括备受好评的“千行赏金”,让你在享受赚钱乐趣的同时,远离广告的打扰!一、千行赏金——你......
  • [SHOI2007]书柜的尺寸 题解
    题目链接设\(f_{i,t1,t2}\)表示前\(i\)本书,第一层的宽度为\(t1\),第二层的宽度为\(t2\),所需要的最小高度。第三层宽度\(t3=\sum_{i=1}^{i}t_i-t1-t2\)。但本题还有一个重要限制:每层的高度取决于该层最高的书,如果直接按照顺序加入书本,从\(dp\)的状态来看,无法确定新书本......
  • 国王的烦恼
    描述C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛。两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了。然而,只要这两座小岛的居民能通......
  • 使用 AI 生成正则表达式,告别正则烦恼
    如果你有处理正则表达式的需求,那么这个网站(autoregex.xyz)一定要收藏好。可以根据文字描述生成正则表达式。默认是从文字到正则,不用选择。输入框中输入描述,点击”GO“按钮。等待一会儿,即可生成正则表达式。还可以解析给定的正则,说明其含义。切换成从正则到文字,然......
  • 报名参加2024CBTC上海国际储能技术展览会,助您拓客爆单没烦恼!
    随着市场饱和度的增加和消费者行为的改变,企业现在获客变得越来越艰难了。目前的市场上,竞争变得越来越激烈,消费者对于品牌的选择和产品的采购也变得更加挑剔和谨慎,更注重品牌的声誉和口碑。因此,企业参展的目的和效率也越来越显而易见。在当下的大环境下,参加展览会是企业进行品......
  • 快递员的烦恼【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-快递员的烦恼快递公司每日早晨,给每位快递员推送需要送到客户手中的快递以及路线信息,快递员自己又查找了一些客户与客户之间的路线距离信息,请你依据这些信息,给快递员设计一条最短路径,告诉他最短路径的距离。注意:不限制快递包裹送到客户手中的顺序,但必须保证都送......
  • OD C卷 - 快递员的烦恼
    快递员的烦恼(200)保证快递送到客户手中,不限制先后顺序;所有快递送完后,快递员还需要回到投递站(只有一个);投递站与客户之间都有路线,但客户与客户之间不一定有路线;投递站、客户位置均允许多次经过;输入描述:首行输入两个正整数n,m;下面n行,输入快递信息,格式为客户id投递站到该......