BZOJ 4636: 蒟蒻的数列 分块 (未敲)

Latex | IEEE双栏排版中长公式的排版 IEEE双栏排版中,有时候公式过于长了,过宽,导致单栏排版不下。 阅读详情

转自:http://www.cnblogs.com/qscqesze/p/5785586.html

BZOJ 4636: 蒟蒻的数列 分块
4636: 蒟蒻的数列
题目连接:

http://www.lydsy.com/JudgeOnline/problem.php?id=4636
Description

蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列
题目描述
DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知
道N次操作后数列中所有元素的和。他还要玩其他游戏,所以这个问题留给你解决。
Input

第一行一个整数N,然后有N行,每行三个正整数a、b、k。
N<=40000 , a、b、k<=10^9
Output

一个数,数列中所有元素的和
Sample Input

4

2 5 1

9 10 4

6 8 2

4 6 3
Sample Output

16
Hint
题意
题解:

这种瞎JB更新的,感觉还是分块简单一点……

这道题要离散化,我偷了个懒,每个询问扔了三个点进去

感想:
这个地方这样用H和H2,可以不用离散,可以学习下。。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+7;
int n,m,num,belong[maxn],block,l[maxn],r[maxn],low[maxn];
vector<int> V;
map<int,int> H;
map<int,int> H2;
int A[maxn],B[maxn],K[maxn],a[maxn];
void build()
{
    block=sqrt(n/2);
    num=n/block;if(n%block)num++;
    for(int i=1;i<=num;i++)
        l[i]=(i-1)*block+1,r[i]=i*block;
    r[num]=n;
    for(int i=1;i<=n;i++)
        belong[i]=(i-1)/block+1;
}
void update(int L,int R,int k)
{
    if(R<L)return;
    if(belong[L]==belong[R])
    {
        for(int i=l[belong[L]];i<=r[belong[L]];i++)
            a[i]=max(a[i],low[belong[L]]);
        low[belong[L]]=0;
        for(int i=L;i<=R;i++)
            a[i]=max(a[i],k);
        return;
    }
    for(int i=l[belong[L]];i<=r[belong[L]];i++)
        a[i]=max(a[i],low[belong[L]]);
    low[belong[L]]=0;
    for(int i=l[belong[R]];i<=r[belong[R]];i++)
        a[i]=max(a[i],low[belong[R]]);
    low[belong[R]]=0;
    for(int i=L;i<=r[belong[L]];i++)
        a[i]=max(a[i],k);
    for(int i=l[belong[R]];i<=R;i++)
        a[i]=max(a[i],k);

    for(int i=belong[L]+1;i<belong[R];i++)
        low[i]=max(low[i],k);
}

int main()
{
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&A[i],&B[i],&K[i]);
        V.push_back(A[i]);
        V.push_back(B[i]);
        V.push_back(B[i]-1);
    }
    n=3*m;
    build();
    sort(V.begin(),V.end());
    V.erase(unique(V.begin(),V.end()),V.end());
    for(int i=0;i<V.size();i++)
        H[V[i]]=i+1,H2[i+1]=V[i];
    long long ans = 0;
    for(int i=1;i<=m;i++)
        update(H[A[i]],H[B[i]-1],K[i]);
    for(int i=0;i<V.size();i++)
        a[i+1]=max(a[i+1],low[belong[i+1]]);
    for(int i=0;i<V.size()-1;i++)
        ans+=(H2[i+2]-H2[i+1])*a[i+1];
    printf("%lld\n",ans);
}
附录B:Standard Delay Format(SDF)(上) 本附录将介绍标准延迟标注格式,并说明了如何在仿真中执行反标。 延迟格式描述了设计网表的单元延迟和互连走线延迟,无论设计是用两种主要硬件描述语言(VHDL或Verilog HDL)中的哪一种所描述的。 本章还会介绍仿真的反标(backannotation),STA的反标其实是一个简单直接的过程,其中DUA中的时序弧将由SDF所指定的延迟进行标注。 阅读详情

相关推荐

通过EMIF接口实现FPGA与DSP的高速连接(方法)

请注意,具体的连接细节和步骤可能会根据所使用的FPGA和DSP型号以及特定的应用需求而有所不同。开发DSP和FPGA上的软件,以实现数据交换和处理。根据系统的具体需求,对FPGA和DSP的接口逻辑进行优化,以减少延迟、提高数据吞吐量或降低资源消耗。它通常支持多种类型的存储器,如SRAM、DRAM、ROM等,以及通过特定的接口与FPGA连接。对于FPGA,需要编程来实现与DSP的接口逻辑,包括地址译码、数据传输、时序控制等。在连接完成后,进行详细的调试和测试,以确保数据能够在DSP和FPGA之间正确传输。

