随笔 - 1013,  文章 - 5,  评论 - 493,  阅读 - 656万

基础讲解:

  • https://blog.csdn.net/weixin_72060925/article/details/127835303

前缀和:

  • 模版题:https://www.luogu.com.cn/problem/P8218
  • 二维前缀和:https://www.luogu.com.cn/problem/P2004
  • 前缀和应用:https://www.luogu.com.cn/problem/T430521
    • 重点是将题目转换为前缀和。
    • 子串满足“0和1两种字符的个数相等”,将0变为-1,相当于区间和为0; 
    • 区间和为0 相当于s[r+1]=s[l]
    • 采用下标法统计不同前缀和结果数量,然后计算组合数相加
  • 前缀和应用二:https://www.luogu.com.cn/problem/T430522
    • 方法一:计算所有k的前缀和,要点:使用vector,效率nlogn
    • 其他解法,核心是要让循环里面的计算尽量少:j初始化放在外面,while替换if  
复制代码
#include<bits/stdc++.h>
using namespace std;
int a[100005];
long long q,l,r,k,n,result;
int main()
{
    cin>>n>>q;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<q;i++)
    {
        cin>>l>>r>>k;
        int j=l;
        if(j%k!=0) j+=k-j%k;
        while(j<=r)
        {
            result+=a[j];
            j+=k;
        }
        cout<<result<<endl;
        result=0;
    }
    return 0;
}
复制代码
  • 前缀和+数学:https://www.luogu.com.cn/problem/T430523(n太大没法计算差分,需要利用数学直接计算对前缀和的影响)
  • 前缀和+后缀和:https://www.luogu.com.cn/problem/T432687(可以用数学解决,也可以用双向前缀和解决)
  • 前缀和+欧拉筛:https://www.luogu.com.cn/problem/T432688(需要用较快的读取数据方式)

差分:

  • 二维差分:https://www.luogu.com.cn/problem/P3397
  • 二阶差分:https://www.luogu.com.cn/problem/P4231
  • 差分应用:https://www.luogu.com.cn/problem/T432689
    • 难点首先要想到从左到右更新,其次找到正确右端点,最后是代码不能出bug  
posted on   风生水起  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 【.NET】调用本地 Deepseek 模型
历史上的今天:
2013-03-18 Hive中小表与大表关联(join)的性能分析zz
2011-03-18 《SQL Server 2005数据挖掘与商业智能完全解决方案》读书笔记
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示