【白书训练指南】(UVa10755)Garbage Heap
2024-10-21 09:13:04
先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;
}
最新文章
- 如何配置Log4Net使用Oracle数据库记录日志
- 前端设计师也有必要学习seo,推荐一个seo博客
- .NET 程序启动调试器 .NET 测试代码耗费时间
- CSS3的chapter3
- Coursera台大机器学习技法课程笔记03-Kernel Support Vector Machine
- [开发笔记]-火狐的event和jquery1.9.1.min的问题
- poj 1568 Find the Winning Move 极大极小搜索
- CQRS学习——Storage实现(EF+Code First+DynamicReponsitory)[其四]
- HDU 4628 Pieces(DP + 状态压缩)
- Android新浪微博客户端(四)——添加多个账户及认证
- Landsat TM DN值转为表观反射率
- nginx 502错误
- JS - 数据类型的值拷贝函数(深拷贝)
- FreeMarker的用法
- ListView下拉刷新上拉加载更多实现
- hibulder中使用git教程
- .NET中结构和类的区别
- 【MySQL】InnoDB 内存管理机制 --- Buffer Pool
- dubbo源码阅读
- spojPlay on Words
热门文章
- ZOJ Monthly, January 2019 Little Sub and his Geometry Problem 【推导 + 双指针】
- shiro权限配置的细节问题&;认证
- es6之proxy和reflect
- mybaitis动态sql利用bind标签代替%拼接完成模糊查询
- springmvc mybatis 整合
- 【oracle笔记1】基础知识大集锦:增删改,数据类型,用户操作,持续更新中&#183;&#183;&#183;
- 键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...
- 让 shell(bash) 命令行显示当前 git 的分支名称
- md5的理解
- 数据库5.7-jdbc版本8.0.12驱动连接