题目链接: http://acm.whu.edu.cn/land/problem/detail?problem_id=1581

---------------------------------------------------------------------------------------

观察到第一维最大只有$10$ 于是第一维可以直接枚举 $($把长方体切成矩形$)$

观察到第二维最大只有$100$ 于是第二维也可以继续枚举 $($把矩形切成线段$)$

如果最后一维用线段树实现区间覆盖的话 复杂度为

$O(n^{2}kmlog(n * k ^ 2))$ $(n <= 10, k <= 10, m <= 1000)$

由于时限只有$500ms$ 还有多组数据 这样很可能$T$掉

再多想想我们会发现只有区间覆盖操作而没有区间修改操作$($相当于没有回档功能$)$

那就直接维护每个点所在覆盖线段的右端点即可

而维护操作显然是用并查集比较方便

复杂度减少了一个$log$后 单组$10^6$ 多组也不会$T$了

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int a[][][], fa[][][];
int n, k0, m, n2, n3, sum, ans;
int p1, q1, r1, p2, q2, r2;
int findf(int x, int y, int z)
{
if(fa[x][y][z] != z)
fa[x][y][z] = findf(x, y, fa[x][y][z]);
return fa[x][y][z];
}
int main()
{
while(scanf("%d%d%d", &n, &k0, &m) != EOF)
{
n2 = n * k0;
n3= n2 * k0;
for(int i = ; i <= n; ++i)
for(int j = ; j <= n2; ++j)
{
for(int k = ; k <= n3; ++k)
{
scanf("%d", &a[i][j][k]);
fa[i][j][k] = k;
}
fa[i][j][n3 + ] = n3 + ;
}
sum = ;
ans = -1e9;
while(m--)
{
scanf("%d%d%d%d%d%d", &p1, &q1, &r1, &p2, &q2, &r2);
for(int i = p1; i <= p2; ++i)
for(int j = q1; j <= q2; ++j)
for(int k = r1; k <= r2; k = fa[i][j][k])
if(findf(i, j, k) == k)
{
sum += a[i][j][k];
fa[i][j][k] = findf(i, j, k + );
}
ans = max(ans, sum);
}
printf("%d\n", ans);
}
return ;
}

whu 1581 Union of cubes的更多相关文章

  1. SQL Server-聚焦UNIOL ALL/UNION查询(二十三)

    前言 本节我们来看看有关查询中UNION和UNION ALL的问题,简短的内容,深入的理解,Always to review the basics. 初探UNION和UNION ALL 首先我们过一遍 ...

  2. SQL 提示介绍 hash/merge/concat union

    查询提示一直是个很有争议的东西,因为他影响了sql server 自己选择执行计划.很多人在问是否应该使用查询提示的时候一般会被告知慎用或不要使用...但是个人认为善用提示在不修改语句的条件下,是常用 ...

  3. LINQ to SQL语句(8)之Concat/Union/Intersect/Except

    适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1.简单形式: var q = ( from c in db ...

  4. SQLServer-----Union,Union All的使用方法

    转载: http://blog.csdn.net/kiqinie/article/details/8132485 select a.Name from Material as a union sele ...

  5. 假如 UNION ALL 里面的子句 有 JOIN ,那个执行更快呢

    比如: select id, name from table1 where name = 'x' union all select id, name from table2 where name =  ...

  6. sql union和union all的用法及效率

    UNION指令的目的是将两个SQL语句的结果合并起来.从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION的一个限制是两个 ...

  7. 【oracle】union、union all、intersect、minus 的用法及区别

    一.union与union all 首先建两个view create or replace view test_view_1 as as c from dual union as c from dua ...

  8. sql with as union all

    WITH RPL (FId,Fname,Forder) AS ( SELECT ment.deptno,ment.deptname,ment.orderno FROM JTERP..fg_depart ...

  9. Oracle 中 union 和union all 的简单使用说明

    1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...

随机推荐

  1. NOIP赛前集训备忘录(含每日总结)(日更?。。。)

    NOIP赛前集训备忘录(含每日考试总结) 标签: 有用的东西~(≧▽≦)/~啦啦啦 阅读体验:https://zybuluo.com/Junlier/note/1279194 考试每日总结(这个东西是 ...

  2. 19: vue项目使用整理

    1.1  axios 基本用法 安装:npm install axios -S                   # 也可直接下载axios.min.js文件 1.axios借助Qs对提交数据进行序 ...

  3. [LeetCode] 140. 单词拆分 II

    题目链接 : https://leetcode-cn.com/problems/word-break-ii/ 题目描述: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符 ...

  4. jsonp跨域请求的方式

    1.jsonp一种请求方式.用于解决一个棘手的问题: 由于浏览器具有同源策略:即可以通过后台去访问其他网站,而不能通过浏览器(ajax请求)访问其他网页或域(阻止ajax请求,但是无法阻止<sc ...

  5. Vue下简单分页及搜索功能

    最近利用Vue和element ui仿写了个小页面,记一哈分页和搜索功能的简单实现. 首页   emmmm..... 搜索框输入..... 搜索完成 数据是直接写在这里面的: cardPhoto:[ ...

  6. Vue组件化和路由

    组件化 组件化是vue的核心思想,它能提高开发效率,方便重复使用,简化调试步骤,提升整个项目的可维护性,便于多人协同开发 组件通信 父组件 => 子组件: 属性props 特性$attrs 引用 ...

  7. Python自动化学习--鼠标和键盘事件

    from selenium import webdriver from selenium.webdriver import ActionChains import time driver = webd ...

  8. CIC许可更新

    打开IA软件,点击软件中的[License],可以查看当前许可是否可用或者过期,如果过期,点击下方的[Load License],选择最新的I3许可文件加载,重启电脑.

  9. 查看jar包内容

    查看jar包内容 查看jar包内容的基本命令: jar tf jar-file 参数解释: The t option indicates that you want to view the table ...

  10. SpringBoot框架(1)--入门篇

     什么是SpringBoot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 特征 创建独立的Spring应用程序 直接嵌 ...