先po代码,之后把我那几个不太明了的知识点讲讲,巩固以下。三维的扫描线算法想要掌握还真是有一定的难度的。

代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define FOR(i,s,t) for(int i=(s);i<=(t);++i) using namespace std;
typedef long long ll; const ll INF=1ll<<60;
const int maxn=25;
inline void expand(int i, int& b0, int& b1,int& b2)
{
b0=i&1; i>>=1;
b1=i&1; i>>=1;
b2=i&1;
return;
}
inline int sign(int b0,int b1,int b2)
{
return (b0+b1+b2)%2?1:-1;
} ll heap[maxn][maxn][maxn];
ll sum(int x1,int x2,int y1,int y2,int z1,int z2)
{
int dx=x2-x1+1,dy=y2-y1+1,dz=z2-z1+1;
ll s=0;
for(int i=0;i!=8;++i)
{
int b0,b1,b2;
expand(i,b0,b1,b2);
s-=heap[x2-b0*dx][y2-b1*dy][z2-b2*dz]*sign(b0,b1,b2);
}
return s;
}
int main()
{
int T; cin>>T;
while(T--)
{
memset(heap,0,sizeof(heap));
int a,b,c,b0,b1,b2;
cin>>a>>b>>c;
FOR(i,1,a) FOR(j,1,b) FOR(k,1,c) cin>>heap[i][j][k];
FOR(i,1,a) FOR(j,1,b) FOR(k,1,c) FOR(p,1,7)
{
expand(p,b0,b1,b2);
heap[i][j][k]+=heap[i-b0][j-b1][k-b2]*sign(b0,b1,b2);//?????
} ll ans=-INF;
FOR(x1,1,a) FOR(x2,x1,a) FOR(y1,1,b) FOR(y2,y1,b)
{
ll tmpM=0;
FOR(z,1,c)
{
ll s=sum(x1,x2,y1,y2,1,z);
ans=max(ans,s-tmpM);
tmpM=min(tmpM,s);
}
}
cout<<ans<<endl;
if(T) cout<<endl;
}
return 0;
}

最新文章

  1. 如何配置Log4Net使用Oracle数据库记录日志
  2. 前端设计师也有必要学习seo,推荐一个seo博客
  3. .NET 程序启动调试器 .NET 测试代码耗费时间
  4. CSS3的chapter3
  5. Coursera台大机器学习技法课程笔记03-Kernel Support Vector Machine
  6. [开发笔记]-火狐的event和jquery1.9.1.min的问题
  7. poj 1568 Find the Winning Move 极大极小搜索
  8. CQRS学习——Storage实现(EF+Code First+DynamicReponsitory)[其四]
  9. HDU 4628 Pieces(DP + 状态压缩)
  10. Android新浪微博客户端(四)——添加多个账户及认证
  11. Landsat TM DN值转为表观反射率
  12. nginx 502错误
  13. JS - 数据类型的值拷贝函数(深拷贝)
  14. FreeMarker的用法
  15. ListView下拉刷新上拉加载更多实现
  16. hibulder中使用git教程
  17. .NET中结构和类的区别
  18. 【MySQL】InnoDB 内存管理机制 --- Buffer Pool
  19. dubbo源码阅读
  20. spojPlay on Words

热门文章

  1. ZOJ Monthly, January 2019 Little Sub and his Geometry Problem 【推导 + 双指针】
  2. shiro权限配置的细节问题&amp;认证
  3. es6之proxy和reflect
  4. mybaitis动态sql利用bind标签代替%拼接完成模糊查询
  5. springmvc mybatis 整合
  6. 【oracle笔记1】基础知识大集锦:增删改,数据类型,用户操作,持续更新中&#183;&#183;&#183;
  7. 键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...
  8. 让 shell(bash) 命令行显示当前 git 的分支名称
  9. md5的理解
  10. 数据库5.7-jdbc版本8.0.12驱动连接