【BZOJ3262】陌上花开

CDQ分治模板

注意三元组完全相等的情况

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=100010,K=200010;
 4 int n,k,cnt[N],ans[N];
 5 struct Node{
 6     int a,b,c,id;
 7     bool operator<(const Node& k)const{
 8         if(b==k.b&&c==k.c) return a<=k.a;
 9         if(b==k.b) return c<=k.c;
10         return b<=k.b;
11     }
12 }node[N],temp[N];
13 int cmp(const Node& x,const Node& y){
14     if(x.a==y.a&&x.b==y.b) return x.c<y.c;
15     if(x.a==y.a) return x.b<y.b;
16     return x.a<y.a;
17 }
18 inline int lowbit(int k){return k&(-k);}
19 int tree[K],vis[K],timer;
20 inline void add(int pos,int x){
21     while(pos<=k){
22         if(vis[pos]!=timer) vis[pos]=timer,tree[pos]=0;
23         tree[pos]+=x,pos+=lowbit(pos);
24     }
25     return;
26 }
27 inline int que(int pos){
28     int res=0;
29     while(pos){
30         if(vis[pos]!=timer) vis[pos]=timer,tree[pos]=0;
31         res+=tree[pos],pos-=lowbit(pos);
32     }
33     return res;
34 }
35 void cdq(int l,int r){
36     if(l>=r) return;
37     int mid=(l+r)>>1;
38     cdq(l,mid);cdq(mid+1,r);
39     timer++;
40     int pi=l,pj=mid+1,x=l,pp;
41     while(pi<=mid&&pj<=r){
42         if(node[pi]<node[pj]){
43             add(node[pi].c,1);
44             temp[x++]=node[pi++];
45         }else{
46             ans[node[pj].id]+=que(node[pj].c);
47             pp=pi-1;
48             while(pp>=l&&node[pp].a==node[pj].a&&node[pp].b==node[pj].b&&node[pp].c==node[pj].c) ans[node[pp--].id]++;
49             temp[x++]=node[pj++];
50         }
51     }
52     while(pi<=mid) temp[x++]=node[pi++];
53     while(pj<=r){
54         ans[node[pj].id]+=que(node[pj].c);
55         pp=mid;
56         while(pp>=l&&node[pp].a==node[pj].a&&node[pp].b==node[pj].b&&node[pp].c==node[pj].c) ans[node[pp--].id]++;
57         temp[x++]=node[pj++];
58     }
59     for(int i=l;i<=r;i++) node[i]=temp[i];
60     return;
61 }
62 int main(){
63     int t1,t2,t3;
64     scanf("%d%d",&n,&k);
65     for(int i=1;i<=n;i++) scanf("%d%d%d",&t1,&t2,&t3),node[i]=(Node){t1,t2,t3,i};
66     sort(node+1,node+n+1,cmp);
67     cdq(1,n);
68     for(int i=1;i<=n;i++) cnt[ans[i]]++;
69     for(int i=0;i<n;i++) printf("%d\n",cnt[i]);
70     return 0;
71 }

 

转载于:https://www.cnblogs.com/mycups/p/8528069.html

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

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

相关文章

Spring+jpaNo transactional EntityManager available

