bzoj3262
三维裸的做法是一维排序,剩下树套树,可我好像还没写过树套树
先说cdq分治吧,先对一维排序,相当于原来修改询问里的时间线
在这上面分治、划分,计算前半部分对后半部分的影响,显然可以按第二维的顺序维护树状数组
type node=record
a,b,c,s,p:longint;
end; var a,b,q:array[..] of node;
ans,c:array[..] of longint;
n,m,i,t,j:longint; procedure swap(var a,b:node);
var c:node;
begin
c:=a;
a:=b;
b:=c;
end; function cmp(a,b:node):boolean;
begin
if a.a<b.a then exit(true);
if a.a>b.a then exit(false);
if (a.b<b.b) or (a.b=b.b) and (a.c<b.c) then exit(true);
exit(false);
end; procedure sorta(l,r:longint);
var i,j:longint;
x:node;
begin
i:=l;
j:=r;
x:=a[(l+r) shr ];
repeat
while cmp(a[i],x) do inc(i);
while cmp(x,a[j]) do dec(j);
if not(i>j) then
begin
swap(a[i],a[j]);
inc(i);
dec(j);
end;
until i>j;
if l<j then sorta(l,j);
if i<r then sorta(i,r);
end; function lowbit(x:longint):longint;
begin
exit(x and (-x));
end; procedure add(x,w:longint);
begin
while x<=m do
begin
inc(c[x],w);
x:=x+lowbit(x);
end;
end; function ask(x:longint):longint;
begin
ask:=;
while x> do
begin
ask:=ask+c[x];
x:=x-lowbit(x);
end;
end; procedure cdq(l,r:longint);
var m,i,j,l1,l2:longint;
begin
if l=r then exit;
m:=(l+r) shr ;
cdq(l,m);
cdq(m+,r);
j:=l;
for i:=m+ to r do
begin
while (j<=m) and (b[j].b<=b[i].b) do
begin
add(b[j].c,b[j].p);
inc(j);
end;
inc(b[i].s,ask(b[i].c));
end;
for i:=l to j- do
add(b[i].c,-b[i].p);
l1:=l; l2:=m+;
for i:=l to r do
if ((l1<=m) and (b[l1].b<b[l2].b)) or (l2>r) then
begin
q[i]:=b[l1];
inc(l1);
end
else begin
q[i]:=b[l2];
inc(l2);
end;
for i:=l to r do
b[i]:=q[i];
end; begin
readln(n,m);
for i:= to n do
readln(a[i].a,a[i].b,a[i].c);
sorta(,n);
i:=;
while i<n do
begin
inc(i);
j:=i+;
while (a[j].a=a[i].a) and (a[j].b=a[i].b) and (a[j].c=a[i].c) do inc(j); //这步不能少,因为要保证后半部分序列对前半部分没有影响
inc(t);
b[t]:=a[i];
b[t].p:=j-i;
i:=j-;
end;
cdq(,t);
for i:= to t do
inc(ans[b[i].s+b[i].p-],b[i].p);
for i:= to n- do
writeln(ans[i]);
end.
bzoj3262的更多相关文章
- [BZOJ3262]陌上花开
[BZOJ3262]陌上花开 试题描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一 ...
- 【BZOJ3262】陌上花开(CDQ分治)
[BZOJ3262]陌上花开(CDQ分治) 题解 原来放过这道题目,题面在这里 树套树的做法也请点上面 这回用CDQ分治做的 其实也很简单, 对于第一维排序之后 显然只有前面的对后面的才会产生贡献 那 ...
- 【BZOJ3262】陌上花开(树套树)
[BZOJ3262]陌上花开(树套树) 题面 对于权限题,我这种苦逼肯定是从别的OJ上搞的对不对??? CJOJ 洛谷 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味 ...
- BZOJ3262/洛谷P3810 陌上花开 分治 三维偏序 树状数组
原文链接http://www.cnblogs.com/zhouzhendong/p/8672131.html 题目传送门 - BZOJ3262 题目传送门 - 洛谷P3810 题意 有$n$个元素,第 ...
- 【BZOJ3262】陌上花开 cdq分治
[BZOJ3262]陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义 ...
- bzoj3262陌上花开 cdq分治入门题
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- bzoj3262 陌上花开 cdq+树状数组
[bzoj3262]陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义 ...
- 树套树【bzoj3262】陌上花开
/* [bzoj3262]陌上花开 2014年6月19日1,2430 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的 ...
- 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)
3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1439 Solved: 648[Submit][Status][Discuss ...
- bzoj3262: 陌上花开(树套树)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
随机推荐
- LA 2965 Jurassic Remains (中途相遇法)
Jurassic Remains Paleontologists in Siberia have recently found a number of fragments of Jurassic pe ...
- KMP入门(匹配)
Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M ...
- Build Error 6041: Internal build error
Note: Following content is reprinted from the Original article Flexera : Build Error 6041. Only for ...
- 转载:一句代码改变Swing难看的字体
Swing 皮肤的一个键值:swing.boldMetal 默认为 true因此造成了默认字体极度难看: 其实一句代码就能解决问题:UIManager.put("swing.boldMeta ...
- print neatly 整齐打印 算法导论
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098562.html 题目链接:print neatly 整齐打印 算法导论 考虑在一个打印 ...
- prefix和unprefix
exports._esModule = true; exports.default = { prefix: function prefix(prop){ if (prop[0] === '-'){ v ...
- Javascript常见全局函数
ØdecodeURI() 解码某个编码的 URI ØencodeURI() 把字符串编码为 URI ØdecodeURIComponent() 解码一个编码的 URI 组件 ØencodeURIC ...
- python--multiprocessing多进程总结
由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiproces ...
- Web API 返回json文件的2中不用方式
//方法一:直接返回序列化后的json文件 public static HttpResponseMessage ConvertToJson(this Object obj) { String str= ...
- 2014年辛星完全解读Javascript第一节
***************概述*************** 1.Javascript是一种原型化继承的基于对象的动态类型的脚本语言,它区分大小写,主要运行在客户端,用户即使响应用户的操作并进行数 ...