首页 > 其他分享 >序列更新

序列更新

时间:2024-07-31 11:52:17浏览次数:10  
标签:ai bi 更新 250005 int 序列 -- cc

  • 考场思路是,离线处理询问,从大到小枚举bi,对每个ai维护已被统计的询问区间
  • 由于数据随机,我们似乎可以感受到已统计询问区间扩张的次数不会太大,于是自然想到有没有办法精准扩张呢?很遗憾,难做
  • 另一个思路是,区间扩张的情况往往集中出现在最大的几个bi
  • 于是引入分块的“大段维护,局部朴素”思想,我们进行一部分区间扩张后,朴素地处理剩下来的情况
  • 题解做法是,对于每次操作,并行考虑两种修改方法:①从ai出发,找到bi,更新ai ②从bi出发,找到ai,更新ai
  • 考虑对最大的几个bi应用方法②修改,那么我们只需要对较小的ai应用①修改
  • 修改次数期望为\(\sum (1-\frac{x}{n})^{i+1}\)(考虑每一步对期望的贡献)
  • 用等比数列求和公式:约等于\(\frac {n}{x}\),解毕
点击查看代码
#include <bits/stdc++.h>
#define pii pair<int,int> 
using namespace std;
long long ans[250005];
int c[250005],k[250005],la[250005];
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;
}
struct t1
{
	int id,va;
}a[250005],b[250005];
int A[250005],B[250005];
bool cmp(t1 a,t1 b)
{
	return a.va<b.va;
}
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		memset(c,0,sizeof(c));
		int n,q;
		cin>>n>>q;
		for(int i=0;i<n;i++)
		{
			la[i]=q+1;
			a[i].id=i;
			a[i].va=read1();
			A[i]=a[i].va;
		}
		sort(a,a+n,cmp);
		for(int i=0;i<n;i++)
		{
			b[i].id=i;
			b[i].va=read1();
			B[i]=b[i].va;
		}
		sort(b,b+n,cmp);
		for(int i=1;i<=q;i++)
		{
			k[i]=read1();
			if(c[k[i]]==0)
			{
				c[k[i]]=i;
			}
			ans[i]=0;
		}
		int p=n;
		for(int i=n-1;i>=max(n-500,0);i--)
		{
			while(p-1>=0&&a[p-1].va>b[i].va)
			{
				p--;
			}
			for(int j=0;j<p;j++)
			{
				int k=b[i].id-a[j].id;
				if(k<0)
				{
					k+=n;
				}
				if(c[k]==0)
				{
					continue;
				}
				if(c[k]<la[a[j].id])
				{
					ans[c[k]]+=(b[i].va);
					ans[la[a[j].id]]-=(b[i].va);
					la[a[j].id]=c[k];
				}
			}
		}
		for(int i=0;i<n;i++)
		{
			for(int j=1;j<la[i];j++)
			{
				A[i]=max(A[i],B[(i+k[j])%n]); 
				ans[j]+=A[i];
				ans[j+1]-=A[i];
			}
		}
		for(int i=1;i<=q;i++)
		{
			ans[i]+=ans[i-1];
			printf("%lld\n",ans[i]);
		}
	}
	return 0;
}

标签:ai,bi,更新,250005,int,序列,--,cc
From: https://www.cnblogs.com/watersail/p/18334313

相关文章

  • 从服务器获取数据后更新 DataTable 的列
    我需要一个解决方案来解决我的问题。我有一个Django应用程序,我在服务器端处理中使用DataTables,表模板对于我拥有的所有模型都是动态的,我只需传递列(带有data,||的字典列表|和name)在模板的上下文中,非常简单...title之后,我需要对列进行一些......
  • (超详细)备赛笔记 2024年全国职业院校(中职组)技能大赛(ZZ052大数据应用与服务)第一套试题
    2024年职业院校中职组ZZ052大数据应用与服务赛项赛题第01套【子任务三和四】(一)任务一:数据获取与清洗1.子任务一:数据获取(1)启动Hadoop集群,使用HDFSShell指令,在HDFS根目录下级联创建一个名为/behavior/origin_log的目录,用于存储采集到的用户行为日志;--如果......
  • Mybatis批量更新数据库错误
    问题:记录一次使用Mybatis批量更新数据库的错误,错误信息,Errorupdatingdatabase.Cause:org.postgresql.util.PSQLException:错误:字段"update_time"的类型为timestampwithouttimezone,但表达式的类型为text建议:你需要重写或转换表达式位置:391如下图,说我有一......
  • 每次更新模型/字段时,如何在运行时延迟计算某些属性?
    我正在学习pydantic,我希望了解Python类及其属性与pyndatic模型之间的交互。特别是,我希望定义一些实例变量,这些实例变量在创建模型后以及每次创建模型时在运行时延迟计算模型或特定字段已更新。这里有一个小的播放代码片段。问题是:每次更改生日或年龄(假设可以根据给......
  • 解压先锋汽车收音机的更新 bin 固件文件
    我对bin文件/python等很菜鸟,但也许有人可以帮助我。首先,我只想更改先锋汽车收音机的语言,确切地说是DMH-A240BT型号。我不想破解它们或改变逻辑方面。没有波兰语,我想也许可以做一些更新,但我在互联网上找不到任何东西...我只在这里找到了固件更新:https://pioneer03.s3.a......
  • Linux-kali-ubuntu手动更新
    、Ubuntu主要更新升级命令介绍我们先来看看这几个命令的功能和区别,这几个命令看起来很相似,作用上有较大差别千万不要弄错了。1)、apt-getupdate$sudoapt-getupdate2)、apt-getupgrade这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软......
  • P9746 「KDOI-06-S」合并序列
    mx练习赛搬的,虽然数据不咋样,但是一步步的优化思路确实值得一记。P9746合并序列题目大意:给你\(n(1\len\le500)\)个数\(a_1,a_2,\ldotsa_n\)(\(a_i<512\))。每次可以选一个3元组\((i,j,k)\),满足\(i<j<k\),并且\(a_i\oplusa_j\oplusa_k=0\),则你可以将$a_i\dotsa_k$......
  • adobe acrobat DC如何彻底解决自动更新的问题
    有客户反应已经按照adobeacrobatDC下载安装界面的教程删除了升级文件,但是还是会时不时的跳出更新,只能重新安装,有没有其他的更好的方法呢?解决方法如下:一、首先删除/Library/ApplicationSupport/Adobe/ARMDC/Application路径下的update文件,具体方法如下:1.点击左上角前往,选择前......
  • 创建中间件后是否可以更新 FastAPI/Starlette SessionMiddleware 中的 max_age ?
    我需要限制某些用户的会话生命周期。问题是,max_age是在创建中间件时设置的,之后似乎无法更新。从中间件代码来看,似乎唯一的解决方案是创建一个具有所需的自定义中间件功能。有更好的解决方案吗?你说的没错,FastAPI/Starlette的SessionMiddleware在创建后不能直接......
  • 关于嵌入式QML dict_pinyin.dat的编译更新
    硬件平台:全志的A40I-H 软件平台:Linux内核版本3.10.65QT版本:5.9.0 重新编译dict_pinyin.dat的作用 1.解决输入"nss"导致输入法崩溃的问题2.解决输入某些嵌入式平台不支持的字体,例如“捃”,导致程序崩溃的问题 源码路径:~/qt-everywhere-opensource-src-5.9.0/qtvirtual......