Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【今日三题】小乐乐改数字 (模拟) / 十字爆破 (预处理+模拟) / 比那名居的桃子 (滑窗 / 前缀和)

【今日三题】小乐乐改数字 (模拟) / 十字爆破 (预处理+模拟) / 比那名居的桃子 (滑窗 / 前缀和)

作者头像
_小羊_
发布于 2025-04-11 01:47:20
发布于 2025-04-11 01:47:20
5200
代码可运行
举报
文章被收录于专栏:C++C++
运行总次数:0
代码可运行

小乐乐改数字 (模拟)

  • 首先我们需要知道这个整数的长度来一位一位遍历,最容易想到的是通过模10除10操作用数组存储每一位;
  • 可以以 string 类型读入整数,直接操作字符串,最后还可以用 stoi 函数自动去掉有前导0的情况。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
using namespace std;

int main()
{
    string str;
    cin >> str;
    for (auto& e : str)
    {
        if (e % 2) e = '1';
        else e = '0';
    }
    cout << stoi(str) << endl;
    return 0;
}

十字爆破 (预处理+模拟)

  • 通过预处理操作,用 row[N] 和 col[N] 统计每一行每一列所有数之和,方便后续使用;
  • 因为每一行每一列总会相交于一点,因为还需要减去这一点的值。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
using namespace std;

