B. Equalize by Divide - 思维+构造+排序
题意:
给定一个数组,可以进行任意多次以下操作:
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 - 思维+构造+排序相关推荐
- CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序)
CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序) 题目链接 题意:没咋看懂,它的题解是度数最高的分配后其他的随便分配. 我做的是,从子节点往上面,依次加,拓扑排序 ...
- 【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 ...
- CodeForces - 618B Guess the Permutation(思维+构造)
题目链接:点击查看 题目大意:先给出一个长度为n的序列ai,这个序列是1~n全排列中的其中一种,再给出一个n*n的矩阵,maze[i][j]=val代表min(ai,aj)=val,要求我们构造出原始 ...
- EntityFramework 动态构造排序 FuncIQueryableT, IOrderedQueryableT Dynamic
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- 【CodeForces - 798D】Mike and distribution (思维构造,贪心,黑科技)
题干: Mike has always been thinking about the harshness of social inequality. He's so obsessed with it ...
- 【51Nod - 1272 】最大距离 (思维,排序sort的空间优化)
题干: 给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对.每个元素和自己也可以组成一对.例如:{5, 3, 6, 3, 4, 2},可以组成1 ...
- Equalize the Array(思维)
题目链接: Equalize the Array 大致题意 给定一个长度为n的序列, 要求删除序列中尽可能少的元素, 使得剩余序列中出现的每一个元素数量相同. 解题思路 首先最终的序列, 一定是所有的 ...
- CodeForces - 1504C Balance the Bits(思维+构造)
题目链接:https://vjudge.net/problem/CodeForces-1504C 题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序 ...
- HDU - 5573 Binary Tree(思维+构造+二进制)
题目链接:点击查看 题目大意:给出一棵无限大的完全二叉树,每次给出一个 n 和一个 k ,要求从点 1 出发一直向下,找到一条长度为 k 的路径,对于路径上的点可以加上其编号,也可以减去其编号,需要构 ...
最新文章
- JDK(JAVA)的安装和配置
- python字符串常用方法_字符串常用方法
- 【渝粤题库】陕西师范大学229011 商业银行信贷管理Ⅰ 作业(高起专)
- 将你一张表的值覆盖_精准度可达亚米级,山东“北斗一张网”向社会免费开放...
- Ubuntu下The program 'python' can be found in the following packages:
- [转载] Python(析构函数)
- python关闭exe程序_Python打包exe程序一行简单的代码为什么就是那么多人不知道?...
- [全网最新最全]2020年国内和国外安卓应用上线上架应用市场渠道集合(关键词:apk,发布,Google Play,Android,详细步骤介绍流程)
- 一颗万能的PD协议芯片,最火的Type-C PD协议芯片“LDR6023“, 它是如何实现各种应用呢?
- python爬虫爬取视频时,实现实时进度条显示
- openwrt 无线基础知识介绍
- Moveit报错:Unable to identify any set of controllers that can actuate the specified joints
- python和c++同时订阅两个话题,在一个回调函数中处理
- Laravel + EasyWeChat 微信登陆功能
- 诡异的交换机CPU利用率超高
- CCNA-基础配置(1)
- VS code 豆沙绿护眼主题
- solidity 异常处理
- 授权注册-软件保护工具(1):聊聊流程
- 微信小程序多选组件封装
热门文章
- 交叉编译和交叉工具链
- php odbc连接池,修复︰ 使用连接池的 SQL Server ODBC 连接时设置的连接属性失败
- 2021阳城一中高考成绩查询,2017阳城一中录取分数线(附2017高考成绩喜报)
- 心血来潮,开通了博客
- InfoGAN 网络训练过程介绍
- Maven项目启动报错 org.apache.catalina.LifecycleException: Failed to start component,手动添加Oracle JDBC 驱动jar包
- 【云原生-DevOps】企业级DevOps平台搭建及技术选型-项目管理篇
- 基于jquery拆分姓名的方法[纯javascript版]
- android 如何获得附近的wifi,Android细节:扫描获取附近wifi,并以列表形式进行展示...
- ARM汇编指令立即数规范和判断