题意

题目背景

Magic Land 上的时间又过了若干世纪„„

现在, 人们谈论着一个传说:从前,他们的祖先来到了一个位于东方的岛屿,
那里简直就是另外一个世界。善于分析与构造的 Magic Land 上的人们总是不明
白那里的人们是如何不借助精确的实验与计算驱动和操纵魔法。

题目描述

偶然地,一个魔法使(Magician)来到了Magic Land,在临走的时候留下了
一个神奇的盒子,叫做星之器(Casket of star)。
虽然不知道这个盒子是做什么的,但是经过了大量的实验和计算后,人们已
经清楚它的一些事实:

1.星之器之中有N×M 个区域,可看作分成 N行和 M列的格子,每个区域之中有若干单位的称为“星”的对象,这个对象的最小单位已经被确定,所以,这个数量总是整数。

2.魔法使可以驱动星之器中位于同一行或同一列的不相邻(有公共边的区域称为相邻的)两个区域中各 1 单位的“星”,使得它们分别向中心移动 1 格。

3.每一次使用2 中的方法驱动“星”,将会产生魔力,魔法使会得到这一部分魔力。魔力的量等于这个两个区域之间所间隔的区域数。

这样,我们可以用一个 N×M 的数表来表示星之器的状态,比如 N=2,M=3
时:

2 0 1                                     1 2 0
5 1 4 5 1 4

当星之器为左图的状态时,通过操纵第一行的第 1 和3 个区域中的“星” (加粗的数字对应的区域),变为右图所示的状态,同时,将产生 1 单位的魔力(因
为这两个区域之间恰好隔了 1 个区域)。

在经过了进一步的研究之后,人们知道了这个星之器最初的状态(Ini)以及最终被他们得到时的状态(Fin)。

你希望知道,星之器最多帮助它的拥有者提供了多少的魔力。即:经过一系列上述操作由初态(Ini)变为终态(Fin) ,至多产生多少魔力。

需要注意的是,显然操作过程中每个区域内“星”的数量不能是负的,即:如果那个区域已经没有“星”了,当然就不能继续操作了。

输入输出格式

输入格式:

第一行包含两个正整数N、M 表示星之器的大小。

接下来的N 行,每行包含 M个自然数:Iniij,描绘了初态(Ini)。

在一个空行后的N 行,每行包含 M 个自然数:Fin ,描绘了终态(Fin) 。

输出格式:

输出一个正整数,表示至多产生的魔力。

输入输出样例

输入样例#1:
复制

5 5
1 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 1 0 1 1
1 0 0 0 0 0 0 0 0 0

0 0 0 0 1

2 0 0 0 1

0 0 2 0 0

0 0 0 0 0

输出样例#1:
复制

7

说明

100%的数据中1 ≤ N,M ≤ 200,Iniij,Finij ≤ 1000。

所有数据保证了至少存在一个操作方法使得星之器由初态变为终态,同时保
证了初态与终态不是完全相同的。

分析

每次操作只会移动行或者列其中一个,两种情况并不相关,所以可以分开计算。

考虑以为情况,\(x,y(x<y)\)格子各向中间移动了一步,则贡献为

\[y-x-1 \\
=\frac{y^2-(y-1)^2+x^2-(x+1)^2}2
\]

所以可以定义一个点的势能为\(val[i,j]*\frac{i^2+j^2}2\),那么初态减去终态的势能就是操作所释放出来的能量。

至于为什么是最大值呢?因为方案唯一,最大值就一幌子。

时间复杂度\(O(NM)\)

代码

#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
rg T data=0,w=1;rg char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') w=-1;ch=getchar();}
while(isdigit(ch)) data=data*10+ch-'0',ch=getchar();
return data*w;
}
template<class T>il T read(rg T&x) {return x=read<T>();}
typedef long long ll; co int N=51;
int n,m;
ll ans;
int main(){
read(n),read(m);
for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)
ans+=read<int>()*(i*i+j*j);
for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)
ans-=read<int>()*(i*i+j*j);
printf("%lld\n",ans/2);
return 0;
}