2019独角兽企业重金招聘Python工程师标准>>> TransactionRequiredException: No transactional EntityManager availableEntityManager执行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事务if (transactionRequiringMethods.cont…

python项目构建_通过构建4个项目来学习Python网络

python项目构建The Python programming language is very capable when it comes to networking. Weve released a crash course on the freeCodeCamp.org YouTube channel that will help you learn the basics of networking in Python.当涉及到网络时&#xff0c;Python编程…

164. 最大间距

164. 最大间距 给定一个无序的数组&#xff0c;找出数组在排序之后&#xff0c;相邻元素之间最大的差值。 如果数组元素个数小于 2&#xff0c;则返回 0。 示例 1: 输入: [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差…

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 screen工具

通过后台服务的方式在远程主机上建立一个rsync的服务器&#xff0c;在服务器上配置好rsync的各种应用&#xff0c;然后将本机作为rsync的一个客户端连接远程的rsync服务器。在128主机上建立并配置rsync的配置文件/etc/rsyncd.conf,把你的rsyncd.conf编辑成以下内容&#xff1a;…

01_Struts2概述及环境搭建

1.Struts2概述&#xff1a;Struts2是一个用来开发MVC应用程序的框架。Struts2提供了web应用程序开发过程中一些常见问题的解决方案;对用户输入的数据进行合法性验证统一的布局可扩展性国际化和本地化支持Ajax表单的重复提交文件的上传和下载... ...2.Struts2相对于Struts1的优势…

315. 计算右侧小于当前元素的个数

315. 计算右侧小于当前元素的个数 给定一个整数数组 nums&#xff0c;按要求返回一个新数组 counts。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例&#xff1a; 输入&#xff1a;nums [5,2,6,1] 输出&#xff1a;[2,1…

IOS上传文件给java服务器,返回报错unacceptable context-type:text/plain

IOS上传文件给java服务器&#xff0c;返回报错unacceptable context-type&#xff1a;text/plain response返回类型不对 RequestMapping(value "uploadMultiFiles", method RequestMethod.POST, produces"application/json;charsetUTF-8") 使用produces指…

Python爬虫框架Scrapy学习笔记原创

字号scrapy [TOC] 开始 scrapy安装 首先手动安装windows版本的Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted pip install Twisted-18.4.0-cp36-cp36m-win_amd64.whl 安装scrapy pip install -i https://pypi.douban.com/simple/ scrapy windows系统额外需要…

600. 不含连续1的非负整数

600. 不含连续1的非负整数 给定一个正整数 n&#xff0c;找出小于或等于 n 的非负整数中&#xff0c;其二进制表示不包含 连续的1 的个数。 示例 1:输入: 5 输出: 5 解释: 下面是带有相应二进制表示的非负整数< 5&#xff1a; 0 : 0 1 : 1 2 : 10 3 : 11 4 : 100 5 : 101…

高可用性、负载均衡的mysql集群解决方案

2019独角兽企业重金招聘Python工程师标准>>> 一、为什么需要mysql集群&#xff1f; 一个庞大的分布式系统的性能瓶颈中&#xff0c;最脆弱的就是连接。连接有两个&#xff0c;一个是客户端与后端的连接&#xff0c;另一个是后端与数据库的连接。简单如图下两个蓝色框…

Django的model查询操作 与 查询性能优化

Django的model查询操作 与 查询性能优化 1 如何 在做ORM查询时 查看SQl的执行情况 (1) 最底层的 django.db.connection 在 django shell 中使用 python manage.py shell>>> from django.db import connection >>> Books.objects.all() >>> connect…

887. 鸡蛋掉落

887. 鸡蛋掉落 给你 k 枚相同的鸡蛋&#xff0c;并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f &#xff0c;满足 0 < f < n &#xff0c;任何从 高于 f 的楼层落下的鸡蛋都会碎&#xff0c;从 f 楼层或比它低的楼层落下的鸡蛋都不会破。 每次…

678. 有效的括号字符串

678. 有效的括号字符串 给定一个只包含三种字符的字符串&#xff1a;&#xff08; &#xff0c;&#xff09; 和 *&#xff0c;写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则&#xff1a; 任何左括号 ( 必须有相应的右括号 )。任何右括号 ) 必须有相应…

Faster R-CNN代码例子

主要参考文章&#xff1a;1&#xff0c;从编程实现角度学习Faster R-CNN&#xff08;附极简实现&#xff09; 经常是做到一半发现收敛情况不理想&#xff0c;然后又回去看看这篇文章的细节。 另外两篇&#xff1a; 2&#xff0c;Faster R-CNN学习总结 这个主要是解释了18,…

剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?

2019独角兽企业重金招聘Python工程师标准>>> 作者&#xff1a;freewind 比原项目仓库&#xff1a; Github地址&#xff1a;https://github.com/Bytom/bytom Gitee地址&#xff1a;https://gitee.com/BytomBlockchain/bytom 在前面一篇文章&#xff0c;我们粗略的研究…

面试题 17.24. 最大子矩阵

面试题 17.24. 最大子矩阵 给定一个正整数、负整数和 0 组成的 N M 矩阵&#xff0c;编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2]&#xff0c;其中 r1, c1 分别代表子矩阵左上角的行号和列号&#xff0c;r2, c2 分别代表右下角的行号和列号。若有多个…

js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题...

js模拟form表单提交数据, js模拟a标签点击跳转&#xff0c;避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码&#xff1a; /** * js模拟form表单提交 * param {object} 参数对象 * url 必填 提交地址 * methond 选填 默认post 提交方…

004. ES6之函数的扩展

2019独角兽企业重金招聘Python工程师标准>>> 1. 函数参数的默认值 ES6 允许为函数的参数设置默认值&#xff0c; function log(x, y World) {console.log(x, y); }log(Hello) // Hello World log(Hello, China) // Hello China log(Hello, ) // Hello// 1. 参数变量…

数据结构 | 链表:1097 删除重复元素

代码提交之后一直说段错误。我以为是数组开的不够大&#xff0c;但是随着数组一点一点开大&#xff0c;还是有一个case没有AC。最终我发现&#xff1a;是有个边界条件没有考虑到 void printList(const vector<Node>& a){if(!a.size()) return;FF(i,a.size()-1){print…

算法之美 : 位运算

上一小节我们用三道题了解一下面试过程中栈和队列的常见面试题。本小节笔者将通过几个 位运算 的题目来带大家熟悉下常用的位运算知识。 相比于栈和队列来讲&#xff0c;笔者自身认为位运算需要掌握的知识就要多一些&#xff0c;包括对于数字的二进制表示&#xff0c;二进制的反…