BZOJ2683: 简单题_「bzoj2683」简单题-程序员宅基地

技术标签: CDQ分治  

BZOJ2683传送门
BZOJ1176几乎一样啊
戳这里–>BZOJ1176

然后这个题 应 该? 要开long long 吧。
(日常打错变量名QAQ。。)

【代码】

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cmath>
#define N 200005
#define M 800005
#define INF 1<<29
using namespace std;
typedef long long ll;
int read()
{
    int x=0,f=1;char ch=getchar();
    while(!isdigit(ch)){
   if(ch=='-')f=-1;ch=getchar();}
    while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
    return x*f;
}

int n,tot,numa;
ll ans[N],szsz[500005];

class Query{
    public:
        int type,x,y,w,id;
    Query(){}
    Query(int tt,int xx,int yy,int ww,int ii){
        type=tt,x=xx,y=yy,w=ww,id=ii;
    }
}Q[M],tmp[M];

bool operator <(Query a,Query b){
    return a.x<b.x||(a.x==b.x&&a.type<b.type);
}

int lowbit(int x){
   return x&-x;}

void Sum_Up(int x,int y){
    for(int i=x;i<=n;i+=lowbit(i)) szsz[i]+=y;
}

ll query(int x){
    ll rtn=0;
    for(int i=x;i;i-=lowbit(i)) rtn+=szsz[i];
    return rtn;
}

void Clear(int x){
    for(int i=x;i<=n&&szsz[i];i+=lowbit(i)) szsz[i]=0;
}

void CDQ(int l,int r)
{
    if(l==r) return;
    int mid=l+r>>1;CDQ(l,mid);CDQ(mid+1,r);
    int p=l,q=mid+1,o=0;
    while(p<=mid&&q<=r){
        if(Q[p]<Q[q]) {
            if(Q[p].type&1) Sum_Up(Q[p].y,Q[p].w);
            tmp[o++]=Q[p++];
        }
        else {
            if(Q[q].type==2) ans[Q[q].id]+=query(Q[q].y)*Q[q].w;
            tmp[o++]=Q[q++];
        }
    }
    while(p<=mid) tmp[o++]=Q[p++];
    while(q<=r) {
        if(Q[q].type==2) ans[Q[q].id]+=query(Q[q].y)*Q[q].w;
        tmp[o++]=Q[q++];
    }
    for(int i=0;i<o;i++) Clear(tmp[i].y),Q[i+l]=tmp[i];
}

