首页 > 其他分享 >abc340E题解

abc340E题解

时间:2024-04-24 15:00:50浏览次数:26  
标签:abc340E int 题解 位置 y% i64 add 个球

题目描述

样例

input:
5 3
1 2 3 4 5
2 4 0
output:0 4 2 7 2

算法1

(树状数组) $O(nlogn)$

本题我们可以看作对于每一个查询位置x我们都需要先把该位置上的所有球拿出来,然后再一个一个的放到对应位置上去。假设x位置上面有y个球,那么对于这y个球,如果大于n,那么就对所有的位置放y/n个球,然后在对余下的球进行放置。很显然余下的球也存在两种情况。

当x+y%n<=n时,我们仅仅需要对[x+1,x+y%n]的位置放球。
而当我们的x+y%n>n时,我们则需要对面前的[1,(x+y%n)%n]的范围也放球。

那么我们可以发现本题本质上只有三个操作:单点查询,单点修改,区间修改,那么我们很容易想到用一个树状数组维护a[i]的差分序列即可求解。

C++ 代码

#include<bits/stdc++.h>
using i64=long long;
const int N=2e5+5;
int n,m;
i64 c[N];
int lowbit(int x){
    return x&-x;
}
void add(int x,i64 k){
    for(int i=x;i<=n;i+=lowbit(i)){
        c[i]+=k;
    }
}
i64 ask(int x){
    i64 res=0;
    for(int i=x;i;i-=lowbit(i)){
        res+=c[i];
    }
    return res;
}
int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cin>>n>>m;
    for(int i=1;i<=n;i++){
        i64 x;
        std::cin>>x;
        add(i,x),add(i+1,-x);
    }
    for(int i=1;i<=m;i++){
        int x;
        std::cin>>x;
        x++;
        i64 y=ask(x);
        add(x,-y),add(x+1,y);
        add(1,y/n),add(n+1,-y/n);
        add(x+1,1),add(std::min(n,x+(int)(y%n))+1,-1);
        if(x+y%n>n){
            add(1,1);
            add((x+y%n)%n+1,-1);
        }
    }
    for(int i=1;i<=n;i++){
        std::cout<<ask(i)<<" ";
    }
    return 0;
}

标签:abc340E,int,题解,位置,y%,i64,add,个球
From: https://www.cnblogs.com/kyp1229/p/18155479

相关文章

  • P3667 Bovine Genomics Hash+二分题解
    砂金听说了你在学字符串,于是在CLOI里出了道题给你P3667BovineGenomics题链:洛谷hzoi提高\(hash\)基础题。思路是二分答案,\(check\)中比较每一个区间字串的\(hash\)值是否相等。比较的时候可以用\(set\)或\(map\)。\(set\)的好处在于无重元素,判断时先将\(a\)串中区间子串......
  • 抢先看!美团、京东、360等大厂面试题解析,技术面试必备。
    技术面试必备!美团、京东、360等大厂面试题详解,让你轻松应对各大公司面试挑战!往期硬核面经哦耶!冲进腾讯了!牛逼!上岸腾讯互娱和腾讯TEG!腾讯的面试,强度拉满!前几篇文章分享了上岸腾讯的最新面经。不少粉丝股东留言说别只发腾讯的啦,其他大厂的也安排一些吧,比如美团、360、京东的......
  • [ABC329C] Count xxx 题解
    [ABC329C]Countxxx题解题目分析目的:统计本质不同而不是位置不同的所有字符都相同的字串。需要理解一下什么是本质不同而不是位置不同。结合样例1去理解这句话。列举样例1中的所有所有组成字符相同的字串。aaabaa编号字串位置\(1\)a\([1,1]\)\(2\)aa\([1......
  • [题解]ARC176 A~B
    赛时心态崩了,0pts遗憾离场……今天在学校冷静思考了下。发现B题思路其实很简单,不过A题怎么也没有想到,回来看了题解,其实思路也很简单,不过是自己思考方向错了。看来打比赛心态很重要,如果能冷静下来思考结果会好很多。果然算法竞赛不能被常理所束缚(笑)A-01MatrixAgain行列从\(0......
  • 题解 UOJ577【[ULR #1] 打击复读】
    题解UOJ577【[ULR#1]打击复读referencehttps://www.cnblogs.com/crashed/p/17382894.htmlhttps://www.cnblogs.com/sizeof127/articles/17579027.html字符串——黄建恒,广东实验中学题目描述为了提升搜索引擎的关键词匹配度以加大访问量,某些网站可能在网页中无意义复读大......
  • 编译用于Qt的opencv问题解决
    CMakewasunabletofindabuildprogramcorrespondingto"MinGWMakefiles"解释:这个错误表明CMake无法找到用于生成Makefiles的构建程序。在使用CMake生成项目文件时,如果指定了"MinGWMakefiles",CMake需要一个Make工具来构建项目,而这个工具通常是由MinGW提供的。如......
  • macOS配置Clion用于STM32开发找不到stdint.h等头文件问题解决方案
    问题编译工程时发现出现大量类似错误如下/opt/homebrew/Cellar/arm-none-eabi-gcc/13.2.0/lib/gcc/arm-none-eabi/13.2.0/include/stdint.h:9:16:fatalerror:stdint.h:Nosuchfileordirectory问题原因不能使用brewinstallarm-none-eabi-gcc安装编译工具链[1]解决方......
  • 「洛谷」题解:P1720 月落乌啼算钱(斐波那契数列)
    题目传送门比较经典的一道斐波那契数列的模版题,原题中给了一个很复杂的公式(也就是下面这个),但是实际上题目跟它毛关系没有……(所以放这个公式干什么)\[F_n=\dfrac{\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n}{\sqrt{5}}\]看见题解去了有很多人都......
  • AtCoder Beginner Contest 350 A - G 题解
    AtCoderBeginnerContest350A-PastABCsSolution把最后三个字符转成数字判断即可Code#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;s=s.substr(3,3);intx=0;x=(s[0]-'0')*100+(s[1]-�......
  • ABC350C 题解
    怎么赛时连这道都不会了/ll注意到输入是个排列,这意味着我们可以直接确定每个元素应在的位置。考虑维护每个数当前所在的位置\(\{p\}\)。对于任意\(i\in[1,n]\),我们访问\(p_i\),如果该位置不为第\(i\)位便对排列中第\(i\)位的数\(j\)和\(i\)进行“交换”操作。“......