Problem M

GCPC2018 Problem M: Mountaineers MST+LCA 阅读详情

Problem Description

You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the sum of numbers in a given interval.

Input

The first line contains two numbers N and Q. 1 ≤ N,Q ≤ 100000.
The second line contains N numbers, the initial values of A1, A2, ... , AN. -1000000000 ≤ Ai ≤ 1000000000.
Each of the next Q lines represents an operation.
"C a b c" means adding c to each of Aa, Aa+1, ... , Ab. -10000 ≤ c ≤ 10000.
"Q a b" means querying the sum of Aa, Aa+1, ... , Ab.

Output

You need to answer all Q commands in order. One answer in a line.

Sample Input

10 5
1 2 3 4 5 6 7 8 9 10
Q 4 4
Q 1 10
Q 2 4
C 3 6 3
Q 2 4

Sample Output

4
55
9
15

//典型的延迟操作
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include<iostream>
using namespace std;
#define MAXN 102000

struct  node 
{
    int l;
    int r;
    __int64 sum;
    __int64 add;
}t[4*MAXN];

__int64 rr[MAXN];

void build(int id,int l,int r)
{
    int mid = (l+r)/2;
    t[id].l = l;
    t[id].r = r;
    t[id].add=0;
    if(r==l)
    {
        t[id].sum = rr[l];
     //   t[id].add = 0;
    }
    else
 //   t[id].add = 0;
    if(r>l)
    {
        build(id*2,l,mid);
        build(id*2+1,mid+1,r);
        t[id].sum = t[id*2].sum + t[id*2+1].sum;
    }
}

void change(int id,int start,int end,__int64 num)
{
    if(start==t[id].l && end==t[id].r)
    {
        t[id].add += num;
        return ;
    }
    t[id].sum+= (end-start+1)*num;
    int mid = (t[id].l + t[id].r)/2;    
    //延迟操作
    if(t[id].add != 0)
    {
        t[id].sum += (t[id].r-t[id].l+1)*t[id].add;
        change(id*2,t[id].l,mid,t[id].add);
        change(id*2+1,mid+1,t[id].r,t[id].add);
        t[id].add = 0;
    }
    if(mid>=end)
    {
         change(id*2,start,end,num);
    }
    else if(mid+1<=start)
    {
          change(id*2+1,start,end,num);
    }
    else
    {
        change(id*2,start,mid,num);
        change(id*2+1,mid+1,end,num);
    }
}

__int64 ans;

void find(int id,int start,int end)
{
    if (t[id].l==start && t[id].r == end)
    {
        ans+=t[id].sum+(t[id].r-t[id].l+1)*t[id].add;
        return;
    }
    if (t[id].add!=0)
    {
        t[id].sum+= (t[id].r-t[id].l+1)*t[id].add;
        t[id*2].add+=t[id].add;
        t[id*2+1].add+=t[id].add;
        t[id].add = 0;
    }
    int mid = (t[id].l+t[id].r)/2;
    if(mid>=end)
    find(id*2,start,end);
    else if(start>=mid+1)
    find(id*2+1,start,end);
    else
    {
        find(id*2,start,mid);
        find(id*2+1,mid+1,end);
    }
}

int main()
{
    int n,m;
    int i,j;
    char str[10];
    int start,end;
    __int64 num;
    while (scanf("%d%d",&n,&m)!=EOF)
    {
        for (i=1;i<=n;i++)
        {
            scanf("%I64d",&rr[i]);
        }
        build(1,1,n);
        for (i=0;i<m;i++)
        {
            scanf("%s",str);
            if (strcmp(str,"C")==0)
            {
                scanf("%d%d%I64d",&start,&end,&num);
                change(1,start,end,num);
            }
            else
            {
                scanf("%d%d",&start,&end);
                ans = 0;
                find(1,start,end);
                printf("%I64d\n",ans);
            }
        }
    }
    return 0;
}



YOLOv8【项目实战四】遥感图像目标检测:应对特殊场景的挑战,如何处理遥感图像通常具有的大尺寸、多尺度、方向多变等特点,并对 YOLOv8 进行相应调整(含源码) 遥感图像目标检测优化策略 核心挑战 图像尺寸大:遥感图像通常达数万像素,直接缩放导致小目标丢失 多尺度目标:同一图像包含几十像素的小目标和跨图像的大目标 方向多样性:目标360度任意旋转,水平框检测效果差 优化解决方案 滑动窗口分块处理: 采用1024x1024窗口大小 设置20%-30%重叠率防止边界漏检 全局坐标转换实现检测结果拼接 多尺度特征融合: 改进FPN结构增强小目标检测 自适应感受野处理不同尺寸目标 上下文信息聚合提升检测精度 旋转目标检测: 引入旋转边界框表示 角度预测分支增强方向感知 旋转 阅读详情

