首页 > 其他分享 >洛谷P2068统计和

洛谷P2068统计和

时间:2024-11-18 22:45:04浏览次数:1  
标签:P2068 洛谷 int long define 统计 op

P2068 统计和

思路

单点修改 + 区间查询

线段树/树状数组板子题

代码

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define lowbit(x) x & -x
const int maxn = 5e5 + 5;
const int inf = 0x7f7f7f7f;

struct custom_hash 
{
	static uint64_t splitmix64(uint64_t x) 
    {
		x ^= x << 13;
		x ^= x >> 7;
		x ^= x << 17;
		return x; 
	}
	size_t operator () (uint64_t x) const 
    {
		static const uint64_t FIXED_RANDOM = std::chrono::steady_clock::now().time_since_epoch().count(); // 时间戳
		return splitmix64(x + FIXED_RANDOM);
	}
};

int fenwick[maxn];

int n = 0, w = 0;

void modify(int pos, int x)
{
    while(pos <= n)
    {
        fenwick[pos] += x;
        pos += lowbit(pos);
    }
}

int query(int pos)
{
    int ans = 0;
    while(pos)
    {
        ans += fenwick[pos];
        pos -= lowbit(pos);
    }
    return ans;
}

void solve()
{
    std::cin >> n >> w;
    char op = 0;
    int a = 0, b = 0;
    for (int i = 1; i <= w; i++)
    {
        std::cin >> op >> a >> b;
        if (op == 'x')
        {
            modify(a, b);
        }
        else
        {
            std::cout << query(b) - query(a - 1) << endl;
        }
    }
}

signed main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr); std::cout.tie(nullptr);
    //freopen("out.txt", "w", stdout);
    int t = 1;
    //std::cin >> t;
    while(t--)
    {
        solve();
    }
    return 0;
}

标签:P2068,洛谷,int,long,define,统计,op
From: https://www.cnblogs.com/SteinsGateSg/p/18553917

相关文章

  • 洛谷P5057简单题
    P5057[CQOI2006]简单题这是题面思路每次操作,直接区间加\(1\),最后求结果的时候对\(2\)取余就好了这个题就是区间修改+单点查询可以用树状数组或者线段数维护代码#include<bits/stdc++.h>#defineendl'\n'#defineintlonglong#definelowbit(x)x&-xconstint......
  • 基于python在线考试统计系统(Pycharm Flask Django mysql)
    文章目录项目介绍系统开发技术路线具体实现截图开发技术系统性能核心代码部分展示源码/演示视频获取方式项目介绍系统主要包括首页、个人中心、学生管理、教师管理、班级管理、班级公告管理、考试通知管理、统计成绩管理、留言信息管理、教师评论管理、试题管理、论......
  • 洛谷题单指南-二叉堆与树状数组-P1908 逆序对
    原题链接:https://www.luogu.com.cn/problem/P1908题意解读:求逆序对,前面介绍过归并排序的做法,参考:https://www.cnblogs.com/jcwy/p/184077,这里介绍树状数组的做法。解题思路:设数组a[n]里的整数只包括1~n,显然对于此题,可以通过离散化得到这样的数组。要计算逆序对,就是要计算对于......
  • 小寄巧——给洛谷题单快速生成一份目录
    以此题单为例,首先我们在浏览器中打开,F12切换到Console,输入document.querySelectorAll(".titlea"),然后复制返回的所有内容,粘贴到VSCode里,内容大致如下:NodeList(15)[a.title.color-default,a.title.color-default,a.title.color-default,a.title.color-default,a.title......
  • 洛谷P3538 [POI2012] OKR-A Horrible Poem
    前言比较典,可以当模板题,故记录一下,写的可能比较水。题意Link长度为\(n\(\leq6\times10^5)\)的字符串,有\(q\(\leq2\times10^6)\)个询问,每次询问求一个区间的最小循环节。思路题面看起来很唬人,我们平时求最短循环节都是用前缀函数,这一放在区间上就不会做了。但实际......
  • 洛谷 P3226 [HNOI2012] 集合选数 做题记录
    我们先建一个矩阵:\(\begin{bmatrix}1&2&4&8&16&32\\3&6&12&24&48&96\\9&18&36&72&144&288\\27&54&108&216&432&864\end{bmatrix}\)......
  • 洛谷题单指南-二叉堆与树状数组-P3368 【模板】树状数组 2
    原题链接:https://www.luogu.com.cn/problem/P3368题意解读:树状数组应用-区间修改,单点求值解题思路:设原数组为s[N],其差分数组为a[N]操作一:区间修改要对s[x]~s[y]每个数增加k,相当于对a[x]加k,对a[y+1]减k,O(n)的操作变成了O(1)的操作,利用树状数组tr[N]的add(x,k),add(y+......
  • 洛谷题单指南-二叉堆与树状数组-P3374 【模板】树状数组 1
    原题链接:https://www.luogu.com.cn/problem/P3374题意解读:树状数组模版:单点修改,区间求值。解题思路:树状数组-BinaryIndexTree可以动态维护一组数,可以O(logn)的修改一个数,也可以O(logn)的计算一段区间的和。思考一下朴素做法:如何修改一个数,计算区间和?如果是常规数组,修改操作......
  • 探寻优雅之法:实现高效在线人数统计功能
    探寻优雅之法:实现高效在线人数统计功能前言实现步骤如何认定用户是否在线?zadd命令添加在线用户zadd命令介绍添加在线用户标识到有序集合中zrangeByScore命令查询在线人数zrangeByScore命令介绍查询当前所有的在线用户zremrangeByScore命令定时清除在线用户zremrangeByS......
  • 洛谷P1607
    [NOIP2009普及组]多项式输出-洛谷 [NOIP2009普及组]多项式输出题目描述一元n次多项式可用如下的表达式表示:f(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0,a_n\ne0其中,a_ix^i称为i次项,a_i称为i 次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定......