题目传送门

郭大侠与“有何贵干?”

连当个值日生也能酷到迷死人,县立学文高中一年二班。这里,有个一入学就引起瞩目的学生,名叫郭大侠。其举手投足都蕴含着一股酷劲,不对,根本酷过头了。因为成为校园焦点,眼前出现了各项威胁。郭大侠的最新潮、最流行的校园生活,自此揭幕。

“在下郭大侠,有何贵干?”

“在一个三维空间里面,有许多个长方体,求恰好覆盖K次的空间的总体积是多少。”

“That's easy!”

真是酷毙了!

Input

第一行包含两个整数N K表示有N个长方体在这个三维空间里,希望知道恰好覆盖K次的体积是多少。
第二到N+1行 每行六个数x1,y1,z1,x2,y2,z2,分别表示这个长方体的左下角坐标,以及这个长方体的右上角的坐标。
1≤N≤100000
1≤K≤10
1≤x1≤x2≤1000000000
1≤y1≤y2≤1000000000
1≤z1≤z2≤3
保证最后答案在longlong范围内

Output

输出一个体积,表示三维空间中恰好覆盖K次的体积是多少。

题解

此题显然是一道道扫描线的题。最开始一看是三维,把我吓死了。后来一看1≤z1≤z2≤3,直接做两个扫描线就好了。如果你不会扫描线,请先做hdu1542Atlantis.
#include <bits/stdc++.h>
using namespace std;const int Maxn = 100010;
struct data {int x, y1, y2, v;data(int a = 0, int b = 0, int c = 0, int d = 0) : x(a), y1(b), y2(c), v(d) {}bool operator < (const data &A) const {return x < A.x;}
};
vector <int> Y;
vector <data> op[2];
int N, K, C;class Sgtree {
protected:int dl[Maxn << 3], dr[Maxn << 3], Cover[Maxn << 3], len[Maxn << 3][13];
public:void Up(const int &u) {int l = dl[u], r = dr[u];memset(len[u], 0, sizeof len[u]);if (r - l == 1) {len[u][min(K + 1, Cover[u])] = Y[r] - Y[l];} else {int val = Cover[u];for (int i = 0; i <= K + 1; ++i)len[u][min(val + i, K + 1)] = len[u << 1][i] + len[u << 1 | 1][i];}}void Build(int u, int l, int r) {dl[u] = l, dr[u] = r, Cover[u] = 0;memset(len[u], 0, sizeof len[u]);len[u][0] = Y[r] - Y[l];if (r - l > 1) {int mid = (l + r) >> 1;Build(u << 1, l, mid);Build(u << 1 | 1, mid, r);}}void Update(int u, int x, int y, const int &val) {if (x == y) return;int l = dl[u], r = dr[u];if (x <= l && y >= r) Cover[u] += val;else {int mid = (l + r) >> 1;if (x < mid) Update(u << 1, x, y, val);if (y > mid) Update(u << 1 | 1, x, y, val);}Up(u);}int Query() {return len[1][K];}
}St;inline int Rank(const int &v) {return lower_bound(Y.begin(), Y.end(), v) - Y.begin();
}long long Solve(const vector<data> &T) {long long ret = 0;if (T.size() == 0) return 0LL;St.Build(1, 0, C - 1);int last = T[0].x, len;for (int i = 0; i < T.size(); ++i) {len = T[i].x - last;ret += (long long)len * St.Query();St.Update(1, Rank(T[i].y1), Rank(T[i].y2), T[i].v);last = T[i].x;}return ret;
}int main() {int x1, x2, y1, y2, z1, z2;scanf("%d%d", &N, &K);for (int i = 0; i < N; ++i) {scanf("%d%d%d%d%d%d", &x1, &y1, &z1, &x2, &y2, &z2);if (z2 - z1 >= 1) {Y.push_back(y1); Y.push_back(y2);for (int j = z1; j < z2; ++j) {op[j - 1].push_back(data(x1, y1, y2, 1));op[j - 1].push_back(data(x2, y1, y2, -1));}}}sort(Y.begin(), Y.end());Y.erase(unique(Y.begin(), Y.end()), Y.end());C = Y.size();long long ans = 0;for (int i = 0; i < 2; ++i) {sort(op[i].begin(), op[i].end());ans += Solve(op[i]);}cout << ans << endl;return 0;
}