LG1861 星之器的更多相关文章

  1. LGOJ1861 星之器

    前置扯淡 我对这个题目的评价和网上各位大佬的一样:人类智慧题 (显然我不具有人类智慧--) Description link 现在有一个 \(n \times m\) 的矩阵\(A\),里面的每个元素 ...

  2. 题解:luoguP1861 星之器

    为什么全世界都说这是个物理题,不应该是一个数学题吗,神犇的势能完全看不懂 我们直接来看题,对于一个点,在计算时候横坐标和纵坐标互不影响,所以我们分开考虑. 我们记两个点假如横坐标相同,分别记纵坐标为a ...

  3. [BZOJ2321,LuoguP1861]星(之)器

    丧心病狂的神仙题 丧心病狂的神仙题 丧心病狂的神仙题 显然,不管你怎么移动,答案都是一定的 然后我们很快能联系到物理里面的能量守恒,于是自然地我们要给每个点搞一个势能出来 然后把势能的表达式写出来就可 ...

  4. C++的MFC,与C#的.NET

    转载:http://blog.sina.com.cn/s/blog_7f5bde5c0101hk5n.html 以下摘自各问答网站.博客论坛: [1]MFC早已过时,现在C++多数是用来编写底层方法而 ...

  5. OD: ActiveX Vulnerabilities

    通过一个精心构造的页面 exploit 第三方软件中的 ActiveX 已经成为一种惯用攻击手段,众多知名软件公司都曾被发现其注册的 ActiveX 中存在严重的缓冲区溢出漏洞,一个被广泛使用的第三方 ...

  6. 那些好用的阅读软件(Windows & Android)

    此文章已添加预览与更新,请您移步到我的新博客 http://t.cn/EXCiCTE 整个2018年就没写过几篇博文,所以写一篇文章算过年啦-哈哈-有部分软件因为年代原因,官网已经消失.或者网络上的资 ...

  7. 请教中文的OCR软件哪个最好?

    对原件,有这几种:1,全中文(含标点,一些英文符号)2,中英文(英文较多,或英文占大多数)3,全英文(这个用finereader8.0) 針對1.2 紫光 超星阅读器自带的OCR组件 尚书七号搞定全中 ...

  8. PDG转图像、PDF的若干方法

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2006.05.26更新:2008.08.24 补充说明:此文成文较早,其中对Pdg2Pic.FreePic2Pdf的描述早已 ...

  9. android项目大全,总有你所需的

    注:打开请贴网址.有些直接通过链接打开的不对.  1.相对布局实例 http://kukuqiu.iteye.com/blog/1018396 2.Log图文具体解释(Log.v,Log.d,Log. ...

随机推荐

  1. Java单例模式《二》懒汉式

    package com.study.mode; /** * 单例模式: 懒汉式,需要的时候创建. * @ClassName: SingleBean2 * @author BlueLake * @dat ...

  2. JDBC:随机生成车牌号,批量插入数据库

    package InsertTest; /* * 单客户端:批量插入 */ import java.sql.Connection; import java.sql.DriverManager; imp ...

  3. js 判断某个元素是否隐藏或显示

    //判断某个元素是否显示 true:是 false:不是 var isVisible = $('#myDiv').is(':visible'); //判断某个元素是否隐藏 true:是 false:不 ...

  4. mysql数据库存储引擎及区别

    MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERAT ...

  5. 关于iOS开发常用的一些东西

    备注:这里只是个人的观点,有的地方也是copy,多多指教,个人笔记,有侵犯你们版权的地方还望海涵!!! 1. 自定义键盘:inputView重写,可以用重写UITextField来实现 2. UIDa ...

  6. 二、求水仙花数,打印出100-999之间所有的"水仙花数"

    所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方 public c ...

  7. Java基础复习

    java语言的一个核心:jdk, java development kits---面向开发人员jre, java Runtime Environment---服务器上 java虚拟机---(以字节码为 ...

  8. java.util.concurrent ThreadPoolExecutor源码分析

    实现的接口:Executor, ExecutorService 子类:ScheduledThreadPoolExecutor 这类为java线程池的管理和创建,其中封装好的线程池模型在Executor ...

  9. <算法><Union Find并查集>

    Intro 想象这样的应用场景:给定一些点,随着程序输入,不断地添加点之间的连通关系(边),整个图的连通关系也在变化.这时候我们如何维护整个图的连通性(即判断任意两个点之间的连通性)呢? 一个比较简单 ...

  10. Java学习笔记24(Map集合)

    Map接口: Map接口与Collection接口无继承关系. 区别:Collection中的元素是孤立的,一个一个存进去的. Map作为一个映射集合,每一个元素包含Key-value对(键-值对). ...