孤独的照片(思维)

news2025/1/13 8:00:54

Farmer John 最近购入了 NN 头新的奶牛,每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一。

奶牛目前排成一排,Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。

然而,他不想拍摄这样的照片,其中只有一头牛的品种是更赛牛,或者只有一头牛的品种是荷斯坦牛——他认为这头奇特的牛会感到孤立和不自然。

在为每个连续不少于三头奶牛的序列拍摄了一张照片后,他把所有「孤独的」照片,即其中只有一头更赛牛或荷斯坦奶牛的照片,都扔掉了。

给定奶牛的排列方式,请帮助 Farmer John 求出他会扔掉多少张孤独的照片。

如果两张照片以不同位置的奶牛开始或结束,则认为它们是不同的。

输入格式

输入的第一行包含 N。

输入的第二行包含一个长为 N 的字符串。如果队伍中的第 i 头奶牛是更赛牛,则字符串的第 ii 个字符为 G。否则,第i 头奶牛是荷斯坦牛,该字符为 H

输出格式

输出 Farmer John 会扔掉的孤独的照片数量。

数据范围

3≤N≤5×10^5

输入样例:

5
GHGHG

输出样例:

3

样例解释

这个例子中的每一个长为 3 的子串均恰好包含一头更赛牛或荷斯坦牛——所以这些子串表示孤独的照片,并会被 Farmer John 扔掉。

所有更长的子串(GHGHHGHG 和 GHGHG)都可以被接受。

 

 上面两图理论上都是O(n^2)

但右图是右图刚好规避了HHHHHHHHHHHHGHHHHHHHHHH,这种情况,所以可以过

当左图遇到这种情况就会变为完全O(n^2),所以会TLE

但下边这样写就是O(n)的

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long LL;

const int N = 500010;

int n;
char str[N];
int l[N], r[N];

