【分块】教主的魔法 @洛谷P2801/upcexam3138

【模拟】[NOIP2014]螺旋矩阵[c++] 题目描述 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入1, 2, 3, … , n,便构成了一个螺旋矩阵。 阅读详情

时间限制: 1 Sec 内存限制: 128 MB
题目描述
教主最近学会了一种神奇的魔法,能够使人长高。于是他准备演示给XMYZ信息组每个英雄看。于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1、2、……、N。
每个人的身高一开始都是不超过1000的正整数。教主的魔法每次可以把闭区间[L, R](1≤L≤R≤N)内的英雄的身高全部加上一个整数W。(虽然L=R时并不符合区间的书写规范,但我们可以认为是单独增加第L(R)个英雄的身高)
CYZ、光哥和ZJQ等人不信教主的邪,于是他们有时候会问WD闭区间 [L, R] 内有多少英雄身高大于等于C,以验证教主的魔法是否真的有效。
WD巨懒,于是他把这个回答的任务交给了你。
输入
第1行为两个整数N、Q。Q为问题数与教主的施法数总和。
第2行有N个正整数,第i个数代表第i个英雄的身高。
第3到第Q+2行每行有一个操作:
(1)若第一个字母为“M”,则紧接着有三个数字L、R、W。表示对闭区间 [L, R] 内所有英雄的身高加上W。
(2)若第一个字母为“A”,则紧接着有三个数字L、R、C。询问闭区间 [L, R] 内有多少英雄的身高大于等于C。
输出
对每个“A”询问输出一行,仅含一个整数,表示闭区间 [L, R] 内身高大于等于C的英雄数。
样例输入
5 3
1 2 3 4 5
A 1 5 4
M 3 5 1
A 1 5 4
样例输出
2
3
提示
原先5个英雄身高为1、2、3、4、5,此时[1, 5]间有2个英雄的身高大于等于4。教主施法后变为1、2、4、5、6,此时[1, 5]间有3个英雄的身高大于等于4。
对30%的数据,N≤1000,Q≤1000。
对100%的数据,N≤1000000,Q≤3000,1≤W≤1000,1≤C≤1,000,000,000

第一次写分块题
将数据分成sqrt(n)块,对每个块分别排序。
对于修改操作,区间内完整的块修改其add数组的值,不完整的块暴力修改在区间内的部分,然后对整个块排序。
对于查询操作,区间内完整的块二分查找C-add[i]在区间内的位置,然后用该位置减去块的首位置,不完整的块暴力统计。

#define FILE_PC() freopen("C:\\Users\\hz\\Desktop\\in.txt","r",stdin)
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;
const int maxn = 1000005;
const int maxdiv = 1005;
int a[maxn],b[maxn];
int l[maxdiv],r[maxdiv],add[maxdiv];
int lendiv,n,m;

int main() {
//    FILE_PC();
    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; i++) {
        scanf("%d",a+i);
        b[i] = a[i];
    }
    lendiv = (int)sqrt(n); //分块长度
    int cntdiv = 0,flag = 1;
    for(int i=1; i<=n; i++) {
        if(cntdiv==0)l[++cntdiv] = i;//块的编号从1开始
        if(!flag) {
            l[++cntdiv] = i;
            flag = 1;
        }
        if(i%lendiv==0) {
            r[cntdiv] = i;
            flag = 0;
        }
    }
    r[cntdiv] = n; //最后一块的右区间
    for(int i=1; i<=cntdiv; i++) {
        sort(b+l[i],b+r[i]+1);
    }//每个块里面的元素排序
    for(int ca=0; ca<m; ca++) {
        char s[20];
        int ll,rr,cc;
        scanf("%s%d%d%d",s,&ll,&rr,&cc);
        if(s[0]=='M') {
            int ld = (int)(lower_bound(l+1,l+cntdiv+1,ll)-l);
            if(l[ld]!=ll) {
                for(int i=ll; i<min(l[ld],rr+1); i++) {
                    a[i]+=cc;
                }
                for(int i=l[ld-1]; i<=r[ld-1]; i++) {
                    b[i] = a[i];
                }
                sort(b+l[ld-1],b+r[ld-1]+1);//重新对这个块排序
            }
            if(l[ld]<rr+1) {
                int rd = (int)(lower_bound(r+1,r+cntdiv+1,rr)-r);
                if(rr!=r[rd]) {
                    for(int i=max(ll,r[rd-1]+1); i<=rr; i++) {
                        a[i] += cc;
                    }
                    for(int i=l[rd]; i<=r[rd]; i++) {
                        b[i] = a[i];
                    }
                    sort(b+l[rd],b+r[rd]+1);//同上
                }
                for(int i=ld; i<=((rr==r[rd])?rd:rd-1); i++) { //完整的块
                    add[i]+=cc;
                }
            }
        } else {
            int ans = 0;
            int ld = (int)(lower_bound(l+1,l+cntdiv+1,ll)-l);//给定的左区间落在哪一块
            if(l[ld]!=ll) {
                for(int i=ll; i<min(l[ld],rr+1); i++) { //暴力统计不完整的块
                    if(a[i]+add[ld-1]>=cc)ans++;
                }
            }
            if(l[ld]<rr+1) {
                int rd = (int)(lower_bound(r+1,r+cntdiv+1,rr)-r);//给定的右区间落在哪一块
                if(rr!=r[rd]) {
                    for(int i=max(ll,r[rd-1]+1); i<=rr; i++) { //同上
                        if(a[i]+add[rd]>=cc)ans++;
                    }
                }
                for(int i=ld; i<=((rr==r[rd])?rd:rd-1); i++) { //统计每一个完整的块
                    ans += (int)(b+r[i]+1-lower_bound(b+l[i],b+r[i]+1,cc-add[i]));
                }
            }
            printf("%d\n",ans);
        }
    }
    return 0;
}
【枚举】珠心算测验[c++] 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。 某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和? 最近老师出了一些测验题,请你帮忙求出答案。 阅读详情

