cf#ECR10-D. Nested Segments-树状数组+二分

本文介绍如何解决Codeforces上的竞赛问题,即计算每个区间包含多少个区间。通过将所有区间端点排序并使用树状数组,实现高效计数。详细步骤包括存储端点、排序、初始化树状数组、遍历左端点并更新树状数组来计算答案。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

http://codeforces.com/contest/652/problem/D


题意,给n个区间(端点保证不重复)

输出每个区间包含了多少个区间


先存起所有区间的左右端点,并依次对应编号


然后把左右端点 分别从小到大排序

并开一个树状数组,每个点对应着Yi,初始化值全为1

从小到大遍历左端点,

对于X1,找到其原始编号id,然后再找出对应的Y

然后在排序后的Y数组里 二分找到 Y的位置,那么 当前id的左端点是最左的,所有区间的左端点都在X1的后面,必然 当前区间可以把Y左边的所有区间都包含。  

【因为当前区间左端点最左,所以不会还有区间能包含它,因此把点Y在树状数组里挖掉】

求答案的话 就是在树状数组的1到Y-1 里面的节点个数,然后把Y这个节点挖掉,继续遍历左端点


每次求树状数组里1到Y-1的和,然后把 Y挖掉 

#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <iostream>
using namespace std;

const double pi=acos(-1.0);
double eps=0.000001; 
int ll[2*100005];
int rr[2*100005]; 
int sort_r[2*100005]; 
int min(int a,int b)
{return a<b?a:b;}

int tree[2*100005];
int n;
   int lowbit(int x)
{
	return x&-x;
}
void add(int x,int value)
{
	for (int i=x;i<=n;i=i+lowbit(i))
	{
		tree[i]+=value;
	}
}
int get(int x)
{
	int sum=0;
	for (int i=x;i;i-=lowbit(i))
	{
		sum+=tree[i];
	}
	return sum;
}
 struct node
 {
	 int x,y,id;
 };
 node tm[2*100005];
bool cmp(node a,node b)
{return a.x<b.x;}
int ans[2*100005];
 int main() 
{
	int i;
	cin>>n;
	for (i=1;i<=n;i++)
	{
		scanf("%d%d",&tm[i].x,&tm[i].y);
		ll[i]=tm[i].x;
		rr[i]=tm[i].y;
		sort_r[i]=rr[i];
		tm[i].id=i;
		add(i,1);
	}
	sort(tm+1,tm+1+n,cmp);
	sort(sort_r+1,sort_r+1+n);
	for (i=1;i<=n;i++)
	{  
		int id=tm[i].id;
		int yy=rr[id];
		int it=lower_bound(sort_r+1,sort_r+1+n,yy)-sort_r;
		int res=0;
		if (it==1) res=0;
		else res=get(it-1);
	ans[id]=res;
		add(it,-1);
	}
	
	for(i=1;i<=n;i++)
	{
		printf("%d\n",ans[i]);
	} 
	
	return 0;
	
}


开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程中的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文中详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题中的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化中的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。
内容概要:本文围绕多旋翼无人机姿态估计算法的开发与性能评估展开系统性研究,重点对比了线性与非线性滤波算法在复杂飞行环境下的表现。通过构建基于扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)等先进算法的姿态估计器,融合IMU、磁力计、视觉传感器等多源数据,有效提升了姿态解算的精度与鲁棒性。研究涵盖了静态悬停、高速机动及磁干扰等多种典型飞行场景,利用MATLAB/Simulink平台完成仿真实验,并结合实测飞行数据与VICON高精度运动捕捉系统提供的真值进行定量分析。结果表明,非线性滤波器在动态工况下具有显著优势,尤其在抑制漂移和抵抗外部干扰方面优于传统线性方法。文章还提出了传感器融合、自适应建模、冗余配置等一系列降低偏差影响的技术路径,为高可靠性无人机导航系统的设计提供了理论依据与实践指导。; 适合人群:具备控制理论、信号处理及状态估计基础知识,从事无人机导航、控制算法研发或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于开发高精度无人机姿态解算模块;②为多传感器融合算法的设计、实现与验证提供参考案例;③服务于复杂环境下无人系统状态估计的教学演示与科研攻关; 阅读建议:建议结合文中所述MATLAB/Simulink仿真模型与实测数据集进行复现与调试,重点关注EKF与UKF的数学推导、实现细节及关键参数调优过程,深入理解非线性系统建模、状态估计与工程实际之间的平衡与折衷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值