首页 > 其他分享 >[CF1447B]Numbers Box

[CF1447B]Numbers Box

时间:2024-08-24 16:04:34浏览次数:15  
标签:Box CF1447B int mn 矩阵 负数 Numbers ans 绝对值

[CF1447B]Numbers Box

题目传送门

一道思路十分好想的 水题 贪心题。

题目大意:

有 \(t\) 次提问,每次提问输入两个数 \(m,n\) 表示行和列,输入 \(a_{ij}\) 表示第 \(i\) 行 \(j\) 列中的数,每次可将两个相邻的数乘 \({-1}\) 使最终矩阵中所有数相加的和最大

思路:

要使矩阵中所有数之和最大,正数一定要越多越好 ,我们可以将相邻的两个负数都变成正数。

不需要相邻的数才可以变,我们可以选矩阵中任意两个数进行改变,这样一来,我们可以将矩阵中的负数变成 \(n%2\) 个,如果还剩一个负数,还可以将负数随意替换到每一个位置,当然,我们要将它替换到绝对值最小的数上。

实现:

  • 用 \(ans\) 存储每一个输进来的 \(a_{ij}\) 的绝对值:

ans+=abs(a);

  • 用 \(gs\) 记录矩阵中负数的个数:

if(a<0) gs++;

  • 用 \(mn\) 存储 \(a_{ij}\) 的最小绝对值:

mn=min(mn,abs(a));

  • 如果 \(gs\) 为偶数,直接输出 \(ans\) (全部都变正数):

if(gs%2==0) cout<<ans<<endl;

  • 否则输出 \(ans-mn \times 2\) (还剩一个负数):

else cout<<ans-mn*2<<endl;

AC code:

#include<bits/stdc++.h>
using namespace std;
int t,n,m;
int mian()
{
 	cin>>t;
 	while(t--)	//询问t次
 	{
 		int gs=0,ans=0,mn=105;	//初始化
 		cin>>n>>m;
 		for(int i=1,a;i<=n;i++)	//循环整个矩阵
 			for(int j=1;j<=m;j++)
 			{
 				cin>>a;
 				ans+=abs(a);	//ans加上a的绝对值
 				if(a<0)
 					gs++;	//记录负数个数
 				mn=min(mn,abs(a));	//记录最小的绝对值
			}
 		if(gs%2==0)	//全部变正数
 			cout<<ans<<endl;
 		else	//还剩一个负数
 			cout<<ans-mn*2<<endl;	//答案中一个数从正变负,减两遍
 	}
  return 0;
 }

标签:Box,CF1447B,int,mn,矩阵,负数,Numbers,ans,绝对值
From: https://www.cnblogs.com/Hyper-zero/p/18377874

相关文章

  • catvod、TVBox源的格式解析及合并多个源的内容(Python脚本)
    文章目录TVBox官网核心代码分析源内容的结构定义源内容的主体结构解析直播的结构解析ApiConfig其他处理代码核心类分析完整代码参考合并多个catvod、TVBox源的内容(Python脚本)可用catvod、TVBox源参考(最新接口)更新:解决Spider参数覆盖问题TVBox官网TVBox项目索引:htt......
  • Qt Line Edit焦点丢失|Checkbox转移焦点丢失
    在我设计的一个界面中,用事件过滤器获取键盘方向键,通过键盘方向键转移控件的焦点,获取焦点的控件显示高亮,在从一个Checkbox控件转移焦点到一个LineEdit控件的时候,该获得焦点的控件并没有显示高亮,并且根据后续操作推测焦点消失了,通过qDebug调试发现转移焦点后的那一瞬间,LineEdit控......
  • ant design vue 表格table 和复选框Checkbox结合 实现树形数据操作
    前言:最近在做一个权限管理的页面,需要配置权限。业务给的要求在表格里,展示权限以及编辑权限。然后根据权限数组,动态展示模块。页面需求:可以设定每个公司或者部门的单独权限,可以编辑保存权限主要实现:1.全选,反选(递归循环,every,some实现)2.子级选中其父级选中,父级取消子级也取消3.......
  • StringGrid单元格绑定ComboBox、DateTimePicker或窗口传值
    一、初始化控件状态procedureTForm7.FormCreate(Sender:TObject);beginwithStringGrid1dobeginColWidths[0]:=15;Cells[1,0]:='Combobox';ColWidths[1]:=100;Cells[2,0]:='DateTimePicker';ColWidths[2]:=100;......
  • T-BOX是什么?科普文
    T-BOX(TelematicsBox)是一种车载通信终端设备,用于实现车辆与外部网络之间的数据通信。这种设备通常集成在现代汽车中,是车联网(InternetofVehicles,IoV)技术的关键组成部分。T-BOX可以通过蜂窝网络(如4GLTE)、Wi-Fi或其他无线通信技术,将车辆的数据传输到云端服务器,同时接收来自云......
  • P6218 [USACO06NOV] Round Numbers S 题解
    题面题目传送门如果一个正整数的二进制表示中,00的数目不小于11的数目,那么它就被称为「圆数」。例如,99的二进制表示为10011001,其中有22个00与22个11。因此,99是一个「圆数」。请你计算,区间[l,r][l,r]中有多少个「圆数」。前置芝士1.数位dp相关的题:P4317花神......
  • Windows Sandbox failed to initialize. Error 0x80370106
    #报错提示之前都好好的突然打开WindowsSandbox出现上面提示,经过网上搜索,我的版本是24H2(OSBuild26120.1252) #尝试更新到最新版本  ......
  • 13 Listbox 组件
    13Listbox组件Tkinter的Listbox组件是一个用于显示列表项的控件,用户可以从中选择一个或多个项目。以下是对Listbox组件的详细说明和一个使用案例。Listbox组件属性基本属性width:控件的宽度,通常以字符数为单位。height:控件的高度,以行数为单位。选择模式sel......
  • D. Another Problem About Dividing Numbers
    原题链接题意有两个数\(a,b\)每次可以拿走其中一个数的若干个质因子,请问恰好\(k\)次操作后能否使\(a=b\)分析假设\(a,b\)最后到达的是\(c\),那么\(\frac{a}{c}\)的质因子个数加上\(\frac{b}{c}\)的质因子个数一定大于等于\(k\)(为什么可以大于?因为一次操作可以多......
  • GridViewComboBoxColumn设置DataTypeConverter
    GridView中的GridViewComboBoxColumn列,如果需要使用TypeConverter将非字符串类型的数据源转换为字符串进行展示,可按如下几步进行:例如,数据源为如下枚举类型:publicenumMyColor{Red,Yellow,Green}展示的时候,需要转换为汉字,先定义如下类型,作为GridViewComboBo......