重排数列 网易2018校招

标签: 笔试 思维
9人阅读 评论(0) 收藏 举报

小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}。
牛博士给小易出了一个难题:
对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。
小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。 

输入描述:
输入的第一行为数列的个数t(1 ≤ t ≤ 10),
接下来每两行描述一个数列A,第一行为数列长度n(1 ≤ n ≤ 10^5)
第二行为n个正整数A[i](1 ≤ A[i] ≤ 10^9)



输出描述:
对于每个数列输出一行表示是否可以满足牛博士要求,如果可以输出Yes,否则输出No。

 

输入例子1:
2
3
1 10 100
4
1 2 3 4
输出例子1:
Yes
No








分别统计数组中4的倍数和2的倍数的个数,并且不要重复

我们考虑一种情况当数组中存在2时,我们是要考虑它的边界的,要在它和奇数边界插入一个四的倍数,所以但n-num(4的倍数)-num(2的倍数) <= num(四的倍数时,是可以满足调节条件的,过程就是往奇数之间插入4的倍数输出Yes,否则输出No)

还有一种情况就是没有2的时候,我们就不需要考虑奇数与偶数的边界了,只考虑奇数的个数-1与四的倍数的个数就行,所以当

n-num(4的倍数)-num(2的倍数)-1 <= num(4的倍数时)就输出Yes,否则输出No

#include <bits/stdc++.h>

using namespace std;
const int inf = 1e5 + 10;
int th[inf];
int main()
{
    int n, m;
    int num;
    int si;
    int er;
    scanf("%d", &num);
    int tr2;
    while(num --){
        si = 0;
        er = 0;
        tr2 = 0;
        scanf("%d", &n);
        for(int i = 0;i < n; i ++){
            int val;
            scanf("%d", &val);
            if(val == 2) tr2 ++;
            if(val % 4 == 0) si ++;
            else if(val % 2 == 0) er ++;
        }
       if(tr2){
            if(n - si - er <= si) cout << "Yes" << endl;
            else cout << "No" << endl;
       }else {
            if(n - si - er - 1 <= si) cout << "Yes" << endl;
            else cout << "No" << endl;
       }
    }
    return 0;
}


查看评论

网易2018校园招聘编程真题之重排数列

网易2018校园招聘编程真题之重排数列
  • jjl199299
  • jjl199299
  • 2017-09-21 18:33:38
  • 199

网易2018校招编程题集合8

小易非常喜欢拥有以下性质的数列: 1、数列的长度为n 2、数列中的每个数都在1到k之间(包括1和k) 3、对于位置相邻的两个数A和B(A在B前),都满足(A 例如,当n = 4, k = 7...
  • xiao_dondon
  • xiao_dondon
  • 2017-08-14 20:59:46
  • 1144

网易2018校招内推编程题集合:小易喜欢的数列 [python]

''' [编程题] 小易喜欢的数列 时间限制:1秒 空间限制:32768K 小易非常喜欢拥有以下性质的数列: 1、数列的长度为n 2、数列中的每个数都在1到k之间(包括1和k) 3、对于位置相邻的两个...
  • qq_34617032
  • qq_34617032
  • 2017-11-20 08:59:10
  • 108

网易2018校招内推编程题(Python描述)

总结一下网易2018内推的测试题,我看python的比较少,所以献上自己的low代码,都AC过的,大毛病应该没有,看来基础还是得抓紧练习! [编程题] 彩色的砖块时间限制:1秒空间限制:32768K ...
  • MrLevo520
  • MrLevo520
  • 2017-08-14 20:12:42
  • 1934

牛客网-网易2018校园招聘编程题真题集合-解题思路及源码

因为牛客网上的题目内容有版权声明,暂时就不复制题目了,需要的同学请自行登录牛客网获取。 1、魔法币 思路:分析题目中发现,魔法机器1只能产生奇数的魔法币,而魔法机器2只能产生偶数的魔法币。本题目采...
  • LieQueov
  • LieQueov
  • 2018-01-10 17:30:41
  • 314

网易2018校招笔试编程题

网易2018校招笔试编程题 网易2018校招笔试编程题 魔法币 相反数 魔法币 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易...
  • t6_17
  • t6_17
  • 2018-03-20 09:20:25
  • 714

网易2017校招笔试

1.藏宝图 题目描述 牛牛拿到了一个藏宝图,顺着藏宝图的指示,牛牛发现了一个藏宝盒,藏宝盒上有一个机关,机关每次会显示两个字符串s和t,根据古老的传说,牛牛需要每次都回答t是否是s的子序列。注意,...
  • y573724537
  • y573724537
  • 2016-08-03 10:37:39
  • 963

2018前端校招总结(拿到网易,美团offer)

引言可以说自己从找工作是从今年的3月份开始的,面试一直拉锯到现在,整整8个月,拿到了美团,网易,51信用卡,有赞的offer。面试的公司也不计其数,数了下知名的大概有,阿里巴巴,网易,网易游戏,美团,...
  • blueblueskyhua
  • blueblueskyhua
  • 2017-11-18 15:14:55
  • 2303

2018 网易校招题目

魔法币   小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。 魔法机器1:如果投...
  • qwq1503
  • qwq1503
  • 2018-03-01 00:08:44
  • 102

网易2018校园招聘Java工程师笔试卷

1.下面关于操作系统的进程说法正确的是? 只有使用了多进程才会发生死锁。 同一个进程的多个线程共享状况为堆共享,栈私有。 系统中进程数目越多,CPU利用率越高。 进程和线程都有独立的地址空间。...
  • javasvip
  • javasvip
  • 2017-09-10 22:04:13
  • 378
    个人资料
    持之以恒
    等级:
    访问量: 3248
    积分: 790
    排名: 6万+
    最新评论