题意:

  给定一个数组,可以进行任意多次以下操作:

  1.选择第i和第j个数。

  2.使a[i]=a[i]/a[j](向上取整)。

  不可以插入或者删减数组元素,求多少次使数组元素都相同,输出次数以及每次操作的两个下标i,j;如果无法实现输出-1.

分析:

  数组中存在1一定无法实现,或者数组元素都相等直接输出0。

可以将数组排序,使数组中每一个大于最小值的数a[i]都每次与最小的数a[0]进行操作直到a[i]<=a[0],如果数组元素仍然不相同则继续重复以上步骤。

代码:

#include <bits/stdc++.h>#define endl '\n'using namespace std;typedef pair<int,int> pii;
typedef long long ll;const int N=110;pii a[N];void solve()
{int t;cin>>t;while(t--){vector<pii> ans;int n;cin>>n;for(int i=0;i<n;i++){int x;cin>>x;a[i]={x,i+1};}sort(a,a+n);if(a[0].first==a[n-1].first){cout<<0<<'\n';continue;}if(a[0].first==1){cout<<-1<<'\n';continue;}while(1){int flag=0;for(int i=1;i<n;i++){if(a[i].first>a[0].first){flag=1;while(a[i].first>a[0].first){if(a[i].first%a[0].first==0) a[i].first/=a[0].first;else a[i].first=a[i].first/a[0].first+1;ans.push_back({a[i].second,a[0].second});}}}if(flag==0) break;else sort(a,a+n);}cout<<ans.size()<<'\n';for(int i=0;i<ans.size();i++) cout<<ans[i].first<<' '<<ans[i].second<<'\n';}
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);solve();
}

B. Equalize by Divide - 思维+构造+排序相关推荐

  1. CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序)

    CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序) 题目链接 题意:没咋看懂,它的题解是度数最高的分配后其他的随便分配. 我做的是,从子节点往上面,依次加,拓扑排序 ...

  2. 【Codeforces - 977D】Divide by three, multiply by two(思维构造)

    题干: Polycarp likes to play with numbers. He takes some integer number xx, writes it down on the boar ...

  3. CodeForces - 618B Guess the Permutation(思维+构造)

    题目链接:点击查看 题目大意:先给出一个长度为n的序列ai,这个序列是1~n全排列中的其中一种,再给出一个n*n的矩阵,maze[i][j]=val代表min(ai,aj)=val,要求我们构造出原始 ...

  4. EntityFramework 动态构造排序 FuncIQueryableT, IOrderedQueryableT Dynamic

    using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...

  5. 【CodeForces - 798D】Mike and distribution (思维构造,贪心,黑科技)

    题干: Mike has always been thinking about the harshness of social inequality. He's so obsessed with it ...

  6. 【51Nod - 1272 】最大距离 (思维,排序sort的空间优化)

    题干: 给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对.每个元素和自己也可以组成一对.例如:{5, 3, 6, 3, 4, 2},可以组成1 ...

  7. Equalize the Array(思维)

    题目链接: Equalize the Array 大致题意 给定一个长度为n的序列, 要求删除序列中尽可能少的元素, 使得剩余序列中出现的每一个元素数量相同. 解题思路 首先最终的序列, 一定是所有的 ...

  8. CodeForces - 1504C Balance the Bits(思维+构造)

    题目链接:https://vjudge.net/problem/CodeForces-1504C 题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序 ...

  9. HDU - 5573 Binary Tree(思维+构造+二进制)

    题目链接:点击查看 题目大意:给出一棵无限大的完全二叉树,每次给出一个 n 和一个 k ,要求从点 1 出发一直向下,找到一条长度为 k 的路径,对于路径上的点可以加上其编号,也可以减去其编号,需要构 ...

最新文章

  1. JDK(JAVA)的安装和配置
  2. python字符串常用方法_字符串常用方法
  3. 【渝粤题库】陕西师范大学229011 商业银行信贷管理Ⅰ 作业(高起专)
  4. 将你一张表的值覆盖_精准度可达亚米级,山东“北斗一张网”向社会免费开放...
  5. Ubuntu下The program 'python' can be found in the following packages:
  6. [转载] Python(析构函数)
  7. python关闭exe程序_Python打包exe程序一行简单的代码为什么就是那么多人不知道?...
  8. [全网最新最全]2020年国内和国外安卓应用上线上架应用市场渠道集合(关键词:apk,发布,Google Play,Android,详细步骤介绍流程)
  9. 一颗万能的PD协议芯片,最火的Type-C PD协议芯片“LDR6023“, 它是如何实现各种应用呢?
  10. python爬虫爬取视频时,实现实时进度条显示
  11. openwrt 无线基础知识介绍
  12. Moveit报错:Unable to identify any set of controllers that can actuate the specified joints
  13. python和c++同时订阅两个话题,在一个回调函数中处理
  14. Laravel + EasyWeChat 微信登陆功能
  15. 诡异的交换机CPU利用率超高
  16. CCNA-基础配置(1)
  17. VS code 豆沙绿护眼主题
  18. solidity 异常处理
  19. 授权注册-软件保护工具(1):聊聊流程
  20. 微信小程序多选组件封装

热门文章

  1. 交叉编译和交叉工具链
  2. php odbc连接池,修复︰ 使用连接池的 SQL Server ODBC 连接时设置的连接属性失败
  3. 2021阳城一中高考成绩查询,2017阳城一中录取分数线(附2017高考成绩喜报)
  4. 心血来潮,开通了博客
  5. InfoGAN 网络训练过程介绍
  6. Maven项目启动报错 org.apache.catalina.LifecycleException: Failed to start component,手动添加Oracle JDBC 驱动jar包
  7. 【云原生-DevOps】企业级DevOps平台搭建及技术选型-项目管理篇
  8. 基于jquery拆分姓名的方法[纯javascript版]
  9. android 如何获得附近的wifi,Android细节:扫描获取附近wifi,并以列表形式进行展示...
  10. ARM汇编指令立即数规范和判断