acwing.区间和(离散化)

对数据范围较大,但有用的数据较少的题目使用。

中心思想:把所有用到的元素的位置按照一定的顺序映射到一个从0或1为起点的数组中,并把所有用到的元素的值存储在映射数组中,可以利用二分查找确定某个元素映射的位置。

#include<bits/stdc++.h>
using namespace std;

int arr[300010],pre_sum[300010];//真实有用的坐标最多只有n+2*m个,(n次修改会用n个位置,m次询问会用2*m个位置)
vector<pair<int,int>> add,add2;
vector<int> xiab;

int f(int x){
	vector<int>::iterator i=lower_bound(xiab.begin(),xiab.end(),x);
	return i-xiab.begin();
}

int main(){
	int n,m;
	cin>>n>>m;
	//先把所有用到的下标放到数组中
	for(int i=1;i<=n;i++){
		int x,c;
		cin>>x>>c;
		add.push_back({x,c});
		xiab.push_back(x);
	}
	for(int i=1;i<=m;i++){
		int l,r;
		cin>>l>>r;
		add2.push_back({l,r});
		xiab.push_back(l);
		xiab.push_back(r);
	}
	//排序所有用到的下标,然后去重。
	sort(xiab.begin(),xiab.end());//排序去重,为什么不用set,因为set类型的迭代器只能进行++或--操作,查询其中元素位置时不便。
	xiab.erase(unique(xiab.begin(),xiab.end()),xiab.end());//unique()去重,返回去重后最后一个元素的位置
	
	
	//开一个数组记录所映射位置的元素值,利用二分查找映射的位置,需要加值的进行处理。
	for(int i=1;i<=n;i++){
		int t=f(add[i-1].first)+1;
		arr[t]=arr[t]+add[i-1].second;
	}
	
	
	for(int i=1;i<=xiab.size();i++){
		pre_sum[i]=pre_sum[i-1]+arr[i];
	}
	for(int i=0;i<m;i++){
		int l=f(add2[i].first)+1;
		int r=f(add2[i].second)+1;
		cout<<pre_sum[r]-pre_sum[l-1]<<endl;
	}
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PID是一种常用的控制算法,其全称为比例-积分-微分控制(Proportional-Integral-Derivative Control)。它根据控制系统的误差信号,通过比例、积分和微分三个部分的加权组合来产生控制输出,以调节系统的运行状态。 比例(Proportional)部分根据当前误差的大小与设定值之间的差异,产生一个与误差成正比的输出。它可以快速地响应系统的变化,但可能会引起超调或震荡。 积分(Integral)部分根据误差信号在时间上的累积值,产生一个与积分误差成正比的输出。它可以消除系统静态误差,但可能导致系统响应过度调整或不稳定。 微分(Derivative)部分根据误差信号的变化率,产生一个与误差变化率成正比的输出。它可以预测系统的未来变化趋势,使系统更加稳定,但可能会放大高频噪声信号。 离散化PID是将连续时间PID控制算法转换为离散时间域中使用的算法。在实际应用中,往往需要将连续时间模型转换为离散时间模型来进行控制设计和实现。离散化PID通过采样周期将连续时间的PID算法离散化,使其适用于离散时间系统。 离散化PID的实现方式有多种,常见的方法包括Z变换法、欧拉前向差分法和梯形法等。其中,Z变换法是一种常用的离散化方法,它通过对连续时间控制器传递函数进行Z变换,得到离散时间控制器的传递函数,从而实现离散化PID控制。 离散化PID在工业自动化控制中广泛应用,可以实现对离散时间系统的精确控制,提高系统稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值