相关推荐

【模拟】[NOIP2011]铺地毯[c++]

题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯,一共有n张地毯,编号从 1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。 地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

银狼的黎明 2081

【倍增】T-shirt @2018acm徐州邀请赛 I

问题 I: T-shirt时间限制: 1 Sec  内存限制: 64 MB题目描述JSZKC is going to spend his vacation! His vacation has N days. Each day, he can choose a T-shirt to wear. Obviously, he doesn’t want to wear a singer color T-s...

银狼的黎明 1166

【LCA&倍增】货物运输 @upcexam5909

时间限制: 1 Sec 内存限制: 128 MB 题目描述 在一片苍茫的大海上,有n座岛屿,岛屿与岛屿之间由桥梁连接,所有的岛屿刚好被桥梁连接成一个树形结构,即共n-1架桥梁,且从任何一座岛屿出发都能到达其他任何一座岛屿。 第i座桥梁有一个承重量wi,表示该桥梁一次性最多通过重量为wi的货物。 现在有m个货物运输路线,第i个路线要从岛屿xi出发到达岛屿yi。为了最大化利益,你需要求出在不...

银狼的黎明 286

【贪心】[hdu1052]Tian Ji -- The Horse Racing(田忌赛马)[c++]

Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

银狼的黎明 837

VLOOKUP_fixed.py

VLOOKUP_fixed.py

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

【暴力枚举&BFS】Flow Free @RMRC2017/upcexam5124

时间限制: 1 Sec 内存限制: 128 MB 题目描述 Flow Free is a puzzle that is played on a 2D grid of cells, with some cells marked as endpoints of certain colors and the rest of cells being blank. To solve the p

银狼的黎明 716

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

【分治-前缀积后缀积】JS Window @2018acm徐州邀请赛G

问题 G: JS Window时间限制: 2 Sec  内存限制: 512 MB题目描述JSZKC has an array A of N integers. More over, he has a Window of length M which means the Window can contain M continuous integers in the array. At the beg...

银狼的黎明 652

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

【计算机组成原理】实验4:单周期CPU(Verilog)中海大

【计算机组成原理】实验4:单周期CPU

m0_63023532的博客 3659

【倍增】Tak and Hotels II @ABC044&ARC060/upcexam6463

6463: Tak and Hotels II时间限制: 1 Sec  内存限制: 128 MB提交: 40  解决: 11[提交][状态][讨论版][命题人:admin]题目描述N hotels are located on a straight line. The coordinate of the i-th hotel (1≤i≤N) is xi.Tak the traveler has t...

银狼的黎明 563

C++跨平台Word文档处理库DuckX实战指南:从原理到项目集成

在C++开发中,处理Office文档,尤其是Word文件,常因缺乏原生易用的库而面临挑战。Office Open XML(OOXML)作为.docx文件的基础标准,其本质是包含XML文件的ZIP压缩包。理解这一原理,开发者便能通过解析和操作XML来实现文档的读写。DuckX库正是基于此,为C++提供了轻量级的解决方案。它封装了底层的ZIP处理和XML解析,提供了简洁的面向对象API,其技术价值在于实现了跨平台、无外部依赖的Word文档自动化生成与处理。这尤其适用于服务器端、嵌入式环境或需要脱离Office软