AigcFox的博客 4587

蒟蒻的分块入门

前言 发现分块这个东西已经渗透到经济生活的各个领域(大雾),所以我不得不学些简单的分块技巧,否则会被同机房的jar形绕懵圈的。 解析 首先%%%%hzwer:   http://hzwer.com/8053.html 对于一个有n个元素的数列,我们把它拆碎了,拆成除了最后一块以外,每块都是k的n/k(或许要+1)个块。这样对于某些块,我们可以整块操作,优化时间。 例题:洛谷P3372

litble的成(tui)长(fei)史 1017

sap 新增科目表_SAP系统中四大科目表的总结

操作科目表定义-OB13 2国家科目表定义-OB13 3集团科目表定义-OB13 4合并科目表(ECCS)定义-CX10 4分配操作科目表到公司代码-OB62 5分配国家科目表到公司代码-OB62 6分配集团科目表到操作科目表-OB13 6分配集团科目表到合并科目表-CXNF 7Operation 8定义集团科目表的科目-FSP0 8定义国家科目表的科目-FSP0 8定义操作科目表的科目-FSP0...

weixin_39585463的博客 1721

bzoj4636 蒟蒻的数列(离散化+线段树)

因为是只有最后询问一次和,所以可以离散化之后,区间更新最大值,线段树维护即可。叶子节点l表示[ a[l],a[l+1] )。答案就是每个点最后的值乘上这个点所代表的区间。

Icefox的博客 699

放弃FFT全频计算!在STM32F407上用DFT单点计算提速50%的优化技巧

本文详细介绍了在STM32F407上通过DFT单点计算实现比FFT快50%的优化技巧,特别适用于生物阻抗分析、振动监测等只需关注单一频点的嵌入式场景。通过预计算相位角、查表法和混合精度计算等策略,显著提升计算效率和内存利用率,同时保持高精度。

weixin_28738397的博客 191

新手工程师必看:搞定EMI传导干扰,从理解差模和共模开始(附实战案例)

本文深入解析EMI传导干扰中的差模与共模问题,为新手工程师提供从诊断到治理的完整方法论。通过实战案例展示如何通过频谱分析、近场探头扫描等技术精准定位干扰源,并分享PCB布局、滤波器设计等系统级解决方案,帮助工程师高效解决传导干扰问题,提升EMC设计能力。

weixin_26757925的博客 470

BZOJ4636: 蒟蒻的数列(动态开节点线段树)

题意 题目链接 Sol 直接上动态开节点线段树 因为只有一次询问,所以中途不需要下传标记 #include<bits/stdc++.h> #define LL long long using namespace std; const int MAXN = 8e6 + 10, INF = 1e9 + 10; template <typename A, typename B&gt...

weixin_30394633的博客 194

rk3576 点亮 LCD(mipi)

瑞芯微 RK3576 是一款面向中高端 AIoT 市场的 SoC,其 MIPI DSI (Display Serial Interface) 接口在性能和灵活性上相比前代(如 RK3399/RK3568)有显著提升,特别是在物理层协议的支持上更加现代化。相比RK3399 RK3568的mipi 接口少了 8lane,但是RK3576 MIPI DSI 增加更低功耗的 C-PHY。

weixin_35723192的博客 363

【bzoj 4636】蒟蒻的数列(动态开点线段树)

传送门biu~ 在线段树上打修改标记,如果两个标记在同一条线段上显然保留最大的那个标记。最后dfs一遍求和。在dfs时,如果线段树上的某一条线段没被创建过,那么一定不会有这条线段的子线段被打过标记。此时返回这条线段被标记过的最大值乘这条线段的长度。 #include using namespace std; int n; long long ans; struct Node{ No

zP1nG 868

Linux 下安装 openjdk 17【详细步骤】

JDK17,安装教程。

甘蓝的专栏 7503

YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络

本文记录的是利用颈部结构优化YOLOv11的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 3005

蒟蒻分块

蒟蒻在刘巨佬的强烈安利下,终于学习了最弱版本的分块。 这个算法比我想的要暴力很多啊。 所谓分块,就是把一串要处理的数列分成一块一块的。 然后区间处理的时候,范围大于一个块的就区间修改整体修改,否则就暴力遍历。 也就是说每次修改的部分实际上是 左边-块-块-块……块-块-块-右边。左边右边暴力遍历。 分块是一个很宏远的算法,以至于它没有太多基本套路。 不过如何分块是我们要说一下的。这关乎...

gigo_64 sink in my world 237

基于Python的Steam游戏评论与销量数据爬取及预测分析

