【题解】文体陌上花开

全国人民谢罪了

陌上花开可缓缓归矣

\(cdq\)做的,待会发\(kd-tree\)

多维偏序如何做的本质是按照时间分治,时间在前面的对时间在后面的有影响,所以可以用树状数组统计答案。

和其他分治差不多,就是保证一维有序,从而为我们从中间分开分治提供可能。这类分治的一个基本原则就是尽量保证一定范围的有序以让我便于统计答案。因为有序为我们设计算法提供太多的可能!

解释一下我是什么意思,我对局部有序的理解就是可以保证一个范围\(S\)中的所有元素会比另一个范围\(C_US\)的任意元素都要小。这样就可以在第二维上进行排序,开花,这样我们保证小范围内的第二维有序之后,我们就可以基于时间对第三维设计算法了。

但是\(cdq​\)有个致命的地方,无法处理两个元素完全相等这种情况,我们可以使用类似离散化的思想,把所有相同的元素合并在一起。统计答案的时候另外设计算法。

待会加\(kd-tree​\)的

我咕了对不起我一个晚上学不会kd-treeQAQ

\(cdq\)一遍写过的我非常自豪,而且没看题解QAQ!!(你tm拿暴力拍了10000组还要怎么样)

现在我要向又短又快的代码看齐

#include<bits/stdc++.h>using namespace std;typedef long long ll;
#define DRP(t,a,b) for(register int t=(a),edd=(b);t>=edd;--t)
#define RP(t,a,b)  for(register int t=(a),edd=(b);t<=edd;++t)
#define ERP(t,a)   for(register int t=head[a];t;t=e[t].nx)
#define midd register int mid=(l+r)>>1
#define TMP template < class ccf >
#define lef l,mid
#define rgt mid+1,r
#define lb(x) ((x)&(-(x)))
#define pushup(pos) (seg[pos]=seg[pos<<1]+seg[pos<<1|1])
TMP inline ccf qr(ccf b){register char c=getchar();register int q=1;register ccf x=0;while(c<48||c>57)q=c==45?-1:q,c=getchar();while(c>=48&&c<=57)x=x*10+c-48,c=getchar();return q==-1?-x:x;}
TMP inline ccf Max(ccf a,ccf b){return a<b?b:a;}
TMP inline ccf Min(ccf a,ccf b){return a<b?a:b;}
TMP inline ccf Max(ccf a,ccf b,ccf c){return Max(a,Max(b,c));}
TMP inline ccf Min(ccf a,ccf b,ccf c){return Min(a,Min(b,c));}
TMP inline ccf READ(ccf* _arr,int _n){RP(t,1,_n)_arr[t]=qr((ccf)1);}
//----------------------template&IO---------------------------
const int maxn=1e5+15;
int seg[maxn<<1];
int buk[maxn];
struct NODE{int x,y,z,T,ape;inline bool operator < (NODE a)const{return x==a.x?(y==a.y?(z<a.z):(y<a.y)):(x<a.x);}inline bool operator ==(NODE a)const{return x==a.x and y==a.y and z==a.z;}inline void scan(){x=qr(1)+1;y=qr(1)+1;z=qr(1)+1;T=1;}
}oj[maxn],data[maxn],temp[maxn];
// move right 1 unit
int n,k,sz;
int ans[maxn];
int q1[maxn],q2[maxn],cnt;inline void add(int now,int v){++cnt;q1[cnt]=now;q2[cnt]=v;for(register int t=now;t<=k;t+=lb(t)) seg[t]+=v;
}
inline void rec(){RP(t,1,cnt) add(q1[t],-q2[t]);cnt=0;
}
inline int que(int now){register int ret=0;for(register int t=now;t;t-=lb(t)) ret+=seg[t];return ret;
}void cdq(int l,int r){midd;if(l==r){data[l].ape+=data[l].T-1;return;}cdq(lef);cdq(rgt);register int L=l,R=mid+1,K=l;while(L<=mid&&R<=r){if(data[L].y<=data[R].y){add(data[L].z,data[L].T);temp[K++]=data[L++];}else{data[R].ape+=que(data[R].z);temp[K++]=data[R++];}}while(L<=mid) add(data[L].z,data[L].T),temp[K++]=data[L++];while(R<=r) data[R].ape+=que(data[R].z),temp[K++]=data[R++];RP(t,l,r) data[t]=temp[t];rec();
}int main(){
#ifndef ONLINE_JUDGEfreopen("in.in","r",stdin);freopen("out.out","w",stdout);
#endifn=qr(1);k=qr(1)+1;RP(t,1,n) oj[t].scan();sort(oj+1,oj+n+1);for(register int t=1;t<=n;  ){data[++sz]=oj[t++];while(t<=n&&oj[t]==data[sz]) ++t,++data[sz].T;}cdq(1,sz);RP(t,1,sz) buk[data[t].ape]+=data[t].T;RP(t,0,n-1) printf("%d\n",buk[t]);return 0;
}

转载于:https://www.cnblogs.com/winlere/p/10490695.html

