51nod 1127 指针滑动区间(2)

本文介绍了一种解决51nod第1127题的方法,思路是通过移动右指针r并记录扫过字符的个数,直至所有字符出现。然后移动左指针l,检查当前子串是否满足所有字符出现次数相等的条件。注意移动l的边界条件,只需保证字符计数正确。提供了复锦巨巨的代码实现。

点击打开链接



                                                                                                                1127 最短的包含字符串
        

            
给出一个字符串,求该字符串的一个子串S,S包含A-Z中的全部字母,并且S是所有符合条件的子串中最短的,输出S的长度。如果给出的字符串中并不包括A-Z中的全部字母,则输出No Solution。
Input
第1行,1个字符串。字符串的长度 <= 100000。
Output
输出包含A-Z的最短子串长度。如果没有符合条件的子串,则输出No Solution。
Input示例
BVCABCDEFFGHIJKLMMNOPQRSTUVWXZYZZ
Output示例
28




思路:r先移动,同时用一个数组存下扫过的每个字符的个数,至符合条件(26全)。再移动l根据字符个数判断l-r间的字符串是否符合要求,不符合r继续移动至符合。

注意:l移动的边界,(只需保证字符串个数正确,没必要让l、r一定指向子串的始、终)


代码(復锦巨巨的...):

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 1e5+100;
#define INF 0x3f3f3f3f
int B[30];
char A[maxn];
int main(){
    scanf("%s",A+1);
    int l,r;
    int L=strlen(A+1);
    int i,j,k;
    l=1;
    r=1;
    int ans=INF;
    int sum=0;
    while(r<=L){
        if(B[A[r]-'A']==0) sum++;
        B[A[r]-'A']++;
        while(sum==26){
            ans=min(ans,r-l+1);
            B[A[l]-'A']--;
            if(B[A[l]-'A']==0) sum--;
            l++;
        }
        r++;
    }
    if(ans==INF) puts("No Solution");
    else printf("%d\n",ans);
    return 0;
}







电动汽车集群并网的分布式鲁棒优化调度模型(Matlab代码实现)内容概要:本文围绕“电动汽车集群并网的分布式鲁棒优化调度模型”展开,基于Matlab代码实现,旨在应对电动汽车大规模接入电网带来的不确定性挑战。通过构建分布式鲁棒优化模型,充分考虑电动汽车充电负荷的随机性与波动性,在保证电网安全稳定运行的前提下,优化调度方案以降低运行成本、提升能源利用效率。文中结合博士论文复现背景,详细阐述了模型构建、算法设计及仿真验证过程,并提供了完整的代码资源支持,体现了较强的理论深度与工程实践价值。此外,文档还列举了大量相关研究主题,涵盖微电网优化、需求响应、储能调度等多个方向,突出其在综合能源系统优化中的典型应用场景。; 适合人群:具备一定电力系统、优化理论及Matlab编程基础的研究生、科研人员及从事新能源并网、智能电网调度等相关领域的工程技术人员;尤其适合开展电动汽车调度、鲁棒优化建模等课题研究的高年级本科生与博士生。; 使用场景及目标:①复现并深入理解电动汽车集群并网的分布式鲁棒优化调度方法;②掌握Matlab在电力系统优化中的建模与求解技巧;③为科研论文撰写、课题申报及实际项目开发提供算法参考与代码基础;④拓展至其他分布鲁棒优化问题的研究与应用。; 阅读建议:建议结合提供的Matlab代码逐模块学习,重点理解目标函数构建、不确定集合设定、ADMM等分布式求解算法的实现逻辑。同时可参照文档中列出的相关案例进行对比分析,提升综合建模能力。注意区分集中式与分布式优化架构差异,加强对鲁棒性与计算效率平衡的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值