小美的游戏 小美的01串翻转

简介: 小美的游戏 小美的01串翻转

小美的游戏

题目描述

运行代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int main() {
  long long int a,b,sum=0,n=1e9+7;
  cin>>a>>b;    
  long long int s[N];
  for(int i=0;i<a;i++){
    cin>>s[i];
  }
    sort(s,s+a); 
    for(int i=a-1;i>a-b-1;i--){
        s[i-1]*=s[i]%n; 
        s[i]=1; 
    } 
    for(int i=0;i<a;i++){
        sum+=s[i]%n; 
    }
  sum=sum%n;
  cout<<sum; 
}
代码思路
  • 排序:使用 sort(s, s+a) 对数组 s 进行升序排序。这是关键步骤之一,因为代码后续逻辑依赖于排序后的数组顺序。
  • 计算乘积和:
    从数组尾部开始(即最大元素开始),逆序遍历数组。因为乘积和只关心连续子数组,所以从大到小乘可以避免重复计算。对于每个 i(从 a-1a-b),执行以下操作:
  • s[i] = 1:将当前元素置为1,以避免它在下一轮迭代中再次参与乘法(因为乘积计算已经完成)s[i-1] *= s[i] % n:将当前元素与前一个元素的乘积对 n 取模,然后存回 s[i-1]。这一步实际上是在计算一个降序子数组中连续 b 个元素的乘积,然后将乘积累加到前面的元素上,同时避免了不必要的重复计算。
  • 累加并取模:遍历整个数组 s[],累加所有元素的值到 sum,每次累加后对 n 取模,确保结果不会溢出。

小美的01串翻转

题目描述

运行代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int p[N],c,a[N],b[N];
int main(){
    char s;
    while(cin>>s){ 
        if(s=='1')p[++c]=1;
        else if(s=='0')p[++c]=0;
        else break;
    }
    for(int i=1;i<=c;i++){
        a[i]=a[i-1];
        b[i]=b[i-1];
        if(p[i]==i%2)a[i]++;
        else b[i]++;
    }
    int sum=0;
    for(int i=1;i<=c;i++){
        for(int j=i;j<=c;j++){
            sum+=min(a[j]-a[i-1],b[j]-b[i-1]);
        }
    }
    cout<<sum;
    return 0;
}

代码思路

  1. 读取输入:循环读取字符直至遇到字符 '2' 结束,遇到 '1' 时在数组 p[] 中存储 1,遇到 '0' 时存储 0。
  2. 计算前缀和:遍历 p[],计算两个前缀和数组 a[]b[]
  • b[i] 类似地,记录位置为偶数且字符为 '0' 的累计数量。注意,这里的初始化 a[i]=a[i-1]b[i]=b[i-1] 实际上未改变前缀和的正确计算,因为正确初始化应直接设置为0。
  • a[i] 记录从序列开头到当前位置 i(包括 i)为止,位置为奇数且字符为 '1' 的累计数量。
  1. 统计子串:双重循环遍历所有子串范围,计算满足条件的子串个数。
    对于每个子串 [i, j],计算 '1' 的数量和奇数位置数量之差与 '0' 数量和偶数位置数量之差的较小值,累加到 sum 中。这里用到了 min(a[j]-a[i-1], b[j]-b[i-1]) 来间接计算子串满足条件的数量,但实际上表达式逻辑可能与问题描述不符,正确逻辑应是检查奇偶性与字符值的一致性。
目录
相关文章
|
9月前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
7月前
|
存储 分布式数据库 Apache
小米基于 Apache Paimon 的流式湖仓实践
本文整理自Flink Forward Asia 2024流式湖仓专场分享,由计算平台软件研发工程师钟宇江主讲。内容涵盖三部分:1)背景介绍,分析当前实时湖仓架构(如Flink + Talos + Iceberg)的痛点,包括高成本、复杂性和存储冗余;2)基于Paimon构建近实时数据湖仓,介绍其LSM存储结构及应用场景,如Partial-Update和Streaming Upsert,显著降低计算和存储成本,简化架构;3)未来展望,探讨Paimon在流计算中的进一步应用及自动化维护服务的建设。
373 0
小米基于 Apache Paimon 的流式湖仓实践
|
存储 SQL NoSQL
基本 nosql 和 mongodb等数据库对比基本 nosql 和 mongodb等数据库对比
基本 nosql 和 mongodb等数据库对比基本 nosql 和 mongodb等数据库对比
172 0
|
11月前
|
存储 关系型数据库 Linux
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
|
存储 缓存 关系型数据库
【MySQL调优】如何进行MySQL调优?一篇文章就够了!
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
【MySQL调优】如何进行MySQL调优?一篇文章就够了!
|
6月前
|
人工智能 安全 Linux
阿里云正式成为FinOps基金会顶级会员!
阿里云正式成为FinOps基金会顶级会员!
|
11月前
|
Java 项目管理 开发者
从代码到梦想:技术进阶的心得与感悟##
在技术的海洋中,每一位开发者都像是一艘小船,需要不断调整航向,以应对风浪和潮流。本文将分享一些我在编程和技术探索中的心得与感悟,希望能为同样在技术领域航行的你提供一些启示和帮助。 ##
|
XML 前端开发 JavaScript
探秘 AJAX:让网页变得更智能的异步技术(上)
探秘 AJAX:让网页变得更智能的异步技术(上)
探秘 AJAX:让网页变得更智能的异步技术(上)
|
Python
【Python】五子棋 —— 摸鱼必备的小项目~
摸鱼必备小项目,你值得拥有~
414 1
【Python】五子棋 —— 摸鱼必备的小项目~
|
开发工具 git
vscode设置 git提交代码忽略node_modules,dist,vscode如何设置不提交node_modules,dist
vscode设置 git提交代码忽略node_modules,dist,vscode如何设置不提交node_modules,dist
1854 0

热门文章

最新文章