相关推荐

COMSOL+AI实战:5个超实用技巧让你的仿真效率翻倍(附Python代码)

本文详细介绍了如何将人工智能(AI)与COMSOL仿真软件结合,通过Python脚本实现五大实用技巧,包括自动化生成数据集、构建代理模型、集成AI优化算法、利用神经网络加速场量求解以及智能结果分析,从而显著提升多物理场仿真的效率和自动化水平。

weixin_29230865的博客 443

OJ_数组去重_1176(附选择排序)

Description 现有一个非减序排序的一维数组,其中有若干元素是重复的。编程将重复元素删除掉若干个,仅保留1个,使数组中没有重复元素。 Input 输入有多行。第一行M>0,表示之后有M行输入。 之后的M行输入是若干个一维数组。每行的第一个数据0 Output 输出有M行,每行输出与上述M组输入一一对应,是其输入数组去重后的结果。输出的数据需按照递增序

知行合一 1861

【鸿蒙南向开发】OpenHarmony——分布式数据对象之功能实践

通过本文的学习可了解到分布式数据对象的主要接口、大致调用方法和功能实现等。结合对应内容,可以进一步对分布式数据对象同步机制做深度学习。下一步,(1) 着重理解同步组网的构建原理。(2) 着重理解同步组网内,监听change和status变化的实现。●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。

HarmonyOS_666的博客 1091

专题一 Problem M

一、题目编号:            Problem M 二、简单题意:            输入两个数n,p,n^k=p,其中1 三、 四、感想            五、AC代码 #include #include  using namespace std; int main() {     double n,p;     while(cin>>n>>p)

ML_ACM的博客 393

基于NAS的OpenClaw部署方案:家庭服务器架构设计

本文提出了一种基于NAS的家庭服务器架构方案,用于部署OpenClaw AI系统。文章分析了NAS作为部署平台的六大优势:集中化数据管理、大容量存储、多用户并发访问、7×24小时稳定运行、低功耗设计以及丰富的扩展能力。针对不同用户需求,详细对比了主流NAS型号(如Synology DS923+、QNAP TS-870等)和DIY方案的硬件配置,并给出了最低/推荐配置标准。在部署方案部分,重点介绍了Synology DSM和TrueNAS两种系统的初始化步骤,以及通过Docker容器安装Python、Redi

博客 2509

在 ABAP 中把变量一次写对:深入理解 FINAL 内联声明与不可变变量

摘要:ABAP中的FINAL声明操作符用于定义不可变变量,强调"当前上下文中的唯一写位置",能有效防止变量被意外修改,提升代码健壮性和可读性。官方建议优先在单次赋值的场景使用FINAL替代DATA。其核心规则包括:1)写位置唯一但可多次执行(如循环内);2)不创建块级作用域;3)对引用变量仅约束引用本身而非对象内容。典型适用场景包括:结果值只读、输入快照保存和中间结果保护。例外情况如游标变量不适用,因需多次写操作。正确使用FINAL可显著降低代码维护风险。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1045

Problem M: 有多少个0

Problem M: 有多少个0 Time Limit: 1 Sec Memory Limit: 16 MB Description 求1*2*3*……*n的乘积以多少个0结尾。 Input 输入为多行,至EOF结束。每行为一个整数n,n<=100000。 Output 输出每个n对应的结尾0的个数。 Sample Input 10 100 1000 10000 Sample Output 2 24 249 2499 思路 思路来源:https://blog.youkuaiyun.com/weixi

千色千寻的博客 431

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

Gym - 101981 Problem M. Mediocre String Problem (扩展KMP + Manacher)

Problem M. Mediocre String Problem 题目链接:https://vjudge.net/problem/Gym-101981M 题目大意:给出两个串S,T,从S中选择 i~j 的子串,再从T中选择前缀 1~k 接在S的子串后面 组成一个新字符串,要求 j-i+1>k,问能构成的新串中是回文串的个数 思路:因为要求j-i+1>k,即S中选择的子串x比...

YOONGI 624

【人工智能的数学基础】最优传输(Optimal Transport)问题与Wasserstein距离

代表两堆石子,则问题等价于如何移动一堆石子,通过最小的累积移动距离把它堆成另外一堆石子。的不同位置分配的值。为离散型概率分布,则该优化问题可以表示为矩阵形式。表示寻找总运输成本最小的方案。放大后的上确界不会小于原来的上确界,因此不妨取。具有相同的概率分布。是概率分布,因此积分可以写作采样形式。描述了一种可行的运输方案,表示应该从位置。则最优传输问题的目标函数可以用列向量。对于一个线性规划问题,总可以写出其。的所有可能联合分布的集合,下确界。其中矩阵的每一行代表概率分布。表示寻找使得目标函数最大的。

