首页 > 其他分享 >寻找宝藏

寻找宝藏

时间:2024-07-30 15:58:44浏览次数:14  
标签:tmp int 寻找 id -- ans 宝藏 300005

  • 树状数组可以用来维护前缀最大值
  • 把矩形按某个坐标排序来处理问题的思想
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int p[300005],v[300005],n,m;
long long ans[300005],tmp[300005],f[300005],g[300005],h[300005],c[300005];
struct t1
{
	int x1,y1,x2,y2,id;
}t[300005];
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,long long va)
{
	while(n1<=n)
	{
		c[n1]=max(c[n1],va);
		n1+=lowbit(n1);
	}
}
long long ask(int n1)
{
	long long s=0;
	while(n1>0)
	{
		s=max(s,c[n1]);
		n1-=lowbit(n1);
	}
	return s;
}
bool cmpx1(t1 a,t1 b)
{
	return a.x1<b.x1;
}
bool cmpx2(t1 a,t1 b)
{
	return a.x2>b.x2;
}
void solve1()
{
	for(int i=1;i<=n;i++)
	{
		c[i]=0;
	}
	sort(t+1,t+m+1,cmpx1);
	int j=0;
	for(int i=1;i<=m;i++)
	{
		while(j+1<=n&&j+1<t[i].x1)
		{
			j++;
			add(n+1-p[j],h[j]);
		}
		ans[t[i].id]=max(ans[t[i].id],ask(n+1-(t[i].y2+1)));
	}
}
void solve2()
{
	for(int i=1;i<=n;i++)
	{
		c[i]=0;
	}
	sort(t+1,t+m+1,cmpx2);
	int j=n+1;
	for(int i=1;i<=m;i++)
	{
		while(j-1>=1&&j-1>t[i].x2)
		{
			j--;
			add(p[j],h[j]);
		}
		ans[t[i].id]=max(ans[t[i].id],ask(t[i].y1-1));
	}
}
void solve3()
{
	for(int i=1;i<=n;i++)
	{
		c[i]=0;
	}
	sort(t+1,t+m+1,cmpx1);
	int j=0;
	for(int i=1;i<=m;i++)
	{
		while(j+1<=n&&j+1<t[i].x1)
		{
			j++;
			add(p[j],f[j]);
		}
		tmp[t[i].id]=ask(t[i].y2);
	}
	for(int i=1;i<=n;i++)
	{
		c[i]=0;
	}
	j=n+1;
	for(int i=m;i>=1;i--)
	{
		while(j-1>=1&&j-1>=t[i].x1)
		{
			j--;
			add(n+1-p[j],g[j]);
		}
		tmp[t[i].id]+=ask(n+1-(t[i].y2+1));
		ans[t[i].id]=max(ans[t[i].id],tmp[t[i].id]);
	}
}
void solve4()
{
	for(int i=1;i<=n;i++)
	{
		c[i]=0;
	}
	sort(t+1,t+m+1,cmpx2);
	int j=0;
	for(int i=m;i>=1;i--)
	{
		while(j+1<=n&&j+1<=t[i].x2)
		{
			j++;
			add(p[j],f[j]);
		}
		tmp[t[i].id]=ask(t[i].y1-1);
	}
	for(int i=1;i<=n;i++)
	{
		c[i]=0;
	}
	j=n+1;
	for(int i=1;i<=m;i++)
	{
		while(j-1>=1&&j-1>t[i].x2)
		{
			j--;
			add(n+1-p[j],g[j]);
		}
		tmp[t[i].id]+=ask(n+1-t[i].y1);
		ans[t[i].id]=max(ans[t[i].id],tmp[t[i].id]);
	}
}
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		cin>>n>>m;
		for(int i=1;i<=n;i++)
		{
			c[i]=0;
		}
		for(int i=1;i<=n;i++)
		{
			p[i]=read1();
			v[i]=read1();
			f[i]=v[i]+ask(p[i]);
			add(p[i],f[i]);
		}
		for(int i=1;i<=n;i++)
		{
			c[i]=0;
		}
		for(int i=n;i>=1;i--)
		{
			g[i]=v[i]+ask(n+1-p[i]);
			add(n+1-p[i],g[i]);
			h[i]=f[i]+g[i]-v[i];
		}
		for(int i=1;i<=m;i++)
		{
			t[i].x1=read1();
			t[i].y1=read1();
			t[i].x2=read1();
			t[i].y2=read1();
			t[i].id=i;
		}
		solve1();
		solve2();
		solve3();
		solve4();
		for(int i=1;i<=m;i++)
		{
			printf("%lld\n",ans[i]);
			ans[i]=0;
		}
	}
	return 0;
}