int main()
{
    scanf("%d", &n);
    scanf("%s", str);

    for (int i = 0, h = 0, g = 0; i < n; i ++ )
        if (str[i] == 'G') l[i] = h, h = 0, g ++ ;
        else l[i] = g, g = 0, h ++ ;

    for (int i = n - 1, h = 0, g = 0; i >= 0; i -- )
        if (str[i] == 'G') r[i] = h, h = 0, g ++ ;
        else r[i] = g, g = 0, h ++ ;

    LL res = 0;
    for (int i = 0; i < n; i ++ )
        res += (LL)l[i] * r[i] + max(l[i] - 1, 0) + max(r[i] - 1, 0);

    printf("%lld\n", res);
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识Kubernetes:(2)Kubernetes环境搭建

初识Kubernetes&#xff1a;&#xff08;2&#xff09;Kubernetes环境搭建1 环境规划1.1 集群类型1.2 安装方式2 环境搭建2.1 minikube安装2.2 启动集群3 服务部署1 环境规划 1.1 集群类型 Kubernetes集群大致分为两类&#xff1a;一主多从和多主多从。 一主多从&#xff1a…

UE4 shader编程 基础学习笔记 --- 熟悉各个节点

Texture Sample&#xff1a;用所需要的纹理覆盖到Mesh上&#xff0c;展示效果&#xff0c;Mesh上存在漫反射 高光 环境变量的和制造出了左上角的纹理光照效果 该节点只能设置其黑白效果 0为黑&#xff0c;1为白 该节点可以调节R、G两个参数 该节点可以调节RGB三个参数 该节…

C#---第十八课:Debug调试技巧--Debug类、pin 、add watch、拖动断点、修改变量、两个断点的联动

文章目录1. 在output窗口中输出变量的内容----Debug类2. Pin变量 / add watch 实时监控变量的变化(1) pin to sources(2) add watch3. 自由拖动黄色箭头图标4. 直接修改变量的值5. 两个断点的联动&#xff08;当一个断点触发&#xff0c;另一个断点才会触发debug&#xff09;1.…

变革:区块链上的政府和企业应用

发表时间&#xff1a;2022年5月12日 信息来源&#xff1a;coingeek.com 区块链只与数字货币和金融交易挂钩的时代已经过去了。这项技术在过去十年中不断发展&#xff0c;今天&#xff0c;它为游戏、社交媒体应用、医疗保健以及供应链管理等多个领域提供着支持。相比其它领域&am…

SpringBoot 整合【Mybatis-Plus实现分页查询】

目录 1. 添加pom.xml依赖 2. 配置application.yml文件 3. mybatis-plus插件配置核心类 4. 启动类配置 5. 测试数据Sql脚本 6. mybatis-plus代码生成 7. 测试分页查询 1. 添加pom.xml依赖 <!--mybatis-plus--><dependency><groupId>com.baomidou</g…

Weighted Logistic Regression和Youtube时长预估

前段时间阅读了youtube的经典论文《Deep Neural Networks for YouTube Recommendations》&#xff0c;其通过weighted LR来实现时长预估&#xff0c;在其原文中对实现的描述非常短&#xff0c;大概意思是在损失函数中&#xff0c;对正例&#xff08;点击&#xff09;的交叉熵项…

中断的分类,中断指令,中断类型码,中断向量表,中断优先级

目录 PC机的中断系统 中断的分类 内部中断&#xff08;软件中断&#xff09; 故障 陷阱 异常终止 中断指令 指令类型中断指令 INT N 溢出中断指令 INTO 中断返回指令 IRET 外部中断&#xff08;硬件中断&#xff09; 非屏蔽中断&#xff08;NMI&#xff09; 可…

Springboot实现定时任务调度

前言 今天给大家分享一下&#xff0c;如何使用springboot快速实现简单的定时调度任务&#xff1f;有两种方法&#xff1a;基于注解的声明式调度任务注册&#xff1b;另外一种是基于实现SchedulingConfigurer的编程式的调度任务注册。 1. 基于注解&#xff08;Scheduled&#…

Problem Set 2

Regularized Normal Equation for Linear Re-gression Given a data set {ar(), y()}i1,.-.,m with x()∈ R" and g(∈ R, the generalform of regularized linear regression is as follows n (he(zr)- g)3入>0号 (1) ” 2m i1 j1 Derive the normal equation. 设 X[(…

P7 PyTorch 属性统计

目录 Norm min max argmax argmin prod sum dim keepdim topk & kthvalue eq&equal一 Norm 作用&#xff1a; 求范数 1.1 1阶范数 # -*- coding: utf-8 -*- """ Created on Thu Dec 22 21:48:02 2022author: cxf """ import torc…

前端_Vue_8.生命周期钩子、侦听器

文章目录一、生命周期钩子1.1. 注册生命周期钩子1.2. 生命周期图示二、侦听器2.1. 基本示例2.2. 深层侦听器2.3. 即时回调的侦听器2.4. 回调的触发时机2.5. this.$watch()2.6. 停止侦听器一、生命周期钩子 每个Vue组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比…

重要升级:SpreadJS 16.0 crack SpreadJS 2023

SpreadJS 16.0 crack&#xff0c;建议大家赶紧升级&#xff0c;速度提升65% Adds enhancements for TableSheet, Designer, Calculation, Shape and Workbook. December 22, 2022 - 16:53New Version Features New File Format New .sjs file format makes the ExcelIO process…

Java语法:final关键字

一、final是什么&#xff1f; final关键字是最终的意思&#xff0c;可以修饰&#xff08;类、方法、变量&#xff09;。 二、final的作用 修饰类&#xff1a;表明该类是最终类&#xff0c;不能被继承&#xff1b; 报错说明&#xff1a;不发从最终的Animal类继承 修饰方法&…

数论专题(2)莫比乌斯反演

今天我们开始莫比乌斯反演的学习.这篇博文特别多的公式,强迫症患者请勿观看 莫比乌斯反演 莫比乌斯函数: 定义莫比乌斯函数,当时,. 当是square-free number时,设的质因数分解有项,则; 否则,; 根据上面,我们不难验证也是积性函数 定理 ,即和互为彼此的逆 证明 设n的不…

4.防止数据权限越权

涉及的修改 这次提交内容很简单&#xff0c;就是在这些类的操作上&#xff0c;添加了 checkXxxDataScope()方法校验&#xff0c;下面来看下这个方法的实现 /*** 校验用户是否有数据权限* * param userId 用户id*/ Override public void checkUserDataScope(Long userId) {if (…

RMQ延迟队列

目录一、场景二、TTL和DLX三、开发步骤一、场景 “订单下单成功后&#xff0c;15分钟未支付自动取消” 1.传统处理超时订单 采取定时任务轮训数据库订单&#xff0c;并且批量处理。其弊端也是显而易见的&#xff1b;对服务器、数据库性会有很大的要求&#xff0c; 并且当处理大…

jeecg-boot前端实现表格插槽、定制化修改

大家好&#xff0c;我是雄雄。 前言 关于jeecg-boot&#xff0c;之前介绍过好多好多次&#xff0c;至于说这是个什么样的技术&#xff0c;这里不在详细介绍&#xff0c;大家可以在gitee或者百度上搜搜&#xff0c;大致了解一下。 因为是个开源的框架&#xff0c;所以一般小项目…

Unity 3D 创建简单的几何模型 || Unity 3D Assets 游戏资源目录管理

Unity 3D 创建简单的几何模型 Unity 3D 是一个强大的游戏开发引擎。在游戏开发中使用的模型常常是从外部导入的&#xff0c;Unity 3D 为了方便游戏开发者快速创建模型&#xff0c;提供了一些简单的几何模型&#xff0c;其中包括立方体、球体、圆柱体、胶囊体等。 自由物体创建…

单测在商家前端业务中的实践

1. 背景 商家系统是提供给得物商家在得物平台上可以稳定运营的服务抓手&#xff0c;前端代码也伴随着系统的发展而不断壮大。这样将导致文档却更新不及时&#xff0c;最后想再通过这些文档回溯业务逻辑也非常困难。 且若代码结构上没有关注&#xff0c;动辄就会产出一个大几千…

LFU 的设计与实现

LFU 的设计与实现 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;LFU 的设计与实现 CSDN&#xff1a;LFU 的设计与实现 题目描述 LFU&#xff08;least frequently used&#xff09;。即最不经常使用页置换算法。 题目链接&#xff1a;LeetCode 460. LF…