首页 > 其他分享 >离散化模板

离散化模板

时间:2023-05-16 17:47:07浏览次数:55  
标签:int back 离散 alls push include 模板

https://www.acwing.com/problem/content/description/804/

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>

using namespace std;

typedef pair<int,int>PII;

const int N = 300010;//n+2m个坐标数量,即最多用3*1e5次方

vector<PII>add,query;//存储操作
vector<int>alls;//离散化后的下标
int a[N];//存储值
int s[N];
int n,m;

int find(int x)//寻找下标离散化后的结果
{
	int l=0,r=alls.size()-1;
	while(l<r)
	{
		int mid=l+r>>1;
		if(alls[mid]>=x)r=mid;
		else l=mid+1;
	}
	return r+1;//下标从1开始
}

int main()
{
	cin >> n >> m;
	for(int i=0;i<n;i++)
	{
		int x,c;
		cin >> x >> c;
		add.push_back({x,c});
		alls.push_back(x);
	}
	for(int i=0;i<m;i++)
	{
		int l,r;
		cin >> l >> r;
		query.push_back({l,r});
		alls.push_back(l);
		alls.push_back(r);
	}
	sort(alls.begin(),alls.end());
	alls.erase(unique(alls.begin(),alls.end()),alls.end());//unique删除重复元素,返回剩下元素的结尾位置
	//这样便实现了离散化,映射成功
	for(auto item:add)
	{
		int x=find(item.first);
		a[x]+=item.second;
	}
	for(int i=1;i<=alls.size();i++)s[i]=s[i-1]+a[i];
	for(auto item:query)
	{
		int l=find(item.first),r=find(item.second);
		cout << s[l]-s[r-1] << endl;
	}
	
}

 

标签:int,back,离散,alls,push,include,模板
From: https://www.cnblogs.com/lxl-233/p/17406335.html

相关文章

  • LG P5410 【模板】扩展 KMP(Z 函数)
    \(\text{template}\)注意z[1]=n,从下标\(2\)开始求z!!\(\text{Code}\)#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=2e7+5;intz[N],p[N],n,m;chara[N],b[N];voidgetZ(char*s,intn,int*z){for(......
  • Python多线程并发通用模板
    多线程可以同时处理多个任务,支持并发处理,从而提高系统的并发能力。多线程爬虫的好处主要有提高爬取效率、提高稳定性、节省资源等。总之,多线程爬虫可以提高爬取效率、稳定性和资源利用率,是一种更加高效、可靠的爬虫实现方式。多线程爬虫并行可以提高爬虫的效率,具体实现方法如下:......
  • 离散型随机变量
    第87炼离散型随机变量分布列与数字特征一、基础知识:(一)离散型随机变量分布列:1、随机变量:对于一项随机试验,会有多个可能产生的试验结果,则通过确定一个对应关系,使得每一个试验结果与一个确定的数相对应,在这种对应关系下,数字随着每次试验结果的变化而变化,将这种变化用一个变量进行......
  • 创建.Net项目模板包
    1.准备解决方案打包文件创建文件夹Template在Template下创建template.csproj,内容如下<ProjectSdk="Microsoft.NET.Sdk"><PropertyGroup><PackageType>Template</PackageType><PackageVersion>1.0.0</PackageVersion>......
  • 3000套各行各业ppt模板【珍藏版】
    概述 PPT可以帮助人们更好地传达信息和想法,使得听众更容易理解和记忆。PPT可以通过图像、文字、音频和视频等多种方式来呈现信息,使得信息更加生动、直观和易于理解。此外,PPT还可以帮助人们更好地组织和展示信息,使得听众更容易跟随和理解。如何写好PPT (1)确定主题和目标......
  • CPP0037利用类模板解决绝对值功能
    请使用模板参数设计实现绝对值模板类Absolute,Absolute类功能要求成员函数getValue(void)const计算类数据的绝对值,类数据类型应能适应整型、浮点型、双精度型等各种类型,绝对值类型与类数据一样。#include<iostream>usingnamespacestd;/*请在这里填写答案*/template<classT>c......
  • 请使用模板参数设计实现双倍功能函数,函数功能要求实现返回值为输入参数的两倍,函数参数
    请使用模板参数设计实现双倍功能函数,函数功能要求实现返回值为输入参数的两倍,函数参数应能适应整型、浮点型、双精度型等各种类型,返回值类型与参数一样。裁判测试程序样例: #include<iostream>usingnamespacestd;/*请在这里填写答案*/intmain(void){charc='\0';......
  • 实习记录模板
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写,接口调试是怎么实现的解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段......
  • 聊一聊模板方法模式
    统一抽取,制定规范;一、概述模板方法模式,又叫模板模式,属于23种设计模式中的行为型模式。在抽象类中公开定义了执行的方法,子类可以按需重写其方法,但是要以抽象类中定义的方式调用方法。总结起来就是:定义一个操作的算法结构,而将一些步骤延迟到子类中。在不改变算法结构的情况下,子......
  • 模板
    6-2数组排序输出(函数模板)作者 何振峰单位 福州大学对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下......