weixin_33508411的博客 387

【枚举】Consonant Fencity @upcexam5110

时间限制: 3 Sec 内存限制: 512 MB 题目描述 There are two kinds of sounds in spoken languages: vowels and consonants. Vowel is a sound, produced with an open vocal tract; and consonant is pronounced in su...

银狼的黎明 449

天祥TX-1C单片机开发板-秒表程序

郭天祥TX-1C开发板实现秒表程序 附开发板图片和原理图 代码 #include <reg52.h> sbit key1=P3^4; //按键S2 sbit key2=P3^5; //按键S3 sbit U1=P2^6; //LED位选 sbit U2=P2^7; //LED片选 unsigned char code ledchar[]={ /...

Run_long_road 3512

人类肠道微生物群落代谢建模

MICOMWeb 是款用户友好型网站,专为人类肠道微生物群落代谢建模设计。该网站旨在解决基因组尺度代谢模型(in silico)构建过程中的3大限制:① 使用 MICOM Python 包进行通量平衡分析时对用户 Python 编程知识的要求;② 支持预定义和用户自定义饮食,以生成专属代谢模型;③ 处理宏基因组鸟枪法测序或 16S 扩增子测序获得的真实丰度数据时,所需的高通量计算基础设施。本文展示了 MICOMWeb 的核心功能,用户可轻松开展虚拟实验,为3个已发表数据集的实验验证生成功能性假设。

多组・学・多组学 1169

【二分】Base Station Sites @ICPC2017HongKong/upcexam5559

时间限制: 1 Sec 内存限制: 128 MB 5G is the proposed next telecommunications standards beyond the current 4G standards. 5G planning aims at higher capacity than current 4G, allowing a higher density of mo

银狼的黎明 320

实战全解|大疆司空2二次开发:从接口开发到第三方业务系统深度融合

大疆司空2二次开发是实现行业无人机定制化应用的关键,通过OpenAPI后端对接+前端组件集成的组合方式,可快速完成功能定制,而与第三方业务系统的深度融合,能彻底打通“业务下发-设备执行-数据回传-流程闭环”的全链路,让无人机管控真正融入行业业务流程。开发过程中,建议优先采用私有版部署保障数据安全,通过中间适配层降低系统耦合度,结合实际业务场景打磨功能,避免过度开发。随着大疆开发者生态的完善,司空2的二次开发能力将持续升级,为更多行业无人机应用提供技术支撑。

2501_93651177的博客 966

【搜索】WAR大佬的SET @upcexam6201

时间限制: 1 Sec 内存限制: 128 MB 题目描述 WAR大佬认为一个包含重复元素的集合认为是优美的,当且仅当集合中的元素的和等于他们的积。 求包含n个元素的优美的集合的个数。 WAR大佬当然会啊,他只是想考考你。 输入 一个正整数n(2&lt;=n&lt;=1000) 输出 一个数ans表示集合的个数 样例输入 5 ...

银狼的黎明 292

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6240

Qt版Dalsa线扫相机的采集Demo

Qt Dalsa

追赶时代的博客 604

【搜索】传感器 @upcexam6023

时间限制: 1 Sec 内存限制: 128 MB 题目描述 SR最近新买了一款电子桌游 这个玩具内部是M个围成一圈的传感器。每个传感器都有开和关两种工作状态,分别用1和0表示。显然,从不同的位置触发沿顺时针方向连续检查K个传感器可以得到M个长度为K的01串。SR知道这M个01串应该是互不相同的。 而且这个桌游的设计很静谧,M会取到最大的可能值。现在SR已经了解到了K的值,他

银狼的黎明 288

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【贪心】LIS @The 15th Zhejiang Provincial Collegiate Programming Contest E

传送门 题意要你构造一个序列,使得该序列的每个位置上的最长上升子序列的长度能构成给定的序列。 构造序列的元素要求还要求满足给定的上下界 solution 我们可以把给出的最长上升子序列的长度按升序排列,长度相同的按下标降序排列。 排完序后第一个数可以贪心的取其下界,同一层(即长度相同)的下标小的取值应该大于等于下标较大的取值 同时取值应该大于前一层下标最大且小于该位置的数 #def...

银狼的黎明 278

老版QQ原生表情gif动态

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 【搜索】WAR大佬的SET @upcexam6201
下一篇: 【暴力枚举&BFS】Flow Free @RMRC2017/upcexam5124
乌拉尔银狼
博客等级 码龄10年 9粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值