【题解】文体(划掉)陌上花开相关推荐

  1. 什么人不在生死簿_地府在孙悟空划掉生死簿以后,因为什么原因不组织重写?...

    展开全部 孙悟空从菩提祖师处学得长生不老术之后,32313133353236313431303231363533e4b893e5b19e31333436316238因变松树被师父撵回了花果山老家.在短 ...

  2. url没有参数名怎么直接带参数_用30行Python爬虫带你看PLMM(划掉,喵星人)

    偶尔写写爬虫也算是打磨无聊生活的一种方式了. 之前写了一个用100多行Python爬虫看世界的帖子,有兴趣的朋友可以看一下. 带你用100多行Python爬虫看看今天的世界(上) 带你用100多行Py ...

  3. 生成划掉的字_横向划掉字体 划掉字体生成器

    电脑屏幕字体横着排怎么消除? 1.计算机平板电脑上打印的字符是垂直排列的,因为所选字体是垂直的,即字体前面有@的中文字体.(下图所选字体为@宋体)2.只要您选择垂直排列的文本,然后从字体中选择不以@开 ...

  4. latex公式文字划掉的效果

    当我们想要强调某公式是错误的时候,可以用线划掉,latex可以使用宏包实现这个效果,使用方法如下: \usepackage{cancel} \cancel{公式内容}  或 \bcancel{公式内容 ...

  5. Android:开发中,代码被横线划掉是什么意思

    在学习[状态栏通知]时,遇到代码被横线划掉,这是怎么回事呢? 例如: package com.example.notification;import android.app.Activity; imp ...

  6. 2018浙大408考研经验(划掉)个人口胡 普通一本+二战(伪)+小跨吧大概

    文章目录 前言 初试+复试 初试: 英语 数学 政治 专业课 初试总结 复试 pat+机试 面试 选导师/实验室 总结 前言 我是个很懒的人,不怎么喜欢写博客,所以我简单的胡说八道几句吧,写的不好,拍 ...

  7. 生成划掉的字_哪种备忘录划删除线,能划掉文字在字中间划线的便签

    生活在信息爆炸的年代,手机备忘录便签已经是不可缺少的工具软件,把自己需要做的事情一项一项地列到备忘录上,然后完成一项划掉一项,这样做不仅不容易忘事,还可以提高工作效率,看着自己划掉的事情越来越多,会有 ...

  8. vue项目中实现价格被横线划掉,折扣价效果

    效果图 代码 横线划掉效果就是用到了css的一句代码:text-decoration: line-through; 其他颜色大小是自己改的. <p class="usa"&g ...

  9. 有些字划掉并不是删除线而是右斜线,在ReportMachine报表的实现

    最近项目中,因为有个字是删除的意思,但不像Word排版给设置删除线样式就可以达到的,而是要求从左上角划一直线穿过这个字到右下角.最开始想到用造字的办法,可是造字不仅麻烦,而且要为不同字体造字,并且,如 ...

最新文章

  1. 不断演进的 Chrome 安全标识
  2. IntelliJ IDEA中使用综合使用Maven和Struts2
  3. tableau实战系列(二十八)-以可视化的方式打开关联分析算法购物篮分析(Market Basket Analysis)
  4. Javadoc注释规范
  5. 展望数据中心市场未来十年发展趋势
  6. webview 修改html,使用自定义CSS在WebView中呈现HTML
  7. 链表基本功能:初始化、增、删、查、改
  8. c#给定编码中的字符无效_C#程序检查给定的字符串是否等于(==)运算符
  9. 服务器上有涉密文件,涉密文件保密管理规定
  10. spring mvc国际化_Spring MVC国际化(i18n)和本地化(L10n)示例
  11. nginx location总结
  12. Cdn英文的读音音标_教育 | 老司机请回答:孩子学英文自然拼读和中文拼音会不会混?...
  13. 查找——图文翔解RadixTree(基数树)
  14. 只要能言之有理,持之有据,则可立于讲台
  15. 树莓派 电脑 网线对联 桥接及ssh
  16. 福州三中 计算机竞赛,福建福州三中喜获信息学竞赛NOIP2020全省人数第1!总计35人获奖...
  17. 离谱的bug564v*/92ray
  18. 【C语言每日一练——第1练:字母大小写转换】
  19. c++primer读书笔记
  20. innodb的写缓存

热门文章

  1. 百度地图自定义吹出框
  2. 计算机蓝屏的解决方法,电脑开机蓝屏怎么解决?电脑蓝屏原因及解决方法
  3. 使用PHPExcel类库编写一个快捷的导出函数
  4. hdfs文件系统和linux文件系统,分布式文件系统HADOOP HDFS与传统文件系统LINUX FS的比较与分析...
  5. APP混合应用之web页面处理
  6. 用 CSS 实现图片的马赛克风格
  7. Android Label 标签
  8. 【codeforces 787C】Berzerk
  9. 微软新版Edge浏览器开发者检查工具(F12)中英文切换
  10. 智联招聘数据Hbase数据分析+可视化