Content

给定一个长度为 \(n\) 的数列 \(a\),请将其重新排列,使得 \(\forall i\in[1,n-1]\),都有 \(4\mid (a_i\cdot a_{i+1})\),或者报告不存在。

数据范围:\(2\leqslant n\leqslant 10^5\),\(1\leqslant a_i\leqslant 10^9\)。

Solution

简单的分类讨论题。

我们不妨在读入的时候统计出奇数的数量 \(\textit{cnt}_1\) 和 \(4\) 的倍数的数量 \(\textit{cnt}_2\),然后:

i) 当 \(\textit{cnt}_1+\textit{cnt}_2\neq n\) 时,此时除了奇数和 \(4\) 的倍数以外,还有部分不是 \(4\) 的倍数的偶数,那么它们一定只可能是 \(2\) 的倍数而不可能是 \(2^k(k\geqslant 2)\) 的倍数。因此我们在这里考虑把这些数放到后面去,前面的留给奇数和 \(4\) 的倍数,以使得相邻两个数相乘得到 \(4\) 的倍数。

那么前面的奇数和 \(4\) 的倍数怎么放呢?我们可以考虑交叉放,即先放奇数再放 \(4\) 的倍数再放奇数……或者先放 \(4\) 的倍数再放奇数再放 \(4\) 的倍数……那么最优方案下先放哪个呢?不难发现如果先放奇数的话,最坏情况下当 \(\textit{cnt}_1=\textit{cnt}_2\) 时,是可以构造出合法的排列的。否则就不行。

因此,在 i) 的情况下,只需要满足 \(\textit{cnt}_1\leqslant\textit{cnt}_2\),就能够构造出合法的排列。

ii) 当 \(\textit{cnt}_1+\textit{cnt}_2=n\) 时,此时最坏的情况无非就是 \(\textit{cnt}_1=\textit{cnt}_2+1\) 时,先全部放奇数,然后再在每两个奇数的中间放 \(4\) 的倍数,即可满足要求。

因此,在 ii) 的情况下,只需要满足 \(\textit{cnt}_1\leqslant\textit{cnt}_2+1\),就能够构造出合法的序列。

根据其实际情况分类判断一下就可以了。

Code

int n, a[100007], cntodd, cntfour;

int main() {
n = Rint;
F(int, i, 1, n) {
a[i] = Rint;
if(a[i] % 2) cntodd++;
else if(!(a[i] % 4)) cntfour++;
}
return cntodd <= cntfour || (cntodd + cntfour == n && cntodd - cntfour <= 1) ? Yes : No, 0;
}

AT2686 [ARC080A] 4-adjacent 题解的更多相关文章

  1. 算法与数据结构基础 - 图(Graph)

    图基础 图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图.依据不同维度,图可以分为有向图/无向图.有权图/无权图.连通图/非连通图.循环图/非循环图,有向图中的顶点具有入度/出度的概念. 面 ...

  2. 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...

  3. POJ 3279(Fliptile)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定长宽的黑白棋棋盘摆满棋子,每次操作可以反转一个位置和其上下左右共五个位置的棋子的颜色,求要使用最少翻转次数将所有棋子反转为黑 ...

  4. “玲珑杯”ACM比赛 Round #12题解&源码

    我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧!                                     A ...

  5. usaco 2002 月赛 Fiber Communications 题解

    Description Farmer John wants to connect his N (1 <= N <= 1,000) barns (numbered 1..N) with a ...

  6. Adjacent Bit Counts(01组合数)

    Adjacent Bit Counts 4557 Adjacent Bit CountsFor a string of n bits x 1 , x 2 , x 3 ,..., x n , the a ...

  7. 题解——ATCoder AtCoder Grand Contest 017 B - Moderate Differences(数学,构造)

    题面 B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Stat ...

  8. leetcode & lintcode 题解

    刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度 ...

  9. LeetCode All in One题解汇总(持续更新中...)

    突然很想刷刷题,LeetCode是一个不错的选择,忽略了输入输出,更好的突出了算法,省去了不少时间. dalao们发现了任何错误,或是代码无法通过,或是有更好的解法,或是有任何疑问和建议的话,可以在对 ...

随机推荐

  1. N皇后问题解法

    // // Created by Administrator on 2021/8/5. // #ifndef C__TEST01_NQUEENS_HPP #define C__TEST01_NQUEE ...

  2. 洛谷 P7163 - [COCI2020-2021#2] Svjetlo(树形 dp)

    洛谷题面传送门 神仙级别的树形 dp. u1s1 这种代码很短但巨难理解的题简直是我的梦魇 首先这种题目一看就非常可以 DP 的样子,但直接一维状态的 DP 显然无法表示所有情况.注意到对于这类统计一 ...

  3. 洛谷 P6072 -『MdOI R1』Path(回滚莫队+01-trie)

    题面传送门 又是 ix35 神仙出的题,先以 mol 为敬 %%% 首先预处理出根节点到每个点路径上权值的异或和 \(dis_i\),那么两点 \(a,b\) 路径上权值的异或和显然为 \(dis_a ...

  4. 【GS文献】基因组选择在植物分子育种应用的最新综述(2020)

    目录 1. 简介 2. BLUP类模型 3. Bayesian类模型 4. 机器学习 5. GWAS辅助的GS 6. 杂交育种 7. 多性状 8. 长期选择 9. 预测准确性评估 10. GS到植物育 ...

  5. WSL + MobaXterm 取代虚拟机

    windows子系统安装默认C盘,这里我们直接下载安装文件安装在我们指定的目录. 1.先去官方网站下载安装文件:https://docs.microsoft.com/zh-cn/windows/wsl ...

  6. 几种常用JavaScript设计模式es6

    设计模式分类(23种设计模式) 创建型 单例模式 原型模式 工厂模式 抽象工厂模式 建造者模式 结构型 适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式 行为型 观察者模式 迭 ...

  7. 容器之分类与各种测试(四)——multimap

    multiset和multimap的具体区别在于,前者的key值就是自己存储的value,后者的key与value是分开的不相关的. 例程 #include<stdexcept> #inc ...

  8. HttpClient连接池设置引发的一次雪崩

    事件背景 我在凤巢团队独立搭建和运维的一个高流量的推广实况系统,是通过HttpClient 调用大搜的实况服务.最近经常出现Address already in use (Bind failed)的问 ...

  9. Git上项目代码拉到本地方法

    1.先在本地打开workspace文件夹,或者自定义的文件夹,用来保存项目代码的地方. 2.然后登陆GitHub账号,点击复制项目路径 3.在刚才文件夹下空白处点击鼠标右键,打开Git窗口 4.在以下 ...

  10. mysql explain using filesort

    创建表,字段tid上无索引(mysql 5.7) CREATE TABLE `test` ( `tid` int(11) DEFAULT NULL, `tname` varchar(12) DEFAU ...