首页 > 其他分享 >D - Longest X -- ATCODER

D - Longest X -- ATCODER

时间:2022-10-25 09:22:21浏览次数:68  
标签:acc ATCODER -- break int Longest https

D - Longest X

https://atcoder.jp/contests/abc229/tasks/abc229_d

参考: https://zhuanlan.zhihu.com/p/441875505

 

思路

使用acc累计数组,统计每个位置之前的.的数目

设置滑动窗口最大化字串长度,使得窗口内k次替换都被执行, 从头到尾进行统计,记录最大字串长度。

 

Code

string s;
int k;
int acc[200005];
 
int main()
{
    cin >> s;
    cin >> k;
 
    memset(acc, 0, sizeof(acc));
 
    int n = s.size();
    for(int i=0; i<n; i++){
        char one = s[i];
 
        int rep = 0;
        if (one == '.'){
            rep = 1;
        }
 
        acc[i+1] = acc[i] + rep;
    }
 
    int maxlen = 0;
    int i=1, j=1;
    while(true){
        if (i > n || j > n){
            break;
        }
 
//      for k == 0, it is possible to be this:
//      i > j
//        if (i > j){
//            break;
//        }
 
        while(acc[j]-acc[i-1]<=k){
            j++;
            if (j>n){
                break;
            }
        }
 
        // for k == 0, and ...., j may be 1, so it is need to updated.
        if (i > j){
            j = i;
            continue;
        }
 
        // back to last element X,
        // from i to it (inclusively) k operation done.
        j--;
 
        maxlen = max(maxlen, j-i+1);
 
        j++;
 
        i++;
    }
 
    cout << maxlen << endl;
 
    return 0;
}
 

 

标签:acc,ATCODER,--,break,int,Longest,https
From: https://www.cnblogs.com/lightsong/p/16823807.html

相关文章

  • 螺纹预紧力计算校核,螺纹剪切力计算校核
              ......
  • vue 笔记13 router 120-122封装tabbar、总结
         总结       ......
  • 创建和运行线程
    方法一:直接使用Thread//创建线程对象Threadt=newThread(){publicvoidrun(){//要执行的任务}};//启动线程t.start()例如//构造方......
  • 08.JSP技术
    一、什么是JSPJSP(JavaServerPages)是JavaWeb服务器端的动态资源。它与html页面的作用是相同的,显示数据和获取数据。JSP文件的扩展名是.jsp。JSP=html+Java代码片段......
  • 第二十六章 使用 CSP 进行基于标签的开发
    第二十六章使用CSP进行基于标签的开发CSP允许使用标准HTML文件开发CSP应用程序。CSP编译器将HTML(和XML)文档转换为可以响应HTTP请求的类中的%CSP.Page。CS......
  • 实验二
    实验任务1task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){intnumber;inti;srand(time(0));for(i......
  • Page.map方法的使用
    Page.map方法的使用1、前言日常工作中,我们常常会有这样的场景:分页查询得到了结果,需要对dto的某个单独字段将进行赋值,这时候我们就会用到Page分页对象提供的map方法,用来转......
  • 初识设计模式 - 状态模式
    简介状态模式(StateDesignPattern)的定义是,允许一个对象在内部状态改变时改变它的行为,对象看起来似乎修改了它的类。在状态模式中,通常有两种方式实现状态转换:统一由环境......
  • el-table 选中行与复选框相互联动
    需求:对el-table选中行时复选框也被选中,选中复选框时触发行的相应变化(拢共分两步)步骤:第一步:点击行时触发复选框的选择或取消;第二步:点击复选框时触发相应行的变化(问题关......
  • Dapr 访问API
     Dapr 调用API默认情况下,Dapr挎斗(SideCar)依赖于网关来限制对其公共API的访问。因此,请清除“为HTTPS配置”复选框: 打开NuGet包管理器,添加以下包Dapr.A......