Content

你有一个长度为 \(n\) 的数组 \(a\),初始时,\(\forall i\in[1,n]\),\(a_i=i\)。

每次操作选择两个数 \(x,y(1\leqslant x,y\leqslant n,x\neq y)\),然后将 \(a_x\) 转换为 \(\left\lceil\dfrac{a_x}{a_y}\right\rceil\)。你需要执行不超过 \(n+5\) 次操作将数组 \(a\) 转换为一个包含 \(n-1\) 个 \(1\) 和 \(1\) 个 \(2\) 的数组。请给出一个构造方案。

数据范围:\(t\) 组数据,\(1\leqslant t\leqslant 10^3\),\(3\leqslant n,\sum n\leqslant 2\times 10^5\)。

Solution

不难想到的做法是,\(\forall i\in[3,n)\),每次将 \(a_i\) 转换为 \(\left\lceil\dfrac{a_i}{a_{i+1}}\right\rceil\)。可以证明,由于 \(a_i<a_{i+1}\),所以转换的结果必然为 \(1\)。然后我们再用剩下的 \(2\) 不断的去除 \(n\) 直到 \(n\) 变成 \(1\) 为止。操作数约为 \(n+\log n\),而 \(\log n\) 最大值显然会超过 \(5\),因此是不可行的。考虑如何优化这个操作方案。

我们发现,拿 \(\left\lceil\sqrt{n}\right\rceil\) 去除 \(n\) 最多仅需 \(2\) 次就可以将 \(n\) 变成 \(1\),因此,我们不妨把 \([\left\lceil\sqrt{n}\right\rceil,n]\),\([\left\lceil\sqrt{\left\lceil\sqrt{n}\right\rceil}\right\rceil,\left\lceil\sqrt{n}\right\rceil]\),\(\dots\) 等部分分成一段(注意 \(1,2\) 不能被分到任何一段中去),对于每一段,我们先把中间的所有元素全拿最后一个元素去除使它门全部都变成 \(1\),然后再去拿最左边的元素去除以最右边的元素 \(2\) 次,即可做到使一段里面的元素全部变成 \(1\)。

然后这道题目就可以过了。

Code

namespace Solution {
const int N = 2e5 + 7;
int n;
struct node {int x, y;};
vector<node> ans; ii checksq(int x) {
int sqrtx = sqrt(x);
return sqrtx * sqrtx == x;
} iv Main() {
MT {
read(n), ans.clear();
int cur = sqrt(n) + !checksq(n), precur = n, fl = 0;
while(precur > 2) {
F(int, i, cur + 1, precur - 1) ans.push_back((node){i, precur});
F(int, i, 1, 2) ans.push_back((node){precur, cur});
precur = cur, cur = sqrt(precur) + !checksq(precur);
}
int cnt = ans.size(); println(cnt);
F(int, i, 0, cnt - 1) printf("%d %d\n", ans[i].x, ans[i].y);
}
return;
}
}

CF1469D Ceil Divisions 题解的更多相关文章

  1. 1644 免费馅饼 题解(c++)(S.B.S.)

    1644 免费馅饼(巴蜀oj上的编号) 题面:          SERKOI最新推出了一种叫做“免费馅饼”的游戏.         游戏在一个舞台上进行.舞台的宽度为W格,天幕的高度为H格,游戏者占 ...

  2. POJ 2585 Window Pains 题解

    链接:http://poj.org/problem?id=2585 题意: 某个人有一个屏幕大小为4*4的电脑,他很喜欢打开窗口,他肯定打开9个窗口,每个窗口大小2*2.并且每个窗口肯定在固定的位置上 ...

  3. 「CF#554 div2」题解

    A 水题一道. 题目的大致意思就是:给你两个集合,求集合间有多少数对和是奇数. 题解,开\(4\)个桶后,求一个\(min\)就可以了. #include <bits/stdc++.h> ...

  4. 算法(第四版)C# 习题题解——3.1

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更方便的版本见:https ...

  5. HAOI2017 简要题解

    「HAOI2017」新型城市化 题意 有一个 \(n\) 个点的无向图,其中只有 \(m\) 对点之间没有连边,保证这张图可以被分为至多两个团. 对于 \(m\) 对未连边的点对,判断有哪些点对满足将 ...

  6. SCOI2016 Day2 简要题解

    「SCOI2016」妖怪 题意 有 \(n\) 只妖怪,每只妖怪有攻击力 \(\text{atk}\) 和防御力 \(\text{dnf}\) ,在环境 \((a, b)\) 下,它可以把攻击力和防御 ...

  7. SCOI 2015 Day1 简要题解

    「SCOI2015」小凸玩矩阵 题意 一个 \(N \times M\)( $ N \leq M $ )的矩阵 $ A $,要求小凸从其中选出 $ N $ 个数,其中任意两个数字不能在同一行或同一列, ...

  8. leetcode & lintcode 题解

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

  9. 洛谷NOIp热身赛题解

    洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...

随机推荐

  1. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  2. k8s-数据持久化存储卷,nfs,pv/pvc

    目录 数据持久化-储存卷 官方文档 存储卷类型 1.emptyDir 2.hostpath 3.pv/pvc(推荐使用) nfs官方文档 安装测试nfs pv/pvc管理nfs 官方文档 pv/pvc ...

  3. [TopCoder2014Final]FrozenStandings 解法探究

    https://vjudge.net/problem/TopCoder-13460 简要题意:给出 \(n\) 段从 \(1\) 到 \(n\) 编号的等长区间,保证区间的端点互不相同.区间可以选取其 ...

  4. ARC 119 补题记录

    这把感觉质量很高. \(E\) \(E\)比较简单所以先写个\(E\),考虑就一个置换操作来说改变的只有两端的值. 考虑\(|a_i - a_{i - 1}|\)变成区间,则我们考虑分类讨论,发现只有 ...

  5. Atcoder Grand Contest 038 E - Gachapon(Min-Max 容斥+背包)

    Atcoder 题面传送门 & 洛谷题面传送门 我竟然能独立做出 Ag 的 AGC E,incredible!更新了 Atcoder 做题难度上限( 首先按照套路 Min-Max 容斥,\(a ...

  6. P6973 [NEERC2016]List of Primes

    题目传送门. 题意简述:将质数集合的所有子集按照子集和为第一关键字,字典序为第二关键字从小到大排序,求最终形成的字符串的第 \(l\sim r\) 个字符. 在 cnblogs 内查看. 又是一道妙妙 ...

  7. docker_清华源国内的选择

    清华大学开源镜像官网:https://mirrors.tuna.tsinghua.edu.cn/ 前期: 在centos7 中的extras 源里面有docker 安装包,但是里面的安装包是比较旧的 ...

  8. 4G网络 LTE、 FDD 和TD网络格式区别

    1.LTE是long term evolution的缩写,即长期演进计划,是3GPP组织推出的移动通信3G技术向4G过渡的中间标准,并不是真正意义上的4G通信. 2.FDD是移动通信系统中使用的全双工 ...

  9. 巩固javaweb的第三十天

    显示用户输入信息 1 .代码 要想输出用户在上一个页面提交的信息,可以使用下面的代码: ${param.userid} ${param.username} ${param.userpass} ${pa ...

  10. binlog真的是银弹吗?有些时候也让人头疼

    大家好,我是架构摆渡人.这是实践经验系列的第三篇文章,这个系列会给大家分享很多在实际工作中有用的经验,如果有收获,还请分享给更多的朋友. binlog 用于记录用户对数据库操作的SQL语句信息,同时主 ...