随着数字游戏市场的蓬勃发展,Steam作为全球最大的数字游戏分发平台,积累了海量的游戏数据与玩家行为数据。本文旨在通过Python网络爬虫技术,采集Steam平台的游戏基本信息、玩家评论数据及销量相关信息,为后续的游戏评论情感分析与销量预测模型构建提供数据支持。本文将详细介绍使用requestsselenium等库实现Steam数据爬取的全过程,并提供完整的代码实现与数据处理方法。关键词:Steam;Python爬虫;数据采集;评论分析;销量预测。

2201_76125261的博客 854

【BZOJ4636】蒟蒻的数列 STL

【BZOJ4636】蒟蒻的数列 Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和。他还要玩其他游戏,所以这个问题留给你解决。 Input 第一行一个整数N,然后有N行,每行三个正...

aodanchui1057的博客 274

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

BZOJ_4636_蒟蒻的数列_线段树+动态开点

BZOJ_4636_蒟蒻的数列_线段树+动态开点 Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和。他还要玩其他游戏,所以这个问题留给你解决。 Input 第一行一个整数N,然后...

162

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

BZOJ 4636 蒟蒻的数列

4636: 蒟蒻的数列 Time Limit:30 SecMemory Limit:256 MBSubmit:618Solved:271[Submit][Status][Discuss] Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个...

191

IDEA的使用指南

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

[bzoj4636]蒟蒻的数列_线段树

蒟蒻的数列 bzoj-4636 题目大意:给定一个序列,初始均为0。n次操作:每次讲一段区间中小于k的数都变成k。操作的最后询问全局和。 注释:$1\le n\le 4\cdot 10^4$。 想法:那个操作就是一个不好好说话的操作,说白了就是对区间的每一个数取max 然后我们对于那个序列建立分治线段树。每个操作我都把它挂在对应的log的点上。 n个操作都执行完了之后我们从...

dianan0938的博客 337

【bzoj4636】 蒟蒻的数列 [线段树 动态开点]

bzoj4636 蒟蒻的数列 bzoj4636 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知道N次操作后数列中所有元素的和。 第一行一个整数N,然后有N行,每行三个正整数a、b、k。 N<=40000 , a、b、k<=10^9 一道模板? ==动态开点 然后维护标记 所有操作完之后这段区间内所有数肯定都...

weixin_30338461的博客 197

【bzoj4636】【蒟蒻的数列】【线段树】

Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和。他还要玩其他游戏,所以这个问题留给你解决。 Input 第一行一个整数N,然后有N行,每行三个正整数a、b、k。 N O

sunshinezff的专栏 1390

BZOJ4636 蒟蒻的数列 链表

题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和。他还要玩其他游戏,所以这个问题留给你解决。 INPUT: 第一行一个整数N,然后有N行,每行三个正整数a、b、k。 N OUTPUT: 一个数,数列中所有元素的和   容易发现各操作之间无顺序性,因此将

リーインカーネイション 558

BZOJ4636 蒟蒻的数列

水题,造个线段树,把标记打线段树上,然后dfs一遍就行了 a可能等于b,判掉就好 #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MA

neither_nor 1150

【BZOJ 4636】蒟蒻的数列

http://www.lydsy.com/JudgeOnline/problem.php?id=4636 DCrusher贡献的题目 看了他的博客,有两种做法,动态开点线段树和离线操作离散化区间线段树,都是标记永久化,最后统一下放标记算出答案。 动态开点线段树速度更快,但是今天李佳蔚讲了stl的用法,包括用unique和lower_bound离散化,所以这道题就用离散化写了_(:з...

as2886089的博客 172

BZOJ 4636: 蒟蒻的数列 分块

4636: 蒟蒻的数列 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4636 Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和。他还要玩其他游戏,所以...

weixin_30647065的博客 118

【bzoj4636】蒟蒻的数列

由于数据范围过大,直接线段树会炸,离散化或者动态开点都行。 打个标记在树上,最后把树dfs一边算一下即可。 1 #include<bits/stdc++.h> 2 #define N 10000010 3 #define inf 1000000000 4 using namespace std; 5 typedef long long ll; 6...

di679520024669的专栏 206

【BZOJ】4636: 蒟蒻的数列

4636: 蒟蒻的数列 Time Limit:30 SecMemory Limit:256 MBSubmit:145Solved:71[Submit][Status][Discuss] Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比...

weixin_30768175的博客 175

BZOJ 4636: 蒟蒻的数列

Description蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和。他还要玩其他游戏,所以这个问题留给你解决。Input第一行一个整数N,然后有N行,每行三个正整数a、b、k。 N<=40000 , a、b、k<=10^9Out

ypxrain的博客 548
上一篇: CodeForces 472 D ,E,F (MST,构造,线性代数)(待补)
下一篇: Codeforces Round #312 (Div. 2) E. A Simple Task 线段树(未敲)
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值