cdoj 1355 郭大侠与“有何贵干?”相关推荐

  1. 2016 UESTC Training for Data Structures F - 郭大侠与“有何贵干?” CDOJ 1335 线段树 扫描线 离散化

    F - 郭大侠与"有何贵干?" 就是给一个三维空间,和N个长方体,问覆盖K次的体积 x和y都是1e9,但是z是[1,3],所以可以把这个分为两个二维平面,求被覆盖K次的面积,最后加 ...

  2. cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 最近 ...

  3. cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  4. cdoj 1342 郭大侠与甲铁城 树状数组+离线

    郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  5. 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列

    J - 郭大侠与Rabi-Ribi 就是有N只兔子,每只兔子会存在a[i]秒,价值为v[i],然后每秒只能取一只兔子,问能取的兔子总价值的最大值是多少 用一个堆/优先队列维护就好了 首先我们先把兔子按 ...

  6. 【CDOJ 1334】 郭大侠与Rabi-Ribi

    http://acm.uestc.edu.cn/#/problem/show/1334 最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在 ...

  7. 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组

    K - 郭大侠与甲铁城 有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5 我的做法是离线树状数组 首先把区间保存下来,按右端点升序排序 ...

  8. CDOJ 1284 苦恼的郭大侠 map启发式合并

    苦恼的郭大侠 题目连接: http://acm.uestc.edu.cn/#/problem/show/1284 Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行 ...

  9. cdoj1342郭大侠与甲铁城

    地址:http://acm.uestc.edu.cn/#/problem/show/1342 题目: 郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     ...

最新文章

  1. PHP代码审计笔记--变量覆盖漏洞
  2. 完成AOP 顶层设计-MethodInterceptor
  3. add_metrology_object_generic将测量对象添加到计量模型中
  4. 二维数组子数组矩形和
  5. python前端调用后端模型_【Python】【Flask】前端调用后端方法
  6. Python机器学习:PCA与梯度上升:008使用PCA对数据进行降噪
  7. android删除wifi配置,[RK3288][Android6.0] WiFi之无线网络配置的忘记(移除)过程
  8. 如何在PowerShell中连接字符串和变量?
  9. bzoj 1293: [SCOI2009]生日礼物
  10. php---遍历一个数组获得一个新的数据结构
  11. mysql中in和exists区别
  12. 详细解读Python中的__init__()方法
  13. 语音识别中输入输出的可能形式有哪些
  14. 5V转3.3V原理图(AMS1117)
  15. Sql面试50题 详解 持续更新
  16. vue动态加载页面组件
  17. 我的世界空岛生存服务器制作,我的世界:空岛生存“岩浆”没了咋办?大佬给出了6种解决方案!...
  18. 百度智能api接口汇总
  19. 破解word只读文档 word文档保护后的破解办法
  20. PHP的页面布局怎样设计

热门文章

  1. Kotlin小知识之高阶函数
  2. WordPress仿抖音短视频主题插件
  3. python做智能ai的狼吃羊
  4. 永磁同步电机的FOC/ DTC控制比较
  5. 东北大学计算机科学与技术专业考研科目,东北大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  6. android 三档开关做法
  7. linux 关闭snmp服务,CentOS 7 SNMP端口始终关闭
  8. php 抓取京东搜索页,京东商品列表页爬虫采集方法 - 八爪鱼采集器
  9. 查询快递最新状态php,PHP查询快递信息的方法
  10. 【Android】Android江湖