D. Vupsen, Pupsen and 0(思维 + 从小部分入手(由小推大))

news2024/10/2 22:16:23

Problem - 1582D - Codeforces

Vupsen和Pupsen被赠予一个整数数组。由于Vupsen不喜欢数字0,他把数组中所有等于0的数字都扔掉了。结果,他得到一个长度为n的数组a。

相反,Pupsen喜欢数字0,当他看到没有0的数组时,他很不高兴。为了让Pupsen高兴,Vupsen决定想出另一个长度为n的数组b,使∑ni=1ai⋅bi=0。由于Vupsen不喜欢数字0,数组b中不能包含等于0的数字。请帮助Vupsen找到任何这样的数组b!

输入
第一行包含一个整数t(1≤t≤100)--测试案例的数量。接下来的2-t行包含测试用例的描述。每个测试用例的描述由两行组成。

每个测试用例的第一行包含一个整数n(2≤n≤105)--数组的长度。

第二行包含n个整数a1,a2,...,an(-104≤ai≤104, ai≠0)--数组a的元素。

保证所有测试案例的n之和不超过2⋅105。

输出
对于每个测试案例打印n个整数b1,b2,...,bn--数组b的元素(|b1|+|b2|+...+|bn|≤109,bi≠0,∑ni=1ai⋅bi=0)。

可以证明,答案总是存在的。

例子
输入复制
3
2
5 5
5
5 -2 10 -9 4
7
1 2 3 4 5 6 7
输出拷贝
1 -1
-1 5 1 -1 -1
-10 2 2 -3 5 -1 -1
注意
在第一个测试案例中,5⋅1+5⋅(-1)=5-5=0。例如,您也可以打印3-3,因为5⋅3+5⋅(-3)=15-15=0。
在第二个测试案例中,5⋅(-1)+(-2)⋅5+10⋅1+(-9)⋅(-1)+4⋅(-1)=5-10+10+9-4=0。

题解:
从整体考虑似乎有点麻烦

那我们就从部分开始考虑

两个数之间如何构造?

a,b

-b,a

那么n为偶数的情况我们就得到了

由此再想一想

如果n为偶数呢?

我们可以发现只要构造一个为3的小块,剩下的部分就为偶数了

如何构造3个数的组呢?

a,b,c

(b+c) -a -a

但是还有一点坑,可能b+c = 0

但是不用担心三个数之间肯定有两个数相加大于0的情况,找到构造即可

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
#define int long long
int a[100040];
void solve() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int n;
	cin >> n;
	for(int i = 1;i <= n;i++)
	cin >> a[i];
	if(n%2 == 0)
	{
		for(int i = 1;i <= n;i+=2)
		{
			cout<<a[i+1]<<" "<<-a[i]<<" ";
		}
		cout<<"\n";
	}
	else
	{
		if(a[2] + a[3]!=0)
		cout<<(a[2] + a[3])<<" "<<-a[1]<<" "<<-a[1]<<" ";
		else if(a[1] + a[3]!=0)
		cout<<-a[2]<<" "<<(a[1] + a[3])<<" "<<-a[2]<<" ";
		else
		cout<<-a[3]<<" "<<-a[3]<<" "<<(a[1] + a[2])<<" ";
		for(int i = 4;i <= n;i+=2)
		{
			cout<<a[i+1]<<" "<<-a[i]<<" ";
		}
		cout<<"\n";
	}

}
signed main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
} 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux系统】第三篇:Linux中软件包管理器yum的使用

文章目录一、yum1、 什么是软件包和软件包管理器2、 什么是yum3、 Linux下软件安装的几种方式4、 使用yum的注意事项5、 yum的使用二、Linux / Windows下的数据互传1、 lrzsz的安装2、rzsz工具3、将Windows的数据传到Linux中4、将Linux的数据传到Windows中三、yum源配置文件1、…

linux下命令操作

grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索 eg: grep success * /*查找当前目录下面所有文件里面含有success字符的文件 14. kill 可以杀死某个正在进行或者已经是dest状态的进程 eg; ps ax 15. passwd 可以设置口令 16. history 用户用过的命令 eg: …

光源基础(1)——常见光源性能比对和好图像评价指标

机器视觉系统的核心部分是&#xff1a;&#xff08;1&#xff09;图像的采集 (如何得到一幅好的图片)和&#xff08;2&#xff09;图像的处理(如何找到最有效率、最准确的算法) 所有的信息均来源于图像&#xff0c;图像质量对整个视觉系统极为关键。 目前视觉行业中用于图像处理…

nltk报错punkt 缺失 Error Loading Error11004

问题描述 在运行NLTK的时候报错了&#xff0c;找不到punkt 文件&#xff0c;运行代码nltk.dowload(punkt也是没有用。 后面手动安装好了punkt后又缺了averaged_percentage_tragger _ 最后还是手动下载最可行 &#xff0c;报错截图如下, punkt Error 报错截图 averaged_percen…

小米8 SE刷机安卓13

警告&#xff1a;这些说明仅在您精确遵循每个部分和步骤时才有效。 失败后不要继续&#xff01;基本要求 在实际遵循说明之前&#xff0c;请至少通读一次说明&#xff0c;以避免因错过任何步骤而导致的任何问题&#xff01;确保您的计算机具有 adb 和fastboot。可以找到设置说明…

SpringSecurity(二十一)--OAuth2:实现资源服务器(中)实现带有JdbcTokenStore的黑板模式

一、前言 本章将实现授权服务器和资源服务器使用共享数据库的应用程序。这一架构方式被称为黑板模式。这一架构方式被称为黑板模式。为什么叫黑板模式呢&#xff1f;因为可以将其视为使用黑板管理令牌的授权服务器和资源服务器。这种颁发和验证令牌的方法的优点是消除了资源服…

_Linux (ipc命令)

ipcs 查看进程间通信资源/ipcrm 删除进程间通信资源 -m 针对共享内存的操作 ipcs -mipcrm -m shmid(例如下图的5) -q 针对消息队列的操作 -s 针对信号量的操作 -a 针对所有资源的操作 key 唯一值(共享内存名字)shmid 共享内存标识owner 共享内存拥有者名字perms 拥有者对共…

ISP-ASF

1. 概述 1.1 高频与低频区分&#xff1a; 如何区分图像的高频信息和低频信息&#xff0c;所谓高频就是该像素点与周围像素差异较大&#xff0c;常见于一副图像的边缘细节和噪声等&#xff1b;而低频就是该像素点与周围像素差异变化不大&#xff0c;一般体现为图像的平坦区&am…

关于使用pytorch-lightning版本过低的一些问题

今天run了一下这篇Aspect Sentiment Quad Prediction as Paraphrase Generation论文的代码&#xff0c;遇到的都是pytorch-lightning版本问题。 首先是安装pytorch-lightning pip3 install pytorch-lightning -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.…

HTML简单的个人博客网站 DIV学生网页设计作品 dreamweaver作业静态HTML网页设计模板 个人网页作业制作

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

卷起来了!熬夜学习阿里P8全彩版并发编程图册,涨薪就在眼前

并发编程可以总结为三个核心问题&#xff1a;分工、同步、互斥。 并发编程可以总结为三个核心问题&#xff1a;分工、同步、互斥。所谓分工指的是如何高效地拆解任务并分配给线程&#xff0c;而同步指的是线程之间如何协作&#xff0c;互斥则是保证同一时刻只允许一个线程访问共…

一种基于物理信息极限学习机的PDE求解方法

**作者|**PINN山里娃&#xff0c;作者主页 **研究方向|**物理信息驱动深度学习 不确定性 人工智能 偏微分方程 极限学习机 该作者聚焦深度学习模型与物理信息结合前沿研究&#xff0c;提供了一系列AI for science研究进展报告及代码实现&#xff0c;旨在实现物理信息驱动深度学…

动态规划PTA总结

0动态规划 最优子结构&&最值问题&&重叠子问题 ---> 动态规划 引用别人的文章 1数字三角形 1.1题目 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法&#xff0c;计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下)&am…

HTML+CSS美食静态网页设计——简单牛排美食餐饮(9个页面)公司网站模板企业网站实现

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

SAP MM 为UB类型的STO执行VL10B,报错-没有项目类别表存在(表T184L NL 0002 V)-之对策

SAP MM 为UB类型的STO执行VL10B&#xff0c;报错-没有项目类别表存在&#xff08;表T184L NL 0002 V)-之对策 业务人员创建好了UB类型的转储单据后&#xff0c;试图执行事务代码VL10B&#xff0c;未能成功&#xff0c;报错如下&#xff1a; 报错信息&#xff1a;4500000246 00…

【数据结构】——带头双向循环链表

目录 1.带头双向循环链表 2.链表实现 2.1可完成带头双向可循环链表节点的结构体 2.2申请一个可双向循环的节点 2.3初始化链表 2.4尾插 2.5尾删 2.6头插 2.7头删 2.8打印 2.9查找&#xff08;修改&#xff09; 2.10在pos之前插入x 2.11删除pos位置 2.12判空 2.13记…

Springboot图书馆管理系统毕业设计、Springboot图书借阅系统设计与实现 毕设作品参考

功能清单 【后台管理员功能】 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 会员列表&#xff1a;查看所有注册会员信息&#xff0c;支持删除 资讯分类&#xff1a;录入、修改、查看、删除资讯分类 录入…

【毕业设计源码】基于微信小程序的校园第二课堂(课外活动)管理系统

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等学习内容。 目录 一、项目介绍&#xff1a; 二、文档学习资料&#xff1a; 三、模块截图&#xff1a; 四、开发技术与运行环境&#xff1a; 五、代码展示&#xff1a; 六、数据库表截图&#xff1a…

【数据库原理及应用】——数据库设计(学习笔记)

&#x1f4d6; 前言&#xff1a;数据库的设计是指基于现有的数据库管理系统&#xff0c;针对具体应用构建适合的数据库逻辑模式和物理结构&#xff0c;并据此建立数据库及其应用系统&#xff0c;使之能有效地存储和管理数据&#xff0c;满足各类用户的应用需求。本章将介绍数据…

PaddleOCR简单使用教程-Windows

说明 最近公司业务需要用到图文识别类似的功能&#xff0c;所以查阅了许多工具之后选择用百度开源的PaddleOCR来进行使用 先看官方简介: 百度飞桨PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库&#xff0c;助力开发者训练出更好的模型&#xff0c;并应用落&#xff0c;支…