BZOJ 1176: [Balkan2007]Mokia

一道CDQ分治的模板题,然而我De了一上午Bug......

按时间分成左右两半,按x坐标排序然后把y坐标丢到树状数组里,扫一遍遇到左边的就add,遇到右边的query

几个弱智出了bug的点,

一是先分了左右两半再排序,保证的是这次的左右是上次没有计算过的贡献,

for(int i=l;i<=r;i++) qs[i].k=(i>mid);sort(qs+l,qs+r+1,cmp2);

然后时间的先后是因为一开始就是按时间排好序的已经保证了。

二是矩阵的一个经典的套路就是拆成四部分差分查询。

三是很智障的,树状数组要注意y==0的情况

四是比较重要的,比较的时候条件要加充分,之前写陌上花开也出现了这个问题,一维还是两维相同就不管了,会爆炸。。。一定要考虑清楚所有会影响的维,都要加入排序条件中

bool cmp2(const node&a,const node&b) {return a.x<b.x||(a.x==b.x&&(a.y<b.y||(a.y==b.y&&bo[a.id]<bo[b.id])));
}

还有,数组大小要开够,在下RE好像大半都是数组问题。。

//Twenty
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#define mid ((l+r)>>1)
using namespace std;
const int maxn=200000+299;
const int maxw=2000000+29;
int tot,s,w,opt,x,y,x2,y2,a,sg[maxw],bo[maxn],ans,cnt;
struct node{int x,y,v,id,sum,k;node(){sum=0;};node(int x,int y,int v,int id):x(x),y(y),v(v),id(id){sum=0;}
}qs[maxn];
bool cmp1(const node&a,const node&b) {return a.id<b.id;
}
bool cmp2(const node&a,const node&b) {return a.x<b.x||(a.x==b.x&&(a.y<b.y||(a.y==b.y&&bo[a.id]<bo[b.id])));//!!!!!!!
}
void add(int x,int v) {for(int i=x;i<=w;i+=(i&(-i))) sg[i]+=v; 
}
int qry(int x) {int res=0;for(int i=x;i>0;i-=(i&(-i))) res+=sg[i];return res;
}
void solve(int l,int r) {if(l==r) return ;solve(l,mid); solve(mid+1,r);for(int i=l;i<=r;i++) qs[i].k=(i>mid);sort(qs+l,qs+r+1,cmp2);for(int i=l;i<=r;i++) {if(bo[qs[i].id]&&qs[i].k) {if(qs[i].y) qs[i].sum+=qry(qs[i].y);}else if(!bo[qs[i].id]&&!qs[i].k) {if(qs[i].y ) add(qs[i].y,qs[i].v);}}for(int i=l;i<=r;i++) if(!bo[qs[i].id]&&!qs[i].k) {if(qs[i].y) add(qs[i].y,-qs[i].v); }
}
int main()
{scanf("%d%d",&s,&w);for(;;) {scanf("%d",&opt); if(opt==3) break;if(opt==1) {scanf("%d%d%d",&x,&y,&a);qs[++tot]=node(x,y,a,tot);}else {scanf("%d%d%d%d",&x,&y,&x2,&y2);qs[++tot]=node(x-1,y-1,1,tot);qs[++tot]=node(x-1,y2,-1,tot-1);qs[++tot]=node(x2,y-1,-1,tot-2);qs[++tot]=node(x2,y2,1,tot-3);bo[tot-3]=1;//是询问 
        }}solve(1,tot);sort(qs+1,qs+tot+1,cmp1);for(int i=1;i<=tot;i++) if(bo[qs[i].id]){cnt++;ans+=qs[i].sum*qs[i].v;if(cnt==4) {printf("%d\n",ans);ans=0,cnt=0;}  }return 0;
}
1176: [Balkan2007]Mokia

 吐槽一句为什么都是权限题呀。。

转载于:https://www.cnblogs.com/Achenchen/p/7477567.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解InnoDB(1)—行的存储结构

1.InnoDB页的简介 页&#xff08;Page&#xff09;是 Innodb 存储引擎用于管理数据的最小磁盘单位。常见的页类型有数据页、Undo 页、系统页、事务数据页等 2.InnoDB行的存储格式 我们插入MySQL的记录在InnoDB中可能以4中行格式存储&#xff0c;分别是Compact、Redundant、D…

boltzmann_推荐系统系列第7部分:用于协同过滤的Boltzmann机器的3个变体

boltzmannRecSys系列 (RecSys Series) Update: This article is part of a series where I explore recommendation systems in academia and industry. Check out the full series: Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, and Part 7.更新&#xff1a; 本文是我探索…

深入理解InnoDB(2)—页的存储结构

1. 记录头信息 上一篇博客说到每行记录都会有记录头信息&#xff0c;用来记录每一行的一些属性 Compact行记录的记录头信息为例 1.1 delete_mask 这个属性标记着当前记录是否被删除&#xff0c;占用1个二进制位&#xff0c;值为0的时候代表记录并没有被删除&#xff0c;为1的…

爬虫神经网络_股市筛选和分析:在投资中使用网络爬虫,神经网络和回归分析...

爬虫神经网络与AI交易 (Trading with AI) Stock markets tend to react very quickly to a variety of factors such as news, earnings reports, etc. While it may be prudent to develop trading strategies based on fundamental data, the rapid changes in the stock mar…

深入理解InnoDB(3)—索引的存储结构