int main()
{
    n=read();
    while(1)
    {
        static int tp,x,y,xx,yy;
        tp=read();if(tp==3) break;
        x=read(),y=read(),xx=read();
        if(tp&1) Q[++tot]=Query(tp,x,y,xx,0);
        else {
            yy=read();numa++;
            Q[++tot]=Query(tp,x-1,y-1,1,numa);Q[++tot]=Query(tp,x-1,yy,-1,numa);
            Q[++tot]=Query(tp,xx,y-1,-1,numa);Q[++tot]=Query(tp,xx,yy,1,numa);
        }
    }
    CDQ(1,tot);
    for(int i=1;i<=numa;i++) printf("%lld\n",ans[i]);
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Ep1C_HeReT1c/article/details/72657556

智能推荐

ceph安装配置文档(centos6.6)-程序员宅基地

文章浏览阅读877次。Ceph安装部署文档目录一:简介... 1二:部署环境介绍... 1三:集群配置准备工作... 2四:安装ceph软件包... 6五:安装ceph对象网关... 9六、搭建ceph集群... 106.1、配置mon节点... 106.2:添加osd节点... 136.2.1、添加第一块osd节点... 136.3:添加元数据服务器... 176.3.1、添加第一个元数据服务器... 17七:安装c..._ceph安装配置文档

Node.js日记:第一个程序Hello World-程序员宅基地

文章浏览阅读122次。JavaScript 代码运行环境JavaScript 的运行不像 C 语言等其他编译型语言编译后直接在操作系统上运行,因为它是脚本语言,运行时必须要借助引擎(解释器)来运行,所以它可以在封装了引擎的环境下运行。封装了 JavaScript 引擎的环境可以分为两类:一类是浏览器环境;一类是非浏览器环境,比如 Node.js。使用浏览器运行 JavaScript 代码:...

Python安装包,官网下载太慢解决方法:淘宝国内镜像_python淘宝镜像_Python自动化办公社区的博客-程序员宅基地

文章浏览阅读6.6k次,点赞3次,收藏8次。下载传送门????https://npm.taobao.org/mirrors/python/_python淘宝镜像

arm上ldrex和strexeq指令用来尝试获取独占内存权限和设置在独占权限时回写-程序员宅基地

文章浏览阅读996次。【duan注】关于LDREX 和 STREX这两对指令的具体使用方法,及其作用(独占访问存储器),请查看 DUI0204IC_rvct_assembler_guide.pdf 手册的148页。__raw_spin_lock在ARM处理器上的实现/******include/asm-arm/spinlock_types.h***/ typedef struct { vol

ManagementFactory打印应用线程,内存和GC等信息_managementfactory 堆外内存_码上得天下的博客-程序员宅基地

文章浏览阅读544次。ManagementFactory是一个为我们提供各种获取JVM信息的工厂类,使用ManagementFactory可以获取大量的运行时JVM信息,比如JVM堆的使用情况,以及GC情况,线程信息等,通过这些数据项我们可以了解正在运行的JVM的情况,以便我们可以做出相应的调整。本文将基于ManagementFactory,介绍如何通过ManagementFactory获取一些运行时的JVM信息,下面首先展示了ManagementFactory的类图,可以看出它提供了大量的工厂方法,使得我们可以通过调用这些方法_managementfactory 堆外内存

SD卡及接口设计基础_sdr50_MR.STRAW的博客-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏11次。要了解SD卡的设计规范,咱们必须从SD卡的分类讲起。有两种分类方式。一种是根据卡容量来分类。分为标准卡(SDSC)、高容量卡(SDHC)、扩展容量卡(SDXC)。SDSC不超过2GB,支持所有的SD协议。SDHC不超过32GB,但大于2GB,知识SD2.0协议。SDXC不超过2TB但大于32GB,支持SD3.0协议。另一种根据卡的速率来分类,如SDR104,即支持最大传输速率为104MB/S,时钟频率为208MHz,供电1.8V。SDR50、SDR25、SDR12类别以上,不再赘述。DDR50与SDR50相_sdr50

随便推点

根据输入创建得到一棵二叉树或者单链表_输入数值序列建立二叉链表。-程序员宅基地

文章浏览阅读957次。python创建链表class SingleNode(object): # 默认是object,下面的类也同理,可使用class SingleNode: def __init__(self,value): self.val=value self.next=None# 创建单链表class LinkedList(object): def _..._输入数值序列建立二叉链表。

MySQL云数据库服务的架构探索-程序员宅基地

文章浏览阅读967次。MySQL作为一种低成本、高性能、可靠性良好而且开源的数据库产品,在互联网企业中应用非常广泛。例如,淘宝网就有数千台MySQL服务器。虽然近两年来NoSQL的发展很快,新产品层出不穷,但在业务中应用NoSQL对开发者来说要求比较高,而MySQL拥有成熟的中间件、运维工具, 已经形成一个良性的生态圈。因此,在现阶段的应用中仍然以MySQL为主,NoSQL为辅。在过去一年里,我们在MySQL托管平

通过JAXB完成Java对象与XML之间的转换_jaxb转换xml如果报文件提前结束-程序员宅基地

文章浏览阅读204次。Java对象转换XML的过程叫marshal。XML转换到Java对象的过程叫unmarshal。一、Java对象转化为XMLpackage com.gstarcad.fei.xml.vo;/** * @Title: ${file_name} * @Package ${package_name} * @Description: * @author fengzf fengzf@gsta..._jaxb转换xml如果报文件提前结束

骨牌覆盖(51Nod-1031)-程序员宅基地

文章浏览阅读442次。题目在2*N的一个长方形方格中,用一个1*2的骨牌排满方格。问有多少种不同的排列方法。例如:2 * 3的方格,共有3种不同的排法。(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果)输入输入N(N <= 1000)输出输出数量 Mod 10^9 + 7输入样例3输出样例3思路:具体思路见骨牌铺方格(HDU-2046),注意取模...

2018百度金融技术部机器学习工程师提前批面试-程序员宅基地

文章浏览阅读607次。一面: 讲SVM模型(从线性分类到近似线性分类再到线性不可分) 其中问了松弛变量的作用,常用的核函数讲一下GMM模型(EM算法) 生成模型,判别模型适用场景,优缺点Precision,Recall计算方法 讲朴素贝叶斯二叉树后序遍历 找两份日志文件中的重复出现的ID(海量数据处理) 找出一份日志中出现次数最多的10个ID 子矩阵的最大和/最大子数组和二面: 讲KMeans 其中问了

5. ESP8266固件的编译(RTOS SDK固件)_esp8266 rtos sdk 编译-程序员宅基地

文章浏览阅读5.5k次。ESP8266_RTOS_SDK 编译_esp8266 rtos sdk 编译