猫史档案馆


我是白白

我是白白

Lv.1

啊?

获赞:76收藏:35浏览:536作品收藏:14

签名:你说的对,但是斜率优化后面忘了

回复帖子评论
上一页2 页 / 共 2下一页

谁会C++的给我站出来! 中回复

快喵(逃

2022-06-30T16:35:01 点赞:0

谁会C++的给我站出来! 中回复

诶,你几年级,要是我比你小怎么办(我五年级)

2022-06-30T16:37:06 点赞:0

谁会C++的给我站出来! 中回复

想学c++的加q

2022-07-01T16:45:05 点赞:0

【跟风】图形化编程的问题 中回复

C++yyds,图形化万碎,我三年级开学的c++,不存在低龄化问题

2022-07-01T17:07:13 点赞:1

寻找合作者 中回复

az,你得发合作链接…………

2022-07-01T17:08:26 点赞:2

有什么可以打包coco的网站,真的不想看启动图! 中回复

删点东西就完事,或者自己写代码,(当然,哪种都得先学代码)

2022-07-01T17:10:52 点赞:0

C++测试题 中回复

【白白的第一题】线段计数

 

题目背景

小白白有一个数组,他懒得算区间最大值和最小值…………

 

题目描述

有一个正整数序列a1,a2,…an。给定一个范围[x,y],求这个范围内的最大值与最小值的差。

 

输入格式:

输入文件包第一行包含2个整数 n,m;n表示序列的长度,m表示给定的范围的数量。 

第二行包含 n 个整数,相邻两数间用一个空格隔开,第 i 个整数为 ai 。

第3~m+2行,每行两个数字x,y,代表范围[x,y]。0<x<=y<=n

 

输出格式:

输出文件包含m个整数,每个整数一行;代表第i个范围内的最大值和最小值之差。

 

样例1输入: 6 1 4 3 2 5 3 5 3 5   样例1输出: 3   样例1解释:

[3,5]之间,三个数2,5,3 ,最大值与最小值之差为3

 

说明提示:

【数据规模与约定】

1< ai<10000

对于 30% 的数据:1< =m< n < =100

对于 70% 的数据:   1< =m< n < =10000  

对于 100% 的数据: 1< =m< n < =1000000

 

提示:

数据规模较大,可以用线段树做

2022-07-01T17:15:51 点赞:0

【小游戏】闭着眼在键盘上打字,你能打出什么? 中回复

#In才可以的MUI三体热庵《

2022-07-01T22:52:21 点赞:0

C++编程:出了问题请大佬解决 中回复

众所周知,岛三是c++(逃

2022-07-05T16:46:34 点赞:1

关于我的C++回帖引起争相模仿…… 中回复

???结构体挺屑的

2022-07-11T10:04:40 点赞:0

关于社区接入防沉迷系统的公告 中回复

嘿嘿,大家都在发c++,那我就发个线段树模板吧,《》《》

#include <iostream>
using namespace std;
    long long n,m,p;
long long a[100005];
struct Tre{
   long long left,right;  
   long long num;  
   long long delta;  
}tree[400005];
void build(long long id,long long l,long long r){
   tree[id].left=l;tree[id].right=r;
    if(l==r){
    	tree[id].num=a[l];
    	tree[id].delta=0;
    }
    else{
    	int mid=(l+r)/2;
    	build(id*2,l,mid);
    	build(id*2+1,mid+1,r);
    	tree[id].delta=0;
        tree[id].num=(tree[id*2].num+tree[id*2+1].num);
    }
}
long long query(long long id,long long l,long long r){
    if(tree[id].left>r||tree[id].right<l) return 0;
    if(tree[id].left>=l&&tree[id].right<=r) return tree[id].num;
    if(tree[id].delta){
         tree[id*2].num+=((tree[id*2].right-tree[id*2].left+1)*tree[id].delta);
        tree[id*2].delta+=tree[id].delta;
        tree[id*2+1].num+=((tree[id*2+1].right-tree[id*2+1].left+1)*tree[id].delta);
        tree[id*2+1].delta+=tree[id].delta;
        tree[id].delta=0;
    }
    tree[id].num=(tree[id*2].num+tree[id*2+1].num);
    return query(id*2,l,r)+query(id*2+1,l,r);
}

void update(long long id, long long l, long long r, long long delta){
    if(tree[id].left>r||tree[id].right<l) return ;
    if(tree[id].left>=l&&tree[id].right<=r){
        tree[id].num+=((tree[id].right-tree[id].left+1)*delta);
        tree[id].delta+=delta;
        return ;
    }
    if(tree[id].delta){
         tree[id*2].num+=((tree[id*2].right-tree[id*2].left+1)*tree[id].delta);
        tree[id*2].delta+=tree[id].delta;
        tree[id*2+1].num+=((tree[id*2+1].right-tree[id*2+1].left+1)*tree[id].delta);
        tree[id*2+1].delta+=tree[id].delta;
        tree[id].delta=0;
    }
    update(id*2,l,r,delta);
    update(id*2+1,l,r,delta);
    tree[id].num=(tree[id*2].num+tree[id*2+1].num);
}
int main(){
    return 0;
}

记住,这是  基础中的基础  一定 要会》》》》

2022-07-11T10:07:17 点赞:0

关于我的C++回帖引起争相模仿…… 中回复

#include <iostream>
using namespace std;
    long long n,m,p;
long long a[100005];
struct Tre{
   long long left,right;  
   long long num;  
   long long delta;  
}tree[400005];
void build(long long id,long long l,long long r){
   tree[id].left=l;tree[id].right=r;
    if(l==r){
    	tree[id].num=a[l];
    	tree[id].delta=0;
    }
    else{
    	int mid=(l+r)/2;
    	build(id*2,l,mid);
    	build(id*2+1,mid+1,r);
    	tree[id].delta=0;
        tree[id].num=(tree[id*2].num+tree[id*2+1].num);
    }
}
long long query(long long id,long long l,long long r){
    if(tree[id].left>r||tree[id].right<l) return 0;
    if(tree[id].left>=l&&tree[id].right<=r) return tree[id].num;
    if(tree[id].delta){
         tree[id*2].num+=((tree[id*2].right-tree[id*2].left+1)*tree[id].delta);
        tree[id*2].delta+=tree[id].delta;
        tree[id*2+1].num+=((tree[id*2+1].right-tree[id*2+1].left+1)*tree[id].delta);
        tree[id*2+1].delta+=tree[id].delta;
        tree[id].delta=0;
    }
    tree[id].num=(tree[id*2].num+tree[id*2+1].num);
    return query(id*2,l,r)+query(id*2+1,l,r);
}

void update(long long id, long long l, long long r, long long delta){
    if(tree[id].left>r||tree[id].right<l) return ;
    if(tree[id].left>=l&&tree[id].right<=r){
        tree[id].num+=((tree[id].right-tree[id].left+1)*delta);
        tree[id].delta+=delta;
        return ;
    }
    if(tree[id].delta){
         tree[id*2].num+=((tree[id*2].right-tree[id*2].left+1)*tree[id].delta);
        tree[id*2].delta+=tree[id].delta;
        tree[id*2+1].num+=((tree[id*2+1].right-tree[id*2+1].left+1)*tree[id].delta);
        tree[id*2+1].delta+=tree[id].delta;
        tree[id].delta=0;
    }
    update(id*2,l,r,delta);
    update(id*2+1,l,r,delta);
    tree[id].num=(tree[id*2].num+tree[id*2+1].num);
}
int main(){
    return 0;
}

2022-07-11T10:14:19 点赞:0

关于我的C++回帖引起争相模仿…… 中回复

这才是基础

2022-07-11T10:14:28 点赞:0

请求加入神射手工作室 中回复

喵++三年,python莫学,kt4自学(虽说不咋地)

C++学到了线段树

2022-07-13T18:15:57 点赞:0

找师傅qwq 中回复

???????不支持H喵L吗》》》》》

2022-07-13T18:34:22 点赞:0

(灌水)如果你的头像人物和你打一架,你觉得谁会赢? 中回复

关门打狗,《》《》《》

2022-07-15T13:10:31 点赞:0

【㵘】晒出你最早的消息 中回复

吉吉喵 9个月前   【限时福利】编程猫皮肤限时放送 三步即可获得,限量编程猫皮肤 1.进入神岛任一已发布地图游玩 快速入口喵ao.cn/p/weapon-to-try 2.点击右上角菜单内【分享地图】按钮,获得邀请链接 3.将邀请链接发送给2名神岛新人好友,好友成功注册即可获得  

2022-07-15T13:20:40 点赞:0

找师傅qwq 中回复

我现在的c++水平贼菜,才学到线段树qwq

2022-07-15T13:25:37 点赞:0

故事接龙()()() 中回复

你逃了出来,但被众人打喵了

2022-07-15T13:29:16 点赞:0

[NOC复赛】难道没有人考Python吗? 中回复

都没有我学的………………………………………………………………………………………………我只学过C++

2022-07-18T10:09:28 点赞:0

一定得点进来看看!666! 中回复

#include<bits/stdc++.h>
using namespace std;
void awa(int a){
    if(a>=114514)return;
    puts(6+'0');
    f(a+1);
}
int main(){
    f(1);
    cout<<"才怪";
    cout<<"NOC这么水谁去啊";
}

2022-07-20T18:58:09 点赞:0

想找朋友。。 中回复

11岁,无钉钉,不上作品》》》人家主攻c喵的awa,(mc万岁!!!)

2022-10-11T12:07:59 点赞:0