1. 索引的各种存储结构及其优缺点 1.1 二叉树 优点&#xff1a; 二叉树是一种比顺序结构更加高效地查找目标元素的结构&#xff0c;它可以从第一个父节点开始跟目标元素值比较&#xff0c;如果相等则返回当前节点&#xff0c;如果目标元素值小于当前节点&#xff0c;则移动到左…

深入理解InnoDB(4)—索引使用

1. 索引的代价 在了解索引的代价之前&#xff0c;需要再次回顾一下索引的数据结构B树 如上图&#xff0c;是一颗b树&#xff0c;关于b树的定义可以参见B树&#xff0c;这里只说一些重点&#xff0c;浅蓝色的块我们称之为一个磁盘块&#xff0c;可以看到每个磁盘块包含几个数据…

双城记s001_双城记! (使用数据讲故事)

双城记s001Keywords: Data science, Machine learning, Python, Web scraping, Foursquare关键字&#xff1a;数据科学&#xff0c;机器学习&#xff0c;Python&#xff0c;Web抓取&#xff0c;Foursquare https://br.pinterest.com/pin/92816442292506979/https://br.pintere…

web前端面试总结

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a;前端的东西特别多&#xff0c;面试的时候我们如何从容应对&#xff0c;作为一个老兵&#xff0c;我在这里分享几点我的经验。 一、javascript 基础(es5) 1、原型&#xff1a;这里可以谈很多&#xff0c;…

tableau破解方法_使用Tableau浏览Netflix内容的简单方法

tableau破解方法Are you struggling to perform EDA with R and Python?? Here is an easy way to do exploratory data analysis using Tableau.您是否正在努力使用R和Python执行EDA&#xff1f; 这是使用Tableau进行探索性数据分析的简单方法。 Lets Dive in to know the …

六周第三次课

2019独角兽企业重金招聘Python工程师标准>>> 六周第三次课 9.6/9.7 awk awk也是流式编辑器&#xff0c;针对文档中的行来操作&#xff0c;一行一行地执行。 awk比sed更强大的功能是它支持了分段。 -F选项的作用是指定分隔符&#xff0c;如果不加-F选项&#xff0c;…

macaca web(4)

米西米西滴&#xff0c;吃过中午饭来一篇&#xff0c;话说&#xff0c;上回书说道macaca 测试web&#xff08;3&#xff09;&#xff0c;参数驱动来搞&#xff0c;那么有小伙本又来给雷子来需求&#xff0c; 登录模块能不能给我给重新封装一下吗&#xff0c; 我说干嘛封装&…

rfm模型分析与客户细分_如何使用基于RFM的细分来确定最佳客户

rfm模型分析与客户细分With some free time at hand in the midst of COVID-19 pandemic, I decided to do pro bono consulting work. I was helping a few e-commerce companies with analyzing their customer data. A common theme I encountered during this work was tha…

数据仓库项目分析_数据分析项目:仓库库存

数据仓库项目分析The code for this project can be found at my GitHub.该项目的代码可以在我的GitHub上找到 。 介绍 (Introduction) The goal of this project was to analyse historic stock/inventory data to decide how much stock of each item a retailer should hol…

web前端效率提升之浏览器与本地文件的映射-遁地龙卷风

1.chrome浏览器&#xff0c;机制是拦截url&#xff0c;      1.在浏览器Element中调节的css样式可以直接同步到本地文件&#xff0c;反之亦然&#xff0c;浏览器会重新加载css&#xff0c;省去刷新   2.在source面板下对js的编辑可以同步到本地文件&#xff0c;反之亦然…

归因分析_归因分析:如何衡量影响? (第2部分,共2部分)

归因分析By Lisa Cohen, Ryan Bouchard, Jane Huang, Daniel Yehdego and Siddharth Kumar由 丽莎科恩 &#xff0c; 瑞安布沙尔 &#xff0c; 黄美珍 &#xff0c; 丹尼尔Yehdego 和 亚洲时报Siddharth库马尔 介绍 (Introduction) This is our second article in a series wh…

linux与磁盘相关的内容

本节所讲内容1.认识SAS-SATA-SSD-SCSI-IDE硬盘2.使用fdisk对磁盘进行操作&#xff0c;分区&#xff0c;格式化3.开机自动挂载分区4.使用parted操作大于等于4T硬盘5.扩展服务器swap内存空间 MBR(Master Boot Record)主引导记录&#xff0c;也就是现有的硬盘分区模式。MBR分区的标…

页面布局

页面布局两大类&#xff1a;   主站&#xff1a; 1 <div classpg-header> 2 <div stylewidth:980px;margin:0 auto;> 3 内容自动居中 4 </div> 5 <div classpg-content></div> 6 <div classpg-footer></div&…

sonar:默认的扫描规则

https://blog.csdn.net/liumiaocn/article/details/83550309 https://note.youdao.com/ynoteshare1/index.html?id3c1e6a08a21ada4dfe0123281637e299&typenote https://blog.csdn.net/liumiaocn/article/details/83550309 文本版&#xff1a; soanr规则java版 …

多变量线性相关分析_如何测量多个变量之间的“非线性相关性”?

多变量线性相关分析现实世界中的数据科学 (Data Science in the Real World) This article aims to present two ways of calculating non linear correlation between any number of discrete variables. The objective for a data analysis project is twofold : on the one …

探索性数据分析(EDA):Python

什么是探索性数据分析(EDA)&#xff1f; (What is Exploratory Data Analysis(EDA)?) If we want to explain EDA in simple terms, it means trying to understand the given data much better, so that we can make some sense out of it.如果我们想用简单的术语来解释EDA&a…