AI天才研究院 6328

基于PChmi.dll的PLC报警显示和记录(C#)

本文介绍了如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。通过订阅PLC的报警事件,我们可以实时显示报警信息,并通过日志文件记录报警历史。PLC(可编程逻辑控制器)在工业自动化领域中扮演着重要的角色,而报警显示和记录是PLC应用中常见的需求。本文将介绍如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。当然,这只是实现报警显示和记录的基本框架,具体的实现方式可能因不同的PLC和HMI库而有所差异。你需要根据你所使用的具体库和设备进行相应的调整和修改。

ByteLegend的博客 1673

Problem M. Walking Plan hdu6331(最短路)

Problem M. Walking Plan Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 375 Accepted Submission(s): 128 Problem Description There are ...

w571523631的博客 340

AMDGPU IH(Interrupt Handler)实现分析

AMDGPU IH环形缓冲区机制是显卡驱动中高效处理GPU硬件中断的核心架构。该机制通过环形缓冲区存储中断事件,利用读写指针(wptr/rptr)同步硬件与驱动间的数据交互。硬件写入事件后驱动遍历处理,通过指针掩码实现环形循环,并具备溢出检测和虚拟化环境下的重置保护。其优势在于批量处理降低中断开销,指针同步确保可靠性,支持多队列扩展和SR-IOV虚拟化场景,为GPU中断管理提供了高性能基础架构。

图形/计算GPU的驱动与虚拟化技术分享园地 1639

Problem M. Mediocre String Problem

Problem M. Mediocre String Problem(马拉车+拓展KMP) 题意:略(不知道题意还看题解?) 思路: 将S串翻转后进行操作,先用马拉车将S串每个字符为结尾时的回文个数计算出来也就是cnt[i],计算过程是利用差分。 再将翻转后的S与T进行拓展KMP求出LCP,最后直接累加乘积就行。 给个例子: S: bbabbaa T: bbaab S翻转后: aabbabb T不变:bbaab 拓kmp求完后,S串对应的extend[i] = {0, 0, 3, 1.

weixin_44134344的博客 468

老版QQ原生表情gif动态

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

贪心算法 Problem M 1012 已知幂和结果求底数

STL Problem M  Problem ID:1012  简单题意:给出n值和p值,求数值k,使得k的n次方等于p。 解题思路形成过程:利用pow()函数,从1到1000000000循环,找出k值。 感想:比较简单的一道水题,但是要注意看清题干,是求底数还是求幂。还要看清p的取值范围,从而确定定义时的类型。 代码:#incl

Heart. 的博客 1911

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

M - Matrix Problem

这道题目的意思就是给你一个矩阵q,这个矩阵的周围一圈都是'0', 然后让你写两个对应的矩阵a和b要求矩阵 q中为1的地方在a和b中都是1,然后剩下为零的地方a可以是1也可以是0, b中也可以是1也可以是0, 但是要求a和b如果在某处都为1,那么c中也为一, 换而言之就是q中是零的地方,a中可以是1, b可以是0, 或者a中为0, b中为1.要求最后a或者b中的1都是连通的。1.首先让a奇数行为0,偶数行为1,b反之。2.让a最左一列1,最右边一列为0,b反之。3.让c中为1的地方映射给a,b。

m0_73673533的博客 116

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Problem-M

概述:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。求某一年共有多少头牛。 思路:在前三年按照每年一头增加,从第四年开始,第四年生的牛对应第二年有的牛,第五年生的牛对应第三年有的牛,以此类推,fn = f3 + f1; f1 = f2;  //f1代表前3年 f2 = f3;  //f2代表前2年 f3 = fn;  //f3代表前1年。可解。

sdau-acm训练时代写下的博客 344

图算法—Problem M

图算法—Problem M 题意 有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突。解题思路 (1)弄清题意,找出出现冲突的位置,判断冲突很简单: 就是当两个人在同一行坐同时, 他们到根节点的距离差值正好是他们之间的距离差值。如果和测试数据不同,此时就出现了冲突了。

ACM_Blog_WUCHAO 586

Matrix Problem(gym103118-M)

Matrix Problem

m0_73843712的博客 212

problem M

复杂度是n^2 感觉这样有点繁琐~ 和选择排序有点像。 #include int main(void) {     int t, array[15],  array_num, i, j, count;      array_num = 0;     count = 0;     while (1) {         scanf("%d", &t);        

lwk95240的博客 220

HDU problem m

Problem DescriptionThere is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0 &amp;lt;= Ki &amp;lt;= N) on every floor.The lift have just two buttons: up and ...

Source_Roc 211
上一篇: Problem J
下一篇: topcoder 插件安装
翔蝈蝈
博客等级 码龄16年 25粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值