const int N = 1e6 + 1;
using ll = long long;
ll row[N], col[N]; 
ll n, m;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    ll arr[n][m];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> arr[i][j];
            row[i] += arr[i][j];
            col[j] += arr[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << row[i] + col[j] - arr[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

比那名居的桃子 (滑窗 / 前缀和)

  • 固定窗口大小的滑动窗口问题,维护窗口内的值,在合适的时机<进窗口、判断、更新值、出窗口>。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
using namespace std;

const int N = 1e5 + 1;
using ll = long long;
ll h[N], s[N];
ll sumh, sums, n, k;

int main()
{
    cin >> n >> k;
    for (int i = 1; i <= n; i++) cin >> h[i];
    for (int i = 1; i <= n; i++) cin >> s[i];
    ll maxh = 0, mins = 0, day = 0;
    for (int l = 1, r = 1; r <= n; r++)
    {
        sumh += h[r];
        sums += s[r];
        if (r - l + 1 == k)
        {
            if (sumh > maxh)
            {
                maxh = sumh;
                mins = sums;
                day = l;
            }
            else if (sumh == maxh && sums < mins)
            {
                maxh = sumh;
                mins = sums;
                day = l;
            }
            sumh -= h[l];
            sums -= s[l++];
        }
    }
    cout << day << endl;
    return 0;
}
  • 求一段区间内的和,也可以用前缀和来做,某两个前缀和的差 == 滑动窗口内维护的值,其他的操作没什么区别。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
using namespace std;

const int N = 1e5 + 1;
using ll = long long;
ll preh[N], pres[N];
ll sumh, sums, n, k;

int main()
{
    cin >> n >> k;
    for (int i = 1; i <= n; i++) 
    {
        int a; cin >> a;
        preh[i] = preh[i - 1] + a;
    }
    for (int i = 1; i <= n; i++) 
    {
        int b; cin >> b;
        pres[i] = pres[i - 1] + b;
    }
    ll maxh = 0, mins = 0, day = 0;
    for (int i = k; i <= n; i++)
    {
        if (preh[i] - preh[i - k] > maxh)
        {
            maxh = preh[i] - preh[i - k];
            mins = pres[i] - pres[i - k];
            day = i - k + 1;
        }
        else if (preh[i] - preh[i - k] == maxh)
        {
            if (pres[i] - pres[i - k] < mins)
            {
                maxh = preh[i] - preh[i - k];
                mins = pres[i] - pres[i - k];
                day = i - k + 1;
            }
        }
    }
    cout << day << endl;
    return 0;
}

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++】 —— 笔试刷题day_17
首先暴力解法,当我们求某一个位置的得分时,去遍历它这一行和这一列所有的数,然后求和。(这里肯定会超时)
星辰与你
2025/04/17
410
【C++】 —— 笔试刷题day_17
【算法】前缀和、模拟、位运算、差分
先把所有的数加起来,在这个过程之中把偶数放到堆中,在遍历这个全是偶数的堆k次,每次让所有数之和减去最大偶数的一半,如果最大偶数除2后还是偶数还要重新添加到堆中,在这个过程中还要关注堆是否已经空了。
_小羊_
2025/03/15
560
【算法】前缀和、模拟、位运算、差分
【算法刷题指南】前缀和
南桥
2024/12/14
1080
【算法】前缀和问题
本题中的 dp[i] 表示的是 i 位置之前的前缀和,不包括 i 位置,所以 dp 表要多开一个位置,而且还要注意循环的区间。
_小羊_
2025/03/29
1200
【算法】前缀和问题
前缀和算法练习集
前六个测试点满足 1≤n≤10。 所有测试点满足 1≤n≤10^5,0−10000≤a_i≤1000。
timerring
2023/03/27
3910
前缀和算法练习集
【数据结构与算法】前缀和
https://blog.csdn.net/hsy1603914691/article/details/147820677
风中的云彩
2025/05/22
610
【数据结构与算法】前缀和
前缀和与差分
设元素存储在a[N]中,我们设计一个数组s[N],s[i]对应第一个元素到第i个元素的总和,即
fishhh
2022/08/30
3310
前缀和与差分
前缀和,差分
前缀和:什么是前缀和,顾名思义前面数字的和嘛,对于一组数据,a1,a2,a3,a4,……an 1到4的前缀和就是a1+a2+a3+a4. 3到7的前缀和就是a3+a4+a5+a6+a7. 前缀和解释完毕。如果用s集合表示前缀和,下标i表示1到i的前缀和,那么s[i]=s[i-1]+a[i]. 二维前缀和: s[i][j]表示第i行,第j列的前缀和,第i行和第j列包含的左上角的加起来的和就是前缀和,如图:红色的部分就是前缀和了。
code-child
2023/05/30
2790
前缀和,差分
【今日三题】压缩字符串(模拟) / chika和蜜柑(topK) / 01背包
_小羊_
2025/04/13
780
【今日三题】压缩字符串(模拟) / chika和蜜柑(topK) / 01背包
【今日三题】爱吃素(数学) / 相差不超过k的最多数(滑动窗口) / 最长公共子序列(一)(两个数组的dp)
_小羊_
2025/05/04
940
【今日三题】爱吃素(数学) / 相差不超过k的最多数(滑动窗口) / 最长公共子序列(一)(两个数组的dp)
【C++例题/训练】:前缀和&&差分
前面我们已经通过 【算法/学习】前缀和&&差分-CSDN博客 学习了前缀和&&差分的效相关知识,现在我们开始进行相关题目的练习吧
IsLand1314
2024/10/15
1320
【C++例题/训练】:前缀和&&差分
初识算法 · 前缀和(1)
​本文的主题是前缀和,通过两道题目讲解,一道是一维数组的模板,一道是二维数组的模板。 链接分别为: 【模板】前缀和_牛客题霸_牛客网 【模板】二维前缀和_牛客题霸_牛客网 题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。
_lazy
2024/11/19
1000
初识算法 · 前缀和(1)
算法专题四: 前缀和
根据题意, 创建一个前缀和数组, dp[i] = dp[i -1] + arr[i], 再使用前缀和数组, 要求的区域ret = dp[r] - dp[l-1], 这里我们为什么要这样求dp[i]呢? 还要绕一大圈子, 直接相加不就行了 , 但是如果直接相加求还不如我们的暴力解法呢, 这里还要开辟空间, 但是我们使用dp[i]求解只需遍历一遍数组即可求出前缀和
用户11317877
2024/10/16
820
算法专题四: 前缀和
【算法/训练】:单调队列&&单调栈
当01100符合时,窗口外面的肯定也符合要求 注意:循环截止条件为 right < n - 1.
IsLand1314
2024/10/15
1440
【算法/训练】:单调队列&&单调栈
前缀和数组(算法)
前缀和(Prefix Sum)是指数组中某个位置之前的所有元素的和。对于数组 arr,其前缀和数组 prefixSum 定义为:
猫咪-9527
2025/01/13
1440
前缀和数组(算法)
【今日三题】素数回文(模拟) / 活动安排(区间贪心) / 合唱团(动态规划)
_小羊_
2025/05/12
760
【今日三题】素数回文(模拟) / 活动安排(区间贪心) / 合唱团(动态规划)
前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)
prefix表示前缀和,前缀和由一个用户输入的数组生成。对于一个数组a[](下标从1开始),我们定义一个前缀和数组prefix[],满足:
走在努力路上的自己
2024/03/04
2940
前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)
【今日三题】判断是不是平衡二叉树(递归) / 最大子矩阵(二维前缀和) / 小葱的01串(滑动窗口)
_小羊_
2025/04/20
930
【今日三题】判断是不是平衡二叉树(递归) / 最大子矩阵(二维前缀和) / 小葱的01串(滑动窗口)
【算法篇】前缀和
用户11029103
2025/01/15
810
【算法篇】前缀和
算法思想总结:前缀和算法
小陈在拼命
2024/03/23
1240
算法思想总结:前缀和算法
推荐阅读
相关推荐
【C++】 —— 笔试刷题day_17
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验