Educational Codeforces Round 28 F. Random Query 期望(贡献思想)

本文介绍了一种解决随机区间查询问题的算法,通过计算序列中不同数值在随机选取的区间内的期望出现次数。该算法关注如何高效地计算每个数值对所有可能区间的价值贡献,并考虑了数值重复的情况。

官方题解。。

846F - Random Query

For each index i we will find the number of pairs (l, r) (before swapping) such that i is the first occurence of ai in the chosen segment. Let f(i) be previous occurence of ai before i (if i is the first occurence, then f(i) = 0 if we suppose the array to be 1-indexed). Let’s find the number of pairs such that l ≤ r, and then multiply it by 2 and subtract 1 for this index. l has to be in segment (f(i), i], and r has to be in segment [i, n], so the number of ways to choose this pair is (i - f(i))(n - i + 1).

The value we receive as the sum of these values over all segments is the total number of distinct elements over all pairs (l, r), so we need to divide it by the number of these pairs.

题意:

给你n个数的序列,你可以随机选一个区间(l,r) (if l > r swap(l,r)). 区间的价值定义为区间不同数的个数.现在问你选择区间的期望价值是多少.

思路:

期望 = 总价值/区间总数. 区间总数为 n*n.

现在考虑怎么计算每个区间的价值.因为每有一个值,对区间的价值贡献就为1(假设所有数都不重复的情况下).所以我们

就考虑当前这个数对多少区间有贡献,那么肯定是跨越它的区间了,我们可以从反面来考虑,假设每个数对所有区间都有贡献,那么贡献

为n*n ,没有跨越它的区间就是他的左面和右面.我们要考虑减掉这一部分,但是如果有重复数的话,那么未出现该数的区间就是所有

重复数的两两中间那一部分了,其余的部分都出现了该数,该数都有价值.

所以该题就变成了我们把所有相同数的下标存在一起然后计算就可以了,但是为了不漏掉头和尾,这里我们将每个数里都存个

0和n+1,保证计算正确性.

#include<bits/stdc++.h>
using namespace std;
#define maxn 1001000
#define ll long long
int las[maxn];
int n;
ll tot,now;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        int x;
        scanf("%d",&x);
        if(las[x]) now-=las[x];
        tot+=now+i-1;
        now+=i; las[x]=i;
    }
    tot<<=1; tot+=n;
    double ans=tot*1.0/(1LL*n*n);
    printf("%.10lf\n",ans);
    return 0;
}
内容概要:本文深入研究了基于最优滑模控制的永磁同步电机(PMSM)调速系统模型,重点利用Simulink工具搭建并仿真了该控制系统的动态响应特性。文章系统阐述了最优滑模控制策略的设计原理,突出其在削弱传统滑模控制固有抖振现象、增强系统鲁棒性方面的显著优势。通过与传统滑模控制方法的对比实验,充分验证了所提出方法在调速精度、抗外部干扰能力以及动态响应速度等方面的优越性能。研究内容涵盖PMSM数学建模、滑模面构造、最优控制律推导、Lyapunov稳定性分析、参数整定及Simulink仿真验证等完整环节,形成了一套严谨的控制算法设计与实现流程。; 适合人群:具备自动控制原理、现代控制理论基础和MATLAB/Simulink仿真操作能力,从事电机驱动控制、电力电子与电力传动、运动控制或自动化等相关领域研究的工程技术人员及高校研究生。; 使用场景及目标:① 深入掌握滑模控制理论及其在高性能电机调速系统中的具体应用方法;② 学习如何设计并实现能够有效抑制抖振的最优滑模控制器,以提升系统整体鲁棒性和控制品质;③ 利用Simulink平台独立完成从理论建模到仿真验证的全过程,服务于科研课题、课程设计或实际工程项目。; 阅读建议:建议读者务必结合MATLAB/Simulink环境动手复现文中模型,重点关注滑模切换面的设计准则、控制律的数学推导过程以及控制器参数的调节规律,并通过施加不同的负载扰动、设定多种转速指令等方式全面测试系统的动态与稳态性能,从而深刻理解最优滑模控制的核心机理与工程应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值