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. 由于vue的for循环id并不严谨,提高id严谨性

    如果后台没有传入id,我们拿到的数据没有id修改等操作不方便,如何拿到id呢 https://github.com/dylang/shortid 提供唯一id 插件的引入和使用: <templa ...

  2. IPv4 寻址方式简介

    IPv4 支持三种不同类型的寻址模式.单播寻址方式.广播寻址方式和组播寻址方式.本章节我们来介绍这些寻址方式. 单播寻址方式 在这种模式下,数据只发送到一个目标主机.Destination Addre ...

  3. Kafka连接器建立数据管道

    1.概述 最近,有同学留言咨询Kafka连接器的相关内容,今天笔者给大家分享一下Kafka连接器建立数据管道的相关内容. 2.内容 Kafka连接器是一种用于Kafka系统和其他系统之间进行功能扩展. ...

  4. P6072 『MdOI R1』Path

    考虑我们有这样操作. 我们只要维护两点在子树内和两点在子树外的异或和即可. 前者可以类似于线段树合并的trie树合并. 后者有两种做法: 一种是把dfn序翻倍:然后子树补变成了一个区间最大异或问题,可 ...

  5. python判断字符串是否为空和null

    1.使用字符串长度判断 len(s==0)则字符串为空 test1 = '' if len(test1) == 0: print('test1为空串') else: print('test非空串,te ...

  6. 3个CSS动画库,比Animated还好用,让你的网站酷炫起来

    本文首发于https://www.1024nav.com/tools/css-animation-library 转载请注明出处 整理了日常前端开发中常用的css动画库,让你的网页动起来,可以在生成中 ...

  7. plyr包使用

    #-------------------------------- # plyr包使用# 建议直接保存为R文件到Rstudio中运行 #-------------------------------- ...

  8. kafka的安装及使用

    前言花絮 今天听了kafka开发成员之一的饶军老师的讲座,讲述了kafka的前生今世.干货的东西倒是没那么容易整理出来,还得刷一遍视频整理,不过两个比较八卦的问题,倒是很容易记住了. Q:为什么kaf ...

  9. JAVA写入TXT

    用java生成txt文件有两种方式: 1)是通过字符流(或字节流): 2)是直接调用PrintWriter类. 具体实现过程如下: 1)字符流(字节流) 代码如下: import java.io.Fi ...

  10. MapReduce05 框架原理OutPutFormat数据输出

    目录 4.OutputFormat数据输出 OutputFormat接口实现类 自定义OutputFormat 自定义OutputFormat步骤 自定义OutputFormat案例 需求 需求分析 ...