标签:tmp,int,寻找,id,--,ans,宝藏,300005
From: https://www.cnblogs.com/watersail/p/18332637

相关文章

  • 寻找事业伴侣:男人如何找到匹配自己事业的女人
    寻找事业伴侣:男人如何找到匹配自己事业的女人前言在攀登事业的征途上,每位男士都渴望有一位能够并肩作战的伴侣。她不仅要理解你的抱负,还要支持你的每一个决定。但现实中,找到这样的女人并非易事。以下是一些深入的建议,帮助你找到那个能够与你共同成长的女人。一、事业伴侣......
  • 如何比较两个大的温度矩阵数据集并对差异/相似之处进行分类?我如何继续寻找好的方法?
    我有以下问题:我想在python中比较热图像(数据以一个大矩阵/每个像素一个值的形式出现)并了解它们的不同。哪些统计方法是相关的?我如何继续找到一个好的测试?在python中比较矩阵/图片的其他方法是什么?我有一些数据集,并且知道其中一些数据应该被测试视为不同的,而有些数据应该被......
  • 第二届你要魔怔杯鲜花大赛参赛作品 - 运输小猫娘之再续 5k 传奇之寻找人道主义素数
    第二届你要魔怔杯鲜花大赛原文前情提要本章主角5k_sync_closer第一章从再续前缘到苦心寻找满足最优条件的人道主义美丽素数上回书说到,5k因为拯救大家被炸断了\(1000000007\)米中的十五千米,尽管大家的欢呼声如此热烈,就像大家的热量正在像烈火一样散发出来,但是5k却无心......
  • 用这些宝藏AI工具打造副业!实现被动收入!
    前言大家好,我是月月!今天我们来梳理一下在目前的形势下,如何用AI工具打造一个躺赚的副业,实现被动收入?有哪些方法和途径?在本篇文章我主要提供一些已有的AI工具,后面我们再根据具体的AI工具和场景来详细聊聊!1、pyVideoTranspyVideoTrans是一个集成多种功能的视频翻译工具,能够......
  • 透明加密技术分享丨实测十款透明加密软件(宝藏收藏篇)
    小李:“最近公司数据安全问题频发,咱们得找些靠谱的透明加密软件来加强防护。”小王:“没错,我听说市面上有不少优秀的透明加密软件,咱们可以实测一下,挑出最适合咱们公司的。” 于是,他们开始了对十款透明加密软件的实测之旅,以下便是他们的发现与分享。第一款:域智盾基本信息:类......
  • AI视频元年AI漫画推文小众宝藏网站巨日禄体验教程
    2024年可谓AI视频元年,继Sora炸场引发科技圈全球讨论,国外AI圈继续开卷,国内大厂也努力提升视频生成时长和质量。抖音的即梦、快手的可灵、爱诗科技的PixVerse都令人眼前一亮也让我们对国产AI视频有了更多期待!AI视频的出现给影视制作一定会带来挑战和机遇。而对于普通大众小伙伴,......
  • 解锁Nginx日志的宝藏:GoAccess——你的实时、交互式Web日志分析神器!
    在当今数字化的时代,网站的流量和用户行为数据就像是一座蕴藏着无尽秘密的宝藏。而如何有效地挖掘和分析这些数据,成为了许多网站管理者和开发者头疼的问题。GoAccess,一款开源的实时Web日志分析工具,或许能为我们提供一扇窥探这些秘密的窗口。GoAccess:你的流量分析好帮手GoAccess......
  • Java语言程序设计基础篇_编程练习题**15.17 (几何问题:寻找边界矩形)
    **15.17(几何问題:寻找边界矩形)请编写一个程序,让用户可以在一个二维面板上动态地增加和移除点,如图15-29a所示。当点加入和移除的时候,一个最小的边界矩形更新显示。假设每个点的半径是10像素解题思路:这道题可以从编程练习题15.15修改新建一个面板Pane(),方法外部新建一个......
  • 162. 寻找峰值
    题目链接:法一、暴力\(O(n)\)classSolution{public:intfindPeakElement(vector<int>&nums){intn=nums.size();if(n==1)return0;if(n==2){if(nums[0]<nums[1])return1;elseif(nu......
  • 挖矿宝藏之注册表
    目录一、注册表二、注册表类型三、登录注册表四、注册表命令调用一、注册表注册表相当于Windows系统的分层树状数据库,由根键、子键、项和项值组成,用于存储启动信息、系统信息、用户环境配置信息、软硬件配置和状态信息、系统组件信息等。注册表可以通过注册表编辑器或......