题解:P1861 星之器

news/2025/4/1 3:52:27/文章来源:https://www.cnblogs.com/Kenma/p/18799325

前言

这为啥能想到来着。

思路分析

首先你发现答案只和初态和末态有关。

于是可以考虑定义势能,答案为势能的减少量。

经过仔细读题后发现,每次我们选择在一行或者一列操作,那么每一行和每一列的势能都是相对独立的。

于是我们只需要考虑在一行进行操作的势能变化,一行的势能是本行所有元素的势能之和,原图的势能就是行势能与列势能之和。

我们设 \(f(x)\) 表示在行内位置为 \(x\) 的元素所具有的势能,如果我们操作 \(x_1,x_2,x_1<x_2\),那么我们有:

\[f(x_1)+f(x_2)-f(x_1+1)-f(x_2-1)=x_2-x_1-1 \]

我们需要构造势能函数 \(f(x)\) 满足上面的式子。

我们尝试对上面的式子进行一点变换。

\[f(x_1+1)-f(x_1)-(x_1+1)=f(x_2)-f(x_2-1)-x_2 \]

我们让左右两边都为 \(0\) 即可,也就是,

\[f(x_1+1)-f(x_1)=x_1+1 \]

不妨设 \(f(0)=0\),那么对于 \(f(x)\),我们有,

\[f(x)=\frac{x(x+1)}{2} \]

然后就可以算初态和末态的势能了。

复杂度 \(O(nm)\)

代码实现

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a,cnt1[205],cnt2[205],ans1,ans2;
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a;cnt1[i]+=a,cnt2[j]+=a;}}for(int i=1;i<=n;i++){ans1+=i*(i+1)/2*cnt1[i];cnt1[i]=0;}for(int i=1;i<=m;i++){ans1+=i*(i+1)/2*cnt2[i];cnt2[i]=0;}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a;cnt1[i]+=a,cnt2[j]+=a;}}for(int i=1;i<=n;i++){ans2+=i*(i+1)/2*cnt1[i];cnt1[i]=0;}for(int i=1;i<=m;i++){ans2+=i*(i+1)/2*cnt2[i];cnt2[i]=0;}cout<<ans1-ans2;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/907612.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

堆区的介绍

悲观者从机会中看到困难。乐观者从困难中看到机会。 ——温斯顿丘吉尔我们先来说堆。堆是 OOM 故障最主要的发生区域。它是内存区域中最大的一块区域,被所有线程共享,存储着几乎所有的实例对象、数组。所有的对象实例以及数组都要在堆上分配,但是随着 JIT 编译器的发展与逃逸…

langchain0.3教程:从0到1打造一个智能聊天机器人

构建一个智能对话聊天机器人需要多少行代码?只需要不到30行。本篇文章结合gradio和langchain0.3从0到1创建一个智能聊天机器人并逐步优化流式输出、上下文记忆等功能在上一篇文章《大模型开发之langchain0.3(一):入门篇》 中已经介绍了langchain开发框架的搭建,最后使用la…

OpenGL渲染YUV实战:GPU加速转换与MipMap模糊效果实现

本文介绍了使用Qt和OpenGL渲染YUV420P数据的方法,包括YUV到RGB的转换以及通过OpenGL实现画质模糊的技术。文章详细讲解了YUV420P的结构、OpenGL纹理处理、MipMap技术及其在模糊效果中的应用,并探讨了在OpenGL ES 2.0环境下的兼容性问题及解决方案。最后,提出了进一步优化性能…

OpenGL绘制YUV、OpenGL 实现画质模糊以及 OpenGL ES 实现画质模糊

本文介绍了使用Qt和OpenGL渲染YUV420P数据的方法,包括YUV到RGB的转换以及通过OpenGL实现画质模糊的技术。文章详细讲解了YUV420P的结构、OpenGL纹理处理、MipMap技术及其在模糊效果中的应用,并探讨了在OpenGL ES 2.0环境下的兼容性问题及解决方案。最后,提出了进一步优化性能…

electron浏览器模式多标签方案

main.js let mainWindow function createWindow () {// Create the browser window.mainWindow = new BrowserWindow({}) }app.whenReady().then(() => {createWindow()const tabManager = new TabManager(mainWindow, baseUrl);//打开标签ipcMain.handle(open-tab, (event,…

EtherNet/IP转ProfiNet协议转换网关实现Alicat流量计数据批量接入西门子TIA Portal系统

一、案例背景 汽车涂装线的静电喷涂工艺对压缩空气流量稳定性要求极高。原系统中Alicat流量计与西门子PLC因协议差异无法联动,导致涂料浪费率高达8%。通过JM-EIPM-PN网关实现供气系统与PLC的深度集成。从而实现了EtherNet/IP转ProfiNet的通讯。二、设备连接与配置 设备配置: …

Ethernet/IP转Modbus助力库卡机器人与S7-1200PLC高效双向通讯

项目背景 在某汽车零部件生产车间的焊接生产线中,使用了库卡机器人进行焊接操作,其控制系统采用 Ethernet/IP 协议。同时,车间的自动化控制系统以西门子 S7 - 1200 PLC 为核心,采用 Modbus TCP 协议进行数据交互。为了实现焊接过程的自动化控制和生产数据的实时监控,需要将…

泛型--java进阶day10

1.泛型2.泛型--统一数据类型 如下图,当我们在泛型中添加不同的数据类型,add方法需要的数据类型也随之改变 [1][2]泛型--默认类型object当我们不指定泛型时,泛型的默认类型为object,所以add方法可以存储任意数据类型3.泛型--将运行期间错误提升到编译期 如下图,我们在集合中…

web139笔记(过if和sleep来判断盲注)

<?php error_reporting(0); function check($x){if(preg_match(/\\$|\.|\!|\@|\#|\%|\^|\&|\*|\?|\{|\}|\>|\<|nc|wget|exec|bash|sh|netcat|grep|base64|rev|curl|wget|gcc|php|python|pingtouch|mv|mkdir|cp/i, $x)){die(too young too simple sometimes naiv…

App性能测试工具-solopi

Solopi 简介Solopi 是阿里的一款开源的APP测试工具,能对App进行UI自动化测试和性能测试,而且还能进行单台设备控制多台测试设备 的工具。在使用Solopi 时不用进行root权限,但需要连接到adb(android SDK提供的命令行工具)。因此在使用Solopi之前需要开启开发者权限。 Solop…

US104S-ASEMI电机驱动专用US104S

US104S-ASEMI电机驱动专用US104S编辑:LL US104S-ASEMI电机驱动专用US104S 型号:US104S 品牌:ASEMI 封装:TO-220F 栅极触发电压(Vgt):1.3V。 栅极触发电流(Igt):0.2mA。 保持电流最大值(Ih):30mA。 正向重复电压(Vdrm):800V。 反向重复电压(Vrrm):800V。 通态…

deepseek+dify工作流实现代码审计

一、登录dify,设置deepseek apikey登录dify(https://cloud.dify.ai/signin)设置deepseek apikey二、创建dify工作流添加工作流应用写工作流三、添加待检测源代码,审计源代码安全问题修改待检测源代码项目的文件名后缀点击运行添加文件列表到工作流中四、与传统检测方式对比…