LG1861 星之器
题意
题目背景
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) 。
输出格式:
输出一个正整数,表示至多产生的魔力。
输入输出样例
复制
- 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
说明
100%的数据中1 ≤ N,M ≤ 200,Iniij,Finij ≤ 1000。
所有数据保证了至少存在一个操作方法使得星之器由初态变为终态,同时保
证了初态与终态不是完全相同的。
分析
每次操作只会移动行或者列其中一个,两种情况并不相关,所以可以分开计算。
考虑以为情况,\(x,y(x<y)\)格子各向中间移动了一步,则贡献为
=\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 星之器的更多相关文章
- LGOJ1861 星之器
前置扯淡 我对这个题目的评价和网上各位大佬的一样:人类智慧题 (显然我不具有人类智慧--) Description link 现在有一个 \(n \times m\) 的矩阵\(A\),里面的每个元素 ...
- 题解:luoguP1861 星之器
为什么全世界都说这是个物理题,不应该是一个数学题吗,神犇的势能完全看不懂 我们直接来看题,对于一个点,在计算时候横坐标和纵坐标互不影响,所以我们分开考虑. 我们记两个点假如横坐标相同,分别记纵坐标为a ...
- [BZOJ2321,LuoguP1861]星(之)器
丧心病狂的神仙题 丧心病狂的神仙题 丧心病狂的神仙题 显然,不管你怎么移动,答案都是一定的 然后我们很快能联系到物理里面的能量守恒,于是自然地我们要给每个点搞一个势能出来 然后把势能的表达式写出来就可 ...
- C++的MFC,与C#的.NET
转载:http://blog.sina.com.cn/s/blog_7f5bde5c0101hk5n.html 以下摘自各问答网站.博客论坛: [1]MFC早已过时,现在C++多数是用来编写底层方法而 ...
- OD: ActiveX Vulnerabilities
通过一个精心构造的页面 exploit 第三方软件中的 ActiveX 已经成为一种惯用攻击手段,众多知名软件公司都曾被发现其注册的 ActiveX 中存在严重的缓冲区溢出漏洞,一个被广泛使用的第三方 ...
- 那些好用的阅读软件(Windows & Android)
此文章已添加预览与更新,请您移步到我的新博客 http://t.cn/EXCiCTE 整个2018年就没写过几篇博文,所以写一篇文章算过年啦-哈哈-有部分软件因为年代原因,官网已经消失.或者网络上的资 ...
- 请教中文的OCR软件哪个最好?
对原件,有这几种:1,全中文(含标点,一些英文符号)2,中英文(英文较多,或英文占大多数)3,全英文(这个用finereader8.0) 針對1.2 紫光 超星阅读器自带的OCR组件 尚书七号搞定全中 ...
- PDG转图像、PDF的若干方法
作者:马健邮箱:stronghorse_mj@hotmail.com发布:2006.05.26更新:2008.08.24 补充说明:此文成文较早,其中对Pdg2Pic.FreePic2Pdf的描述早已 ...
- android项目大全,总有你所需的
注:打开请贴网址.有些直接通过链接打开的不对. 1.相对布局实例 http://kukuqiu.iteye.com/blog/1018396 2.Log图文具体解释(Log.v,Log.d,Log. ...
随机推荐
- 图的邻接矩阵存储实现,C++描述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 查看电脑安装的JDK版本
1.输入java -d32 -version,若出现如下界面则是32位 2.java -d64 -version,因为是32位的,所以结果如下
- 手打struts知识点
Struts2概论 1.MVC原理 MVC(Model-View-Controller),程序设计理念 视图不用多说,html.jsp等 控制器,中转站,分配各个组件应当做什么,接受参数并跳转其他处理 ...
- Entity Framework数据库初始化
public class ApplicationContext : DbContext { public DbSet<User> Users { get; set; } public Ap ...
- L251
Beer before wine, or wine before beer; whatever the order, you’ll feel queer. That, at least, is the ...
- php优秀框架codeigniter学习系列——index.php
程序流程图 先来看看CI框架运行的程序流程图. 从图中我们 看到,index.php作为唯一的入口文件,会初始化CI框架运行所需的基本资源. 路由器(Routing)会根据http请求,确定如何处理: ...
- 对象存储到session中
以前在使用java开发中,通常都是在session里面存放的对象.在使用php开发中,也打算在session中存入对象,确实能把对象放进去,也能把整个对象输出,但就是取不出对象里面的属性. 通过pri ...
- select语句的高级应用及实例
本文介绍的select高级应用主要包括:联合查询.分组查询.嵌套查询和限定查询数目等,与实例对照演示,所使用数据库为sqlite3. 部门表(dept) CREATE TABLE dept( id I ...
- Python 默认值字典
from collections import defaultdict # 默认值字典 dd = defaultdict(lambda: "胡辣汤") # callable 可调用 ...
- 3.Appium处理原生与H5的嵌套
环境前置准备 手机与电脑USB连接,开启USB调试模式,通过adb devices可查看到此设备. 电脑端.移动端安装chrome浏览器.(尽量保证移动端chrome版本低于电脑端) App webv ...