首页 > 其他分享 >YACS 2023年1月月赛 乙组 T4 加与乘(二) 题解

YACS 2023年1月月赛 乙组 T4 加与乘(二) 题解

时间:2023-02-17 06:11:05浏览次数:56  
标签:YACS int 题解 t2 乙组 add time op

题目链接

应大家的要求,早上起来更一下乙组 T4。

这一道题目我们发现不仅会加元素了,还会重复执行任务。

很容易想到用两个树状数组来维护每个任务的执行次数,以及每个单元格中的数字。

逆向扫一下,轮到这个操作的时候先把这个操作执行次数算一下,

然后把这个操作的贡献做执行次数次就行了。

用指针写的话可以方便一点。

代码:

#include <iostream>
#define int long long
using namespace std;
int n, m;
int t1[200005], t2[200005];
int query (int t[], int x) {
    if (x == 0) return 0;
    return (t[x] + query (t, x - (x & -x) ) ) % 1000000007;
}
void add (int t[], int x, int y) {
    if (x > max(n, m) ) return;
    t[x] = (t[x] + y) % 1000000007;
    add (t, x + (x & -x), y);
}
struct Upd {
    char op;
    int l, r;
}a[200005];
signed main () {
    ios::sync_with_stdio (false);
    cin >> n >> m;
    for (int i = 1; i <= m; i ++) cin >> a[i].op >> a[i].l >> a[i].r;
    for (int i = m; i >= 1; i --) {
        int time = query (t2, i) + 1;
        if (a[i].op == '+') {
            add (t1, a[i].l, time);
            add (t1, a[i].r + 1, - time);
        }
        if (a[i].op == '*') {
            add (t2, a[i].l, time);
            add (t2, a[i].r + 1, -time);
        }
    }
    for (int i = 1; i <= n; i ++) cout << (query (t1, i) + 1000000007) % 1000000007 << "\n";
    return 0;
}

 

标签:YACS,int,题解,t2,乙组,add,time,op
From: https://www.cnblogs.com/Xy-top/p/17128830.html

相关文章

  • ZJOI 2022 部分题解
    ZJOI2022部分题解太菜了所以只写了两题[ZJOI2022]树https://www.luogu.com.cn/problem/P8329题解玩一玩样例可以得到这样的式子\[ans=\sum_{S\cupT=[n],\S\c......
  • 牛客练习赛 108 题解
    六道题目的出题人都是我,希望大家玩的开心!https://ac.nowcoder.com/acm/contest/51208A.惊鸿显然位或之后只会变大,因此答案为\(4\times(a_1\text{or}a_2\text{or}......
  • 二、Keil——Missing Compiler Version 5 和 core_cm3.c 问题解决
    Keil丢失编译器版本5、内核文件core_cm3.c报错目录Keil丢失编译器版本5、内核文件core_cm3.c报错前言一、MissingCompilerVersion51.下载ArmCompiler52.ARMCC3......
  • 0215 模拟题解
    0215模拟题解t1按照时间\(dp\),好处是和活着的怪物个数相关的概率容易计算。\(dp(i,mask)\)表示时间到\(i\),\(mask\)的怪已经被干掉的概率。这里我们假设\(1\)到......
  • 题解 CF1742G
    题目描述:给你一个序列\(A\),要求将\(A\)重新排序,使得序列\(A\)的前缀或和序列\(B\)的字典序最大。题目分析:这道题我们首先考虑一个性质,就是前缀或和序列\(B\)......
  • 题解 CF1739B
    题目大意:有一个非负整数序列\(A\),定义序列\(D\)是序列\(A\)的绝对值差分序列,问给定序列\(D\),能否求出唯一的序列\(A\),若不能,输出\(-1\),否则输出序列\(A\)。题目......
  • 题解 CF1401C
    题目大意:给定一序列\(A\),定义当且仅当\(\gcd(a_i,a_j)=a_{min}\)时,元素\(a_i\)和\(a_j\)可以交换。问当前给定的序列\(A\)能否转化为非严格单调递增的序列。题......
  • 题解 CF1292A
    题目大意:给你\(2\timesn\)的迷宫,初始时没有任何障碍,给定\(q\)次询问,每次询问给予坐标\((x,y)\),问将坐标\((x,y)\)反转状态(即无障碍变有障碍,有障碍变无障碍)后,该迷......
  • 题解 CF916C
    题目大意:要求构造一张图,并让该图满足以下条件:有\(n\)个点,\(m\)条边。每条边的边权范围是\([1,10^9]\)。图中从\(1\)到\(n\)的最短路径长度是个质数。最小生......
  • 题解 CF277A
    题目大意:有\(n\)名员工,一共有\(m\)种语言,每名员工都会其中\(k_i\)种语言(\(m\ge\boldsymbol{k_i\ge0}\)),现规定两名员工可以交流的条件如下:两名员工会一种及以......