机房测试6:矿石(优先队列)

本文介绍了一种解决区间覆盖问题的算法,通过排序和优先队列优化计算过程,避免重复计算,实现高效求解区间内元素的组合数,适用于算法竞赛和数据结构学习。

题目:

 

 

 

 分析:

对于许多给出无序区间的问题,通常有将区间按照左or右端点排序的思路。

在这道题中,通过排序区间与采矿点,我们可以由前一个采矿点占有的区间推到当前采矿点有的区间。

而考虑一个采矿点如果拥有x个种矿,那么贡献就是:C(x,1)+C(x,2)+……C(x,x) ,也就等于2^x-1

而如果两个点间有重复计算的部分y,就应该-(2^y-1)(多计算了一次)。

所以我们只需要在推导下一个点的矿石种类的时候记录一下重复了多少,然后减去即可。

而前面通过排序,只需要移动指针统计下一个点。

优先队列的作用:

区间是按照l从小到大来排序的,每一次统计一个点新的贡献的时候,要知道它已经不包含哪些区间,就应该用r来移动,将不包含的区间弹出。

为了使r从小到大有序,用优先队列来维护。

#include<bits/stdc++.h>
using namespace std;
#define N 100005
#define ri register int
#define ll long long
const ll mod=998244353;
int pos[N],n,m;
ll ans=0,mul[N];
int read()
{
    int x=0,fl=1; char ch=getchar();
    while(ch<'0'||ch>'9') { if(ch=='-') fl=-1; ch=getchar(); }
    while(ch<='9'&&ch>='0') x=x*10+ch-'0',ch=getchar();
    return x*fl;
}
struct node { int l,r; }a[N];
priority_queue<node> q;
bool operator < (const node &a,const node &b)
{
    return a.r>b.r;
}
bool cmp(const node &a,const node &b)
{
    return a.l<b.l;
}
int main()
{
    freopen("A.in","r",stdin);
    freopen("A.out","w",stdout);
    n=read(); m=read();
    for(ri i=1;i<=n;++i) a[i].l=read(),a[i].r=read();
    for(ri i=1;i<=m;++i) pos[i]=read();
    sort(a+1,a+1+n,cmp);
    sort(pos+1,pos+1+m);
    mul[0]=1;
    for(ri i=1;i<=n;++i) mul[i]=mul[i-1]*2%mod;
    for(ri i=0;i<=n;++i) mul[i]--;
    int now=1;
    for(ri i=1;i<=m;++i){
        while(!q.empty()){
            if(q.top().r<pos[i]) q.pop();
            else break;
        }
        ll x2=q.size();
        while(a[now].l<=pos[i] && now<=n){
            if(a[now].r>=pos[i]) q.push(a[now]); 
            now++;
        }
        ll x3=q.size();
        ans=(ans + mul[x3]-mul[x2] )%mod;
    }
    ans=(ans+mod)%mod;
    printf("%lld\n",ans);
}
/*
3 2
7 11
1 5
3 8
4
7
*/
View Code

 

转载于:https://www.cnblogs.com/mowanying/p/11627851.html

【Copula光伏功率预测】基于单调广义学习系统(MBLS)和Copula理论的时空概率预测模型(Matlab代码实现)内容概要:本文介绍了一个基于单调广义学习系统(MBLS)和Copula理论的时空概率预测模型,用于光伏功率预测,并提供了相应的Matlab代码实现。该模型结合了MBLS在非线性映射和快速学习方面的优势,以及Copula函数在刻画多变量随机变量之间复杂相关性结构的能力,能够有效处理光伏发电的不确定性与时空相关性,从而提高预测精度和可靠性。此外,文中还列举了多个相关领域的研究案例和技术应用,展示了其在电力系统、机器学习、路径规划等多个方向的广泛应用前景。; 适合人群:具备一定编程基础和电力系统背景知识,熟悉Matlab编程语言,从事新能源发电预测、电力系统优化等相关领域研究的研发人员和高校师生。; 使用场景及目标:①应用于光伏电站的实际功率预测中,提升电网调度的准确性和稳定性;②作为学术研究工具,探索新型预测算法在处理非线性和不确定性问题上的潜力;③为其他可再生能源如风力发电的概率预测提供借鉴和参考。; 阅读建议:建议读者结合实际数据进行实验验证,深入理解MBLS和Copula理论的核心思想及其实现细节,同时关注模型参数的选择对预测性能的影响,以期达到最佳的应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值