BZOJ2683: 简单题_「bzoj2683」简单题_CR1SceNT的博客-程序员秘密

技术标签: 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

智能推荐

matlab中的round、ceil、floor、fix函数_round(2.7)的值是多少_SnailTyan的博客-程序员秘密

在matlab中,round、ceil、floor、fix都是取整函数函数,round函数是个四舍五入函数,例:round(2.7)=3; round(1.2)=1; round(-1.3)=-1ceil函数是大于X的最大整数,例:ceil(2.3)=3;ceil(-2.3)=-2floor函数是不超过X的最大整数,例:floor(2.3)=2; floor(-2.3)=-3fix

16_java8的其他新特性_haitaoss的博客-程序员秘密

Java 8新特性简介新特性简介Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以 来最具革命性的版本。Java 8为Java语言、编译器、类库、开发 工具与JVM带来了大量新特性。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-itrO2xSg-1600041602719)(/Users/haitao/Pictures/TyporaPic/16_java

HYSBZ - 2038 小Z的袜子(hose) (莫队入门)_明日可7的博客-程序员秘密

题目:作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。你的任务便是告诉小Z,他有多大的概率抽到两只...

《电子元器件的可靠性》——习题_weixin_34352449的博客-程序员秘密

本节书摘来自华章社区《电子元器件的可靠性》一书中的习题,作者王守国,更多章节内容可以访问云栖社区“华章社区”公众号查看习题1.对飞机上电子设备用的某种电子元器件进行现场无替换试验,其元件数n=39,记录下9次失效时间分别为:423,1090,2386,3029,3652,3925,8967,10957,11358小时,求该电子元器件在飞机上使用的平均寿...

攻防世界--What-is-this_攻防世界 what-is-this_Sylvia_j的博客-程序员秘密

What-is-this题目来源: su-ctf-quals-2014题目描述:找到FLAG附件解压后无后缀,用winhex打开,右边显示“pic2.jpg”再解压一次,得到两张一样的jpg图片用stegsolve先打开pic1.jpg,再点击“Analyse --&gt; Image Combiner”选择第二张图片pic2.jpg得到flagflag为:AZADI ...

maven中使用spring提示applicationContext.xml找不到_AlstonWilliams的博客-程序员秘密

使用maven创建web工程,将Spring配置文件applicationContext.xml放在src/resource下,用eclipse编译时提示class path resource [applicationContext.xml] cannot be opened because it does not exist错误。但是用mvn clean package命令编译时成功的。web.

随便推点

java-链表-练习:_程序猿小飞的博客-程序员秘密

java-链表-练习:package com.etc.liebiao;/** * 链表的简单联系与理解 */public class LbMonkey { public int id ; // 编号 public String name; // 名字 public LbMonkey next; // 它表示后面的猴子 public LbMonkey(){} // ctrl + o public

HDU1874:畅通工程续(最短路Dijkstra(n^2+nlogn)+Floyd+SPFA(堆栈+队列))_hdu堆栈_键盘上的舞者的博客-程序员秘密

Problem Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。 Input本题目包含多组数据,请处理到文件结束。每组数据第一行包

spring boot不用parent引入,采用dependencyManagement引入后的坑_乔木剑衣的博客-程序员秘密

项目背景采用IDEA+Maven+Spring boot+Spring Cloud搭建了以微服务为框架的系统。问题描述由于各个子项目需要继承自己写的父pom,于是把原本spring boot的parent去掉,改为用dependencyManagement引入,代码如下://去掉原本的parent&amp;amp;amp;amp;lt;!--&amp;amp;amp;amp;lt;parent&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;grou

20201231-成信大-C语言程序设计-20201学期《C语言程序设计B》平时自主学习-跟踪调试题参考_风车车的大表哥的博客-程序员秘密

文章目录20201学期《C语言程序设计B》平时自主学习D13428.C对于跳转后的数组可见性的分析程序的出错点小题答题情况D13454.C程序内容逻辑出错位置:分析:题目参考解答D13455.C程序内容跟踪过程要点题目参考解答D13456.C程序内容本题特点跟踪过程要点题目参考解答最后的建议20201学期《C语言程序设计B》平时自主学习D13428.C题干:请单击此处下载文件D13428.C,然后对程序进行跟踪调试,要求不增加或删除行,测试时输入的数据为6 1 3 2 9 -222。程序的功能是:

终极mysql_best云的博客-程序员秘密

mysql修改linux的机器名字sudo vi /etc/hostname给linux命令提示起名字在配置文件 ~/.bashrc 或./profileexport PS1=‘(-_-)test:’数据1结构化数据Stu (id, name,age)2.半结构数据点击流stu.xml &lt;stus&gt; &lt;stu&gt; &lt;id&...

自定义数据跑GCN_自己数据写gcn_Mr_Ak的博客-程序员秘密

GCN 自定义数据集流程定义自己的图矩阵定义GCN模型设定特征矩阵 及 标签训练流程使用的是DGL框架为什么使用DGL 不使用pyG 因为DGL大图支持更好定义自己的图矩阵#An highlighted blockimport dglimport numpy as np# S D source destination 类型 list【int】def build_graph(S,D): # 另一个用于目标端点。 src = np.array(S) dst = n

推荐文章

热门文章

相关标签