题意:

给出一个由n个数组成的数组a,这个数组的元素和为S,要求你找出一个由n个数字组成数组b,这个数组满足:

  • 数组中的每个数可以将他两边的数字整除或者被他两边的数字整除

  • 数组b中每个位置的数字减去数组a中相应位置的数字的绝对值和的二倍小于等于S

输出任意一个满足的数组b

思路:

考虑到1可以整除任何数字,那么可以让1作为桥梁,两边可以放置任意数字就可以构造出一个符合第一个要求的数组b,之后也可以按照这个思路进行构造。

现在我们可以想到,让较小的数字减去1,让较大的数字减去我们任意放置的数字,这样可以让最终求出来的和尽量小,那么这个任意放置的数字是多少的时候可以让最终求出来的和尽量小呢?让较大的数字减去他自己是最小的。

最后要考虑的是,我们应该把1这个跳板放在什么位置呢?我们可以按照数组a下表的奇偶统计他们和分别是多少,这样将1放在和较小的位置上。比如奇数位置上和较小,那么构造出来的b数组就是\(\{a_0, 1, a_2, 1, a_4, 1...\}\), 同理偶数。

AC代码:

#include <cstdio>
#include <cstring> typedef long long ll; const int maxn = 55; ll a[maxn]; int main () {
int T, n;
scanf ("%d", &T);
while (T--) {
scanf ("%d", &n);
ll t[2] = {0, 0};
for (int i = 0; i < n; i++) {
scanf ("%lld", &a[i]);
t[i & 1] += a[i];
}
for (int i = 0; i < n; i++) {
if (t[0] > t[1]) {
printf ("%lld%c", i & 1 ? 1 : a[i], " \n" [i == n - 1]);
} else {
printf ("%lld%c", i & 1 ? a[i] : 1, " \n" [i == n - 1]);
}
}
}
return 0;
}

CF1463-B. Find The Array的更多相关文章

  1. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  2. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  3. JavaScript Array对象

    介绍Js的Array 数组对象. 目录 1. 介绍:介绍 Array 数组对象的说明.定义方式以及属性. 2. 实例方法:介绍 Array 对象的实例方法:concat.every.filter.fo ...

  4. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  5. 关于面试题 Array.indexof() 方法的实现及思考

    这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...

  6. javascript之活灵活现的Array

    前言 就如同标题一样,这篇文章将会灵活的运行Array对象的一些方法来实现看上去较复杂的应用. 大家都知道Array实例有这四个方法:push.pop.shift.unshift.大家也都知道 pus ...

  7. 5.2 Array类型的方法汇总

    所有对象都具有toString(),toLocaleString(),valueOf()方法. 1.数组转化为字符串 toString(),toLocaleString() ,数组调用这些方法,则返回 ...

  8. OpenGL ES: Array Texture初体验

    [TOC] Array Texture这个东西的意思是,一个纹理对象,可以存储不止一张图片信息,就是说是是一个数组,每个元素都是一张图片.这样免了频繁地去切换当前需要bind的纹理,而且可以节省系统资 ...

  9. Merge Sorted Array

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  10. C++ std::array

    std::array template < class T, size_t N > class array; Code Example #include <iostream> ...

随机推荐

  1. ps 2020 下载

    一款极具实用价值的作图软件--ps,由于正版价格昂贵,所以这里分享破解版的资源.b话少说,下面是下载链接和安装步骤: 下载链接: 百度网盘链接:https://pan.baidu.com/s/1XPf ...

  2. [SSL]在线检查服务器HTTPS安全

    https://myssl.com/ SSL/TLS安全评估报告 https://www.ssllabs.com/ssltest/ SSL Server Test HTTPS开启工具(IIS) htt ...

  3. npm i 报错 'match' of undefined 错误以及删除node_modules失败

    简单粗暴的解决办法就是一个字'删', 1.先把node_modules给删了 手动删除的话,window系统经常会有部分删不了,说需要个权限什么的,直接用rimraf 就能解决 先安装npm inst ...

  4. migo的BAPI示例BAPI_GOODSMVT_CREATE

    1 *&---------------------------------------------------------------------* 2 *& Report Z_BAP ...

  5. 深入研究.NET 5的开放式遥测

    OpenTelemetry 介绍 OpenTelemetry是一种开放的源代码规范,工具和SDK,用于检测,生成,收集和导出遥测数据(指标,日志和跟踪),开放遥测技术得到了Cloud Native C ...

  6. 1.5V转5V的最少电路的芯片电路图

    PW5100满足1.5V转5V的很简洁芯片电路,同时达到了最少的元件即可组成DC-DC电路1.5V转5V的升压转换器系统. PW5100在1.5V转5V输出无负载时,输入效率电流极低,典型值10uA. ...

  7. python的Counter类

    python的Counter类 Counter 集成于 dict 类,因此也可以使用字典的方法,此类返回一个以元素为 key .元素个数为 value 的 Counter 对象集合 from coll ...

  8. python中json模块的使用

    Python自带json模块,它有loads.dumps.load和dump这4个功能,用于Json格式字符串和Python数据类型间进行转换. 一.json.loads() 把Json格式字符串解码 ...

  9. Redis 实战 —— 06. 持久化选项

    持久化选项简介 P61 Redis 提供了两种不同的持久化方法来将数据存储到硬盘里面. RDB(redis database):可以将某一时刻的所有数据都写入硬盘里面.(保存的是数据本身) AOF(a ...

  10. Java并发组件一之CountDownLatch

    使用场景: 一个或N个线程,等待其它线程完成某项操作之后才能继续往下执行.CountDownLatch描述的是,一个或N个线程等待其他线程的关系. 使用方法: 设CountDownLatch个数:Co ...