传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4418

【题解】

被题目名称吓死系列。

用一棵线段树维护当前有哪些半径。

那么将扇形差分,每段空白区域相当于查询线段树内第K大。

权值线段树就行啦!

O(nlogn)

# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = 5e5 + ;
const int mod = 1e9+; # define RG register
# define ST static int n, m, K; struct pa {
int r, pos;
int f;
pa() {}
pa(int r, int pos, int f) : r(r), pos(pos), f(f) {}
friend bool operator <(pa a, pa b) {
return a.pos < b.pos;
}
}p[M]; int pn = ; namespace SMT {
int sz[M];
# define ls (x<<)
# define rs (x<<|)
inline void edt(int x, int l, int r, int pos, int del) {
if(l == r) {
sz[x] += del;
return ;
}
int mid = l+r>>;
if(pos <= mid) edt(ls, l, mid, pos, del);
else edt(rs, mid+, r, pos, del);
sz[x] = sz[ls] + sz[rs];
}
inline int query(int x, int l, int r, int rk) {
if(l == r) return l;
int mid = l+r>>;
if(sz[rs] < rk) return query(ls, l, mid, rk-sz[rs]);
else return query(rs, mid+, r, rk);
}
inline int query(int rk) {
if(sz[] < rk) return ;
else return query(, , 1e5, rk);
}
} int main() {
cin >> n >> m >> K;
for (int i=, r, a1, a2; i<=n; ++i) {
scanf("%d%d%d", &r, &a1, &a2);
p[++pn] = pa(r, a1, );
p[++pn] = pa(r, a2, -);
if(a1 > a2) {
p[++pn] = pa(r, -m, );
p[++pn] = pa(r, m, -);
}
}
ll ans = ;
int lst = -1e9;
sort(p+, p+pn+);
// for (int i=1; i<=pn; ++i) printf("pos = %d, r = %d, del = %d\n", p[i].pos, p[i].r, p[i].f);
for (int i=; i<=pn; ++i) {
int ps = p[i].pos, j=i;
if(lst != -1e9) {
int R = SMT::query(K);// cout << p[i].pos << ' ' << R << endl;
ans += 1ll * R * R * (p[i].pos - lst);
}
while(j+ <= pn && p[j+].pos == p[i].pos) ++j;
for (int k=i; k<=j; ++k)
SMT::edt(, , 1e5, p[k].r, p[k].f);
lst = p[i].pos;
i = j;
}
cout << ans;
return ;
}

bzoj4418 [Shoi2013]扇形面积并的更多相关文章

  1. 【BZOJ4418】[Shoi2013]扇形面积并 扫描线+线段树

    [BZOJ4418][Shoi2013]扇形面积并 Description 给定N个同心的扇形,求有多少面积,被至少K个扇形所覆盖. Input 第一行是三个整数n,m,k.n代表同心扇形的个数,m用 ...

  2. 4418: [Shoi2013]扇形面积并|二分答案|树状数组

    为何感觉SHOI的题好水. ..又是一道SB题 从左到右枚举每个区间,遇到一个扇形的左区间就+1.遇到右区间就-1,然后再树状数组上2分答案,还是不会码log的.. SHOI2013似乎另一道题发牌也 ...

  3. SHOI2013 扇形面积并

    题目链接:戳我 补一张图 我们尝试把圆上的扇形转化成直线上的矩形--我们维护[1,2*m]的区间,那么每个能产生贡献的子区间的长度*第K大的半径的平方的总和就是answer了. 怎么转化呢?左端点为a ...

  4. SHOI 2013 【扇形面积并】

    早上考的,我打了80分的部分分,出来和同学讨论的时候真想扇自己一巴掌...... 题目描述: 给定 n 个同心的扇形,求有多少面积,被至少k 个扇形所覆盖. 输入输出格式 输入格式: 第一行是三个整数 ...

  5. OI题目类型总结整理

    ## 本蒟蒻的小整理qwq--持续更新(咕咕咕) 数据结构 数据结构 知识点梳理 数据结构--线段树 推荐yyb dalao的总结--戳我 以后维护线段树还是把l,r写到struct里面吧,也别写le ...

  6. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  7. bzoj4418&&bzoj4419&&bzoj4420:SHOI2013Day2题解

    这三题截止现在(2016.3.11)窝居然都是跑的最快的……可啪…… T1 bzoj4418 这题叫做扇形面积并,看到这个名字我就方了,因为我不会计算几何啊QAQ 一看题目,发现是傻逼题……(雾) 又 ...

  8. 求两圆相交部分面积(C++)

    已知两圆圆心坐标和半径,求相交部分面积: #include <iostream> using namespace std; #include<cmath> #include&l ...

  9. POJ 2986 A Triangle and a Circle 圆与三角形的公共面积

    计算几何模板 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h& ...

随机推荐

  1. 【PHP项目】form表单的enctype属性

    enctype这个属性管理的是表单的MIME(Multipurpose Internet Mail Extensions)编码,共有三个值可选: 1.application/x-www-form-ur ...

  2. thinkphp3.2 where 条件查询 复查的查询语句

    复查的查询语句 有的时候,我们希望通过一次的查询就能解决问题,这个时候查询条件往往比较复杂,但是却比多次查询库来的高效. 实在是搞不定的话就直接用$where[‘_string’] = ‘xxxx’, ...

  3. io编程,python

    IO在计算机中指Input/Output,也就是输入和输出. Stream(流): 可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动.Input Stream就是数据从外面(磁盘.网络)流 ...

  4. Git-Git里程碑

    里程碑即Tag,是人为对提交进行的命名.这和Git的提交ID是否太长无关,使用任何数字版本号无论长短,都没有使用一个直观的表意的字符串来得方便.例如:用里程碑名称"v2.1"对应于 ...

  5. java.math.BigDecimal cannot be cast to java.lang.String解决方法

    从mysql数据库里取decimal(18,2)封装到Map<String,String>中 BigDecimal b = new BigDecimal(resultMap.get(&qu ...

  6. vue计算属性和观察者

    1. 计算属性 模板内的表达式非常便利,但在模板中放入太多的逻辑会让模板过重且难以维护,所有就有了计算属性 例子: //html代码 <div id="example"> ...

  7. USACO Section2.2 Subset Sums 解题报告 【icedream61】

    subset解题报告------------------------------------------------------------------------------------------ ...

  8. USACO Section1.3 Wormholes 解题报告

    wormhole解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------- ...

  9. canda 常用命令

    1.获取版本 conda -V conda --version 2.获取帮助 conda -h conda --help 查看某一命令的帮助 conda install -h conda instal ...

  10. jmeter运行脚本后,请求偶发性的传参错误

    问题现象:jmeter写好脚本后,请求偶发性的传参错误 排查过程:1.结合报错返回值,看是不是线程并发引起: 2.排除线程并发引起后,看看是不是取值策略:如果是参数化,看看是不是每次迭代,每次都取唯一 ...