BZOJ2321[BeiJing2011集训]星器(能量守恒,玄学)

2024-04-16 02:32

本文主要是介绍BZOJ2321[BeiJing2011集训]星器(能量守恒,玄学),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述
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个自然数:Finij,描绘了终态(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

【输入样例2】
1 4

10 20 30 40

0 0 100 0

样例输出
【输出样例1】
7

【样例1解释】
唯一的一种操作方法是:

对第5列的两个“星”进行一次操作,产生魔力2;

对第1列的两个“星”进行两次操作,产生魔力3+1;

对第4行的两个“星”进行一次操作,产生魔力1;

一共产生7单位的魔力。

【输出样例2】
50

提示
【数据规模和约定】
40%的数据中N ≤ 2,如样例2;

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

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

题目来源
没有写明来源

思路:

PoPoQQQ:
操作后两个星的位置为(i,j+1)和(i,k-1)
势能和为ii+(j+1)(j+1)+ii+(k-1)(k-1)
E前-E后=2k-2j-2=2*(k-j-1)

很神的题,定义势能为ixi + jxj。这样使得势能的差就是每次变化产生的能量的两倍

#include<iostream>
#include<cstdio>
using namespace std;typedef long long ll;ll a[205][205];int main()
{ll n,m;scanf("%lld%lld",&n,&m);ll ans1 = 0,ans2 = 0;for(ll i = 1;i <= n;i++){for(ll j = 1;j <= m;j++){scanf("%lld",&a[i][j]);ans1 += (i * i + j * j) * a[i][j];}}for(ll i = 1;i <= n;i++){for(ll j = 1;j <= m;j++){ll tmp;scanf("%lld",&tmp);ans2 += (i * i + j * j) * tmp;}}printf("%lld\n",(ans1 - ans2) / 2);return 0;
}

这篇关于BZOJ2321[BeiJing2011集训]星器(能量守恒,玄学)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907587

相关文章

2014暑假集训搜索专题

A - 漫步校园 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Description LL最近沉迷于AC不能自拔,每天寝室、机房两点一线。由于长时间坐在电脑边,缺乏运动。他决定充分利用每次从寝室到机房的时间,在校园里散散步。整个HDU校园呈方形布局,可划

寒假集训第二天——线性表

现在时间是北京时间1点23分,第二天集训。。。 昨天花了老长时间把线性表看了下,表示很有压力,不大会用。。。 先说下我学到的线性表的皮毛。。。 首先是链表的构建,构建有两种方式: 顺序链表(尾插法建单链表) #include<stdio.h>struct node{int date;struct node *next;};int main(){int i,n;node *he

寒假集训第一天——结构体

期待已久的寒假集训终于开始了,第一天讲的内容比较简单——结构体,之前就学了点。。。 表示普通的结构体会用,涉及到指针都不大会,今天算是学了点指针的用法。。。 作业描述如下: 结构体 今天作业  1.定义一个acmer结构体,包括以下信息:姓名,学号,手机号,做题数,出生日期,其中出生日期date也是一个结构体,包括年、月、日  2.建立结构体数组,实现对多个同学

寒假集训——字典树(模板)

struct node{int v;node *next[26];} T[1000000];int t=0;node *newnode(){node *p=new node;//动态分配//node *p=&T[t++];//静态分配p->v=0;for(int i=0; i<26; i++)p->next[i]=NULL;return p;}void insertnode(node

寒假集训——二叉树

#include <iostream>#include <stdio.h>#include <string.h>#include <queue>using namespace std;typedef struct node{char date;node *lch,*rch;}Bn,*Bt;void cbtree(Bt &T)//先序建二叉树{char c;scanf("%c"

数据结构代码集训day14(适合考研、自学、期末和专升本)

题目均来自b站up:白话拆解数据结构! 今日题目如下:(1)试写一个算法判断给定字符序列是否是回文。 (2)给定一个算法判断输入的表达式中括号是否匹配。假设只有花、中、尖三种括号。 题1         回文序列即正着读反着读,都是一样的。比如abba就是回文序列,abab就不是。         由于要反着读,能够很容易想到一种线性结构——栈。栈后进先出,很容易实现输入序列的反

nefu暑假集训4 哈希 个人模板+例题汇总

前言:   什么是哈希?哈希其实是所有字符串操作中,最简单的操作了(哈希的过程,其实可以看作对一个串的单向加密过程,并且需要保证所加的密不能高概率重复(就像不能让隔壁老王轻易地用它家的钥匙打开你家门一样qwq),通过这种方式来替代一些很费时间的操作。 比如,最常见的,当然就是通过哈希数组来判断几个串是否相同(洛谷P3370)。此处的操作呢,很简单,就是对于每个串,我们通过一个固定的转换方式,将相

【自由能系列(初级)】自由能原理——神经科学的“能量守恒”方程

【通俗理解】自由能原理——神经科学的“能量守恒”方程 关键词提炼 #自由能原理 #KL散度 #生成模型 #识别密度 #观测数据 #神经科学 第一节:自由能原理的类比与核心概念 1.1 自由能原理的类比 自由能原理在神经科学中的应用,可以类比为一个“大脑的能量守恒”方程。就像物理学中的能量守恒定律一样,大脑在处理信息时,也遵循着一种“自由能守恒”的原则。 这个原理通过衡量大脑对外部世界的

非物质玄学

1.去银行蹭水喝,银行乃财气汇聚之所。五行之中,水主财力,能大大增加你的财运。 2.如果与某人相处时老是遭遇麻烦事,相信自己的直觉,赶紧远离。 3.当事情对你不利时,需保持缄默,宁静就是应急之策。 4.如果一群人坐在一起,你有话要说,但突然有个东西掉落,有话还没有说出口,这个时候切记,没说出口的话就不要再说了。 5.不穿的鞋子,尽可能别放在门外。 6.家越整洁,人越有福。 7.家里的存款,就自己和

【蓝桥杯集训100题】第29题scratch自动行驶 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题

目录 scratch自动行驶 一、题目要求 编程实现 具体要求 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratch自动行驶 蓝桥杯集训100题第29题内部训练模拟