C++课后习题训练记录Day176

1.练习项目 :

题目描述

小蓝有一个只包含 0 和 1 字符串,请你帮他算算这个字符串有多少个子串将 0 和 1 取反后,再将整个子串反过来和原子串一样。

输入描述

输入第一行包含一个整数 n(n≤5×105),表示字符串长度。

第二行包含一个长度为 n 的字符串 S,S 只拥有 0、1 两种字符。

输出描述

输出仅一行,包含一个整数,表示答案。

2.选择课程

在蓝桥云课中选择题库,选择题号1627并开始练习。

3.开始练习

(1)源码 :

#include <bits/stdc++.h>

using namespace std;

using ll=long long;

const int N=1e6+10;

char sN;

int pN,tN;

int main()

{

ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

int n;

cin>>n>>s+1;

for(int i=2*n+1;i>=1;i--){

ti=(i&1)?0:(si\>\>1=='1'?1:-1);

}

t0=3,t2\*n+2=3;

int c=0,r=0;

for(int i=1;i<=2*n+1;i++){

pi<r?min(r-i,p2\*c-1):1;

while(ti+p\[i]+ti-p\[i]==0)pi++;

if(i+pi>r)c=1,r=i+pi;

}

ll ans=0;

for(int i=1;i<=2*n+1;i++){

ans+=(pi-1)/2;

}

cout<<ans<<'\n';

return 0;

}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:

注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

相关推荐
王维同学2 小时前
跨位数进程的映像、命令行与环境块读取
c++·windows·安全
Rabitebla2 小时前
C++ STL 之 set 详解:从底层红黑树到实际应用
开发语言·数据结构·c++·算法·leetcode
520拼好饭被践踏2 小时前
JAVA+Agent学习day26
java·开发语言·数据结构·学习·agent
157092511342 小时前
优先队列:从Java源码到实战
开发语言·python
誰能久伴不乏2 小时前
深入解析 C++ STL 底层原理:从设计哲学到内存收割机
c++·架构·stl
jinyishu_3 小时前
C++继承与多态进阶
开发语言·c++·程序人生
程序猿编码3 小时前
用 C++ 从零写一个能训练的 GPT:标量自动微分 + Arena 内存池
开发语言·c++·gpt·transformer·模型推理
库玛西3 小时前
快速幂算法全景总结图:从“愚公移山”到“细胞分裂”
c语言·c++·笔记·算法
郝学胜_神的一滴3 小时前
Qt 高级编程 038:打造高颜值下拉菜单按钮
c++·qt