HDU——1166 敌兵布阵(线段树点更新+区间查询)

LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测,包含插件部署) 阅读详情

C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 
中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Derek问:“Tidy,马上汇报第3个营地到第10个营地共有多少人!”Tidy就要马上开始计算这一段的总人数并汇报。但敌兵营地的人数经常变动,而Derek每次询问的段都不一样,所以Tidy不得不每次都一个一个营地的去数,很快就精疲力尽了,Derek对Tidy的计算速度越来越不满:"你个死肥仔,算得这么慢,我炒你鱿鱼!”Tidy想:“你自己来算算看,这可真是一项累人的工作!我恨不得你炒我鱿鱼呢!”无奈之下,Tidy只好打电话向计算机专家Windbreaker求救,Windbreaker说:“死肥仔,叫你平时做多点acm题和看多点算法书,现在尝到苦果了吧!”Tidy说:"我知错了。。。"但Windbreaker已经挂掉电话了。Tidy很苦恼,这么算他真的会崩溃的,聪明的读者,你能写个程序帮他完成这项工作吗?不过如果你的程序效率不够高的话,Tidy还是会受到Derek的责骂的. 

Input

第一行一个整数T,表示有T组数据。 
每组数据第一行一个正整数N(N<=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵营地里开始时有ai个人(1<=ai<=50)。 
接下来每行有一条命令,命令有4种形式: 
(1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) 
(2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); 
(3)Query i j ,i和j为正整数,i<=j,表示询问第i到第j个营地的总人数; 
(4)End 表示结束,这条命令在每组数据最后出现; 
每组数据最多有40000条命令 

Output

对第i组数据,首先输出“Case i:”和回车, 
对于每个Query询问,输出一个整数并回车,表示询问的段中的总人数,这个数保持在int以内。 

Sample Input

1
10
1 2 3 4 5 6 7 8 9 10
Query 1 3
Add 3 6
Query 2 7
Sub 10 2
Add 6 3
Query 3 10
End 

Sample Output

Case 1:
6
33
59

一个解释线段树写的比较好的博客:

https://blog.youkuaiyun.com/zip_fan/article/details/46775633

#include <cstdio>
#include<iostream>
using namespace std;
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1
const int maxn = 55555;
int sum[maxn<<2];//   *  4 的意思
void PushUP(int rt)//rt 为当前节点
{
    sum[rt] = sum[rt<<1] + sum[rt<<1|1];
}
void build(int l,int r,int rt)
{
    if (l == r)
    {
        scanf("%d",&sum[rt]);
        return ;
    }
    int m = (l + r) >> 1;
    build(lson);
    build(rson);
    PushUP(rt);
}
void update(int p,int add,int l,int r,int rt)//单点更新,点 p 加上 add
{
    if (l == r)
    {
        sum[rt] += add;
            return ;
    }
    int m = (l + r) >> 1;
    if (p <= m)
        update(p , add , lson);
    else
        update(p , add , rson);
    PushUP(rt);
}
int query(int L,int R,int l,int r,int rt)//要查询的区间 L R 递归查询
{
    if (L <= l && r <= R)
    {
        return sum[rt];
    }
    int m = (l + r) >> 1;
    int ret = 0;
    if (L <= m)
        ret += query(L , R , lson);
    if (R > m)
        ret += query(L , R , rson);
    return ret;
}
int main()
{
    int T , n;
    scanf("%d",&T);
    for (int cas = 1 ; cas <= T ; cas ++)
    {
        printf("Case %d:\n",cas);
        scanf("%d",&n);
        build(1 , n , 1);
        char op[10];
        while (scanf("%s",op))
        {
            if (op[0] == 'E')
                break;
            int a , b;
            scanf("%d%d",&a,&b);
            if (op[0] == 'Q')
                printf("%d\n",query(a , b , 1 , n , 1));
            else if (op[0] == 'S')
                update(a , -b , 1 , n , 1);
            else
                update(a , b , 1 , n , 1);
        }
    }
    return 0;
}

 

深入介绍 SAP OData CSRF Token 的一些技术细节 跨站请求伪造(Cross-Site Request Forgery,简称 CSRF)是一种网络攻击手段,它允许攻击者伪造用户的身份来执行未经授权的操作。为了防止 CSRF 攻击,常用的一种技术手段就是 CSRF Token.CSRF Token 是一种随机生成的防伪 Token,它由服务器颁发给客户端,并需要客户端在提交某些特定类型的请求时,将该 Token 添加到 HTTP 请求的头部字段去。 阅读详情

相关推荐

合规批量下载美国上市公司年报数据的一些经验和总结

本文总结了使用Python脚本批量下载和处理美国上市公司SEC报告的技术经验。通过CIK代码查询SEC EDGAR系统,生成特定日期和报告类型的URL,并使用Selenium和Requests库下载报告内容。流程包括数据获取、文件下载、Excel处理和多线程优化,确保高效处理几百条数据。关键技术挑战包括SEC访问限制、动态网页内容和数据完整性,解决方案包括设置合规的User-Agent、使用Selenium模拟浏览器行为以及错误日志记录。最佳实践包括模块化设计、多线程优化和严格遵守SEC合规性。该自动化流程

jyfool的博客 1636

[线段树 点更新 段查询]A - 敌兵布阵 HDU - 1166

**[线段树 点更新 段查询]A - 敌兵布阵 HDU - 1166 **

Enter 567

Transformer在CV里太耗算力?手把手拆解Restormer的MDTA与GDFN模块

本文深度解析了CVPR2022最佳论文提名作品Restormer的创新模块MDTA与GDFN,有效解决了Transformer在计算机视觉领域的高计算复杂度问题。通过通道注意力降维和门控前馈网络设计,Restormer在图像恢复重建任务中显著降低计算量,同时保持高性能,为实时图像处理提供了可行方案。

weixin_30258901的博客 445

HDU 1166 敌兵布阵 (线段树点更新区间查询)

C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。  中央情报局要研究敌人究竟演习什么战术,

du_lun的博客 243

医学图像分割实战:基于TransUNet训练自己的眼底硬渗出物数据集(附完整代码)

本文详细介绍了基于TransUNet的眼底硬渗出物分割实战指南,涵盖数据预处理、模型调优、训练策略及性能优化等关键环节。通过代码复现和实验对比,展示了TransUNet在医学图像分割中的优势,为糖尿病视网膜病变的早期诊断提供技术支持。

weixin_42524708的博客 363

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

hdu 1166 敌兵布阵(树状数组 | 线段树)

题目链接:hdu 1166 敌兵布阵 题目大意:略。 解题思路:树状数组的水题。这篇题解很好,适合初学树状数组的人。题解连接 #include #include const int N = 50005; const int M = 105; int n, v[N]; void add(int x, int val) { while (x <= n) {

不慌不忙、不急不躁 1643

动态博弈、威胁与承诺(博弈论入门学习笔记四)

0 动态博弈 动态博弈:行动有先后顺序,不同的参与人在不同时点行动,先行动者的选择影响后行动者的选择空间,后行动者可以观察到先行动者做了什么选择。例如下棋、消费者和商家讨价还价、谈婚论嫁、企业之间的价格战等等。 因此,为了做出最优的行动选择,每个参与人都应该思考:如果我如此选择,对方将如何应对?如果我是他,我将会如何行动?给定他的应对,什么是我的最优选择? 动态博弈中的战略:在博弈开始之前就...

stepho的博客 1万+

HDU1166:敌兵布阵(线段树点更新,区间查询)

C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以T...

海绵的博客 244

D19: OpenClaw 安全性配置指南

在 OpenClaw 的 30 天探索旅程中,我们已经探讨了邮件自动化(D18)。今天进入安全专题,我将分享一个至关重要的话题:OpenClaw 安全性配置指南。 随着 OpenClaw 深入工作流核心,它掌握了越来越多的敏感信息: API Keys(GitHub、飞书、Notion、Jira...) 企业数据(代码库、文档、聊天记录) 个人数据(日历、邮件、任务) 系统权限(文件读写、命令执行、网络访问) 安全不是可选项,而是必选项。一次配置失误可能导致: API Key 泄露 → 账号被盗用权限

刘一说的IT专栏 203

30. 用GPT-4自动生成测试用例的完整流程

利用GPT - 4生成测试用例面临的主要问题包括:如何准确地将软件需求转化为GPT - 4能够理解的输入提示,以确保生成的测试用例覆盖所有关键功能;如何评估生成的测试用例的有效性和充分性;如何处理生成的测试用例中的错误或不合理之处;以及如何将生成的测试用例集成到现有的测试框架中。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 472

敌兵布阵(HDU - 1166)(线段树的点更新-区间查询)

敌兵布阵(HDU - 1166)C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。

reset的博客 501

RHCA III之路---EX436-1

由于ha这门课有大量命令需要在3个节点上同步执行.如果执行history会出现前面数字,复制多行会有些麻烦.lab环境是nodea,nodeb,nodec 考试环境是node1,node2,node3。就可以快速将历史命令实现可多行复制,当然也可以用awk进行分割,个人喜好随意。技巧只能加快答题速度,对考试得分帮助不大。确认3个红框内容一致,且没报错即可。再执行一个histrory。3个node节点上运行。这样就能1次复制3行。

Q先生 1002

线段树-A 敌兵布阵

HDU-1166 敌兵布阵简单的线段树的修改和区间查询#include &lt;bits/stdc++.h&gt; #define maxn 100007 using namespace std; int Sum[maxn *2]; int A[maxn],n; void PushUP(int rt)//求和 { Sum[rt] = Sum[rt*2] + Sum[rt*2+1]; ...

Du_Ra_Ra_Ra的博客 352

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

树状数组 做题笔记1

HDU - 1166 敌兵布阵: #include &lt;bits/stdc++.h&gt; using namespace std; int a[50005]; char cmd[1005]; int main() { int t, n, m, i, j, k, ca = 1; scanf("%d", &amp;t); while(t--) { ...

Miracle_QSH的博客 322

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

线段树——点修改

HDU1166:敌兵布阵 传送门 这道题是线段树的基础题,只涉及线段树的点修改及其查询 #include #include #include #define MAXN 50010 using namespace std; int f[MAXN<<2],a[MAXN]; void build(int l,int r,int now) { if(l==r) { f[no

转角ni松开 364

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

线段树

HDU - 1166 敌兵布阵 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 点更新,区间查询 区间和,直接代模板 代码如下: #include &lt;stdio.h&gt; #include &lt;math.h&gt; #define MAXN 50005 int a[MAXN]; int segment_tre...

世界在身后,观我背影辽阔 250

Abandon の 线段树【专辑】(长期更新)

  先从zkw大神的《统计与力量》感受了zkw线段树的优美(在此先ym 3分钟……),但是自己还是不能深入理解;后来又看了NotOnlySuccess的线段树,虽然是用递归形式但从优美程度来讲一点儿也不差(zkw的非递归自己在拓展方面很难伸展,功力还不够……),我的线段树主要就是受这两位大牛的风格影响了~~~然后练习呀什么的基本是跟着HH神(NotOnlySuccess)的【完全版】线段树来的,然...

weixin_30758821的博客 137

【每日一题(33)】 敌兵布阵 HDU-1166(线段树)

敌兵布阵 HDU-1166 前言 这是赵神5个月前布置的一道题目,VJ上显示第一次提交记录是2017-11-02 22:36:53 当时还年轻,以为这个题不难,直接就暴力求解,现在发现太年轻了,线段树+string都TLE 五个月前,对线段树最深的了解就是西工大的线段树专场了。 这是5个月的回忆,回想这5个月,还是荒废掉了。 题目描述 C国的死对头A...

Winsoul Blog 1万+

HDUOJ 1166 敌兵布阵

HDUOJ 1166 敌兵布阵 题目链接 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报

旺崽的博客 2673

hdu1166 敌兵布阵 线段树求和

import java.util.Scanner; class Node {// 结点类 int l, r; int sum; Node(int l, int r, int sum) { this.l = l; this.r = r; this.sum = sum; } } public class Main { static final int N = (int) (...

匿名攻城狮 742

【完全版】线段树初学--HDU 1166 敌兵布阵

【完全版】线段树初学--HDU 1166 敌兵布阵 链接:click here~~ 题意: 第一行一个整数T,表示有T组数据。 每组数据第一行一个正整数N(N 接下来每行有一条命令,命令有4种形式: (1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); (3)Query

herongwei 的 BLOG 1228

【 HDU 1166】 敌兵布阵 树状数组从0到1

如果给你一个数组,让你求某个区间的和,你很自然会想到遍历一遍数组,复杂度是O(n),但是如果有多次询问呢,你也许会想到用前缀数组,通过O(n)的预处理,达到O(1)的查询,但是如果要更新某个元素的值呢,如果用前缀和的思想,每更新一个元素就会更新前缀数组,每次复杂度是O(n),如果有n次更改,复杂度为O(n^2)。有没有更快的呢,这时候树状数组就排上用场了,树状数组可以用来解决动态数组连续和的问题。...

天才小熊猫的博客 3277

[HDU 1166] 敌兵布阵

[HDU 1166] 敌兵布阵 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 一个线段树区间求和的模板题了。 1 #include&lt;iostream&gt; 2 #include&lt;cstdio&gt; 3 #include&lt;cstring&gt...

Youpeng 285

HDU1166敌兵布阵-线段树求和

HDU1166敌兵布阵-线段树求和 #include #include #include #include using namespace std; const int maxn = 200005*2; long long n,dat[2*maxn-1]; void init(int n_) { n = 1; while(n<n_)n*=2; for(int i

wxyfennie的博客 428

敌兵布阵 HDU 1166 线段树

敌兵布阵 HDU 1166 线段树 题意 这个题是用中文来描写的,很简单,没什么弯。 解题思路 这个题肯定就是用线段树来做了,不过当时想了一下可不可用差分来做,因为不熟练就还是用了线段树来做,几乎就是模板题了。 代码实现 #include<cstdio> #include<cstring> #include<algorithm> #include&lt...

weixin_30715523的博客 191
上一篇: vector存图解决最短路(带堆优化)
下一篇: PAT甲级 1003 Emergency (Dj最短路)
donCoder
博客等级 码龄9年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值