题目链接:Codeforces Round #550 (Div. 3) – D

题意:给你一个数组,对于每一个数都可以有两种操作类型,问你通过最少几次操作之后数组里的元素都相同,题目保证这个数存在。

思路:题目说保证这个数存在,并且要求操作数最少,那么我们假设最后所有数都为x

  1. 一个数经过操作一肯定会变大,经过操作二肯定会变小
  2. 每个数经过最多一次操作之后一定可以变成x
  3. 那么对于n个数,假如x从没有出现过,那么所有数都需要进行操作,一共n次,那我们为什么不找已经出现过的呢,肯定小于n次,所以最后的x肯定是数组中出现次数最多的那个数,假设为y
  4. 对于每一个数,只要小于y一定要进行操作一,大于y一定要进行操作二
  5. 那么在y之前的数肯定要选他右边位置的数,在y之后的数肯定要选他左边的数
  6. 因为我们可以先把离y进的先变成y在往两边延伸。同时对于与y相邻的数来说:
    如果是在y左边:
    那么当y > ai时,需要进行操作一使ai变大 ai = ai+(ai-aj)那么我们选可以选aj为y,那么公式就变成了ai = ai+y-ai = y
    其他情况同理

样例:

#include<bits/stdc++.h>
using namespace std;int main()
{int n,mx = -1,p,flag;int a[200010],b[200010];memset(b,0,sizeof(b));cin >>  n;for(int i = 1; i <= n; i++){cin >> a[i];b[a[i]]++;if(b[a[i]] > mx){mx = b[a[i]];flag = a[i];p = i;}}int tot = 0;for(int i = 1; i <= n; i++){if(a[i] != flag) tot++;}cout << tot << endl;for(int i = p; i >= 1; i--){if(a[i] == flag) continue;else if(a[i] > flag) printf("2 %d %d\n",i,i+1);else printf("1 %d %d\n",i,i+1);}for(int i = p; i <= n; i++){if(a[i] == flag) continue;else if(a[i] > flag) printf("2 %d %d\n",i,i-1);else printf("1 %d %d\n",i,i-1);}return 0;
}

Equalize Them All(思维)相关推荐

  1. Equalize the Array(思维)

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

  2. Equalize the Remainders(思维)

    Equalize the Remainders You are given an array consisting of n integers a1,a2,-,an, and a positive i ...

  3. F. Equalize the Array(思维+前缀和)

    https://codeforces.com/contest/1490/problem/F 题意:问最小删除多少个数字使得剩下的数字出现次数都一样. 思路: 开始就是暴力枚举剩下一个次数,这样肯定要用 ...

  4. B. Equalize by Divide - 思维+构造+排序

    题意: 给定一个数组,可以进行任意多次以下操作: 1.选择第i和第j个数. 2.使a[i]=a[i]/a[j](向上取整). 不可以插入或者删减数组元素,求多少次使数组元素都相同,输出次数以及每次操作 ...

  5. 游戏ui切图,颜色通道_什么是ui通道设计,为什么如此重要

    游戏ui切图,颜色通道 Our approach to interface design has changed dramatically since the rise of mobile devic ...

  6. README-architect

    <后端架构师技术图谱> 更新于20180916 数据结构 队列 集合 链表.数组 字典.关联数组 栈 树 二叉树 完全二叉树 平衡二叉树 二叉查找树(BST) 红黑树 B,B+,B*树 L ...

  7. Equalize the Remainders(set二分+思维)

    You are given an array consisting of nn integers a1,a2,-,ana1,a2,-,an, and a positive integer mm. It ...

  8. 【CodeForces - 999D】Equalize the Remainders(思维,贪心)

    题干: You are given an array consisting of nn integers a1,a2,-,ana1,a2,-,an, and a positive integer mm ...

  9. Equalize the Array

    Equalize the Array 本题是来自于codeforces的一道1500分的题. 题目大意:给定一个数组,你需要让让他其中所有的元素出现的次数相等,途径是你可以删除任意个数字.问你需要最少 ...

最新文章

  1. php 四舍五入百位,php取整函数ceil,floor,round,intval函数的区别
  2. python源码笔记_python源码学习笔记(二)
  3. VMware 安装kali——linux
  4. 分享一篇关于饿了么的需求文档
  5. php varexport,PHP函数补完:var_export()
  6. Android中汉字转换为拼音
  7. amazon alexa 大陆安装调试
  8. python通过selenium模块模拟自动登录(以QQ空间为例)
  9. ctype.h 函数介绍
  10. 原生android ui设计,在拟物和扁平之间寻找平衡 原生安卓UI设计进化史
  11. 企业微信加密消息体_企业微信和个人微信有什么区别?个人微信可以接收企业微信消息吗?...
  12. EVE模拟器关联CRT与Wireshark
  13. 毕业设计-基于SSM医院信息管理系统
  14. linux全局查找字符串,linux全局搜索命令
  15. 微服务是去ESB总线、去中心化和分布式
  16. 安装TextPad后无“Compile Java” 等选项的解决办法
  17. 市场调研-全球与中国在线软件文档工具市场现状及未来发展趋势
  18. c语言将1元5角兑换成,编写c语言程序 假定有 5 角、 1 角、 5 分、 2 分和 1 分共 5 种硬币,在 给顾客找硬币时,一般都会尽可能...
  19. 输入输出电阻的个人理解
  20. 蓝海卓越计费管理系统 debug.php 远程命令执行漏洞

热门文章

  1. Microsoft.Office.Interop.Excel # Microsoft Excel xx.0 Object Library 引用
  2. word中使用mathtype编辑公式并添加序号
  3. 百度坐标转WGS84(即GPS)坐标
  4. 写作能赚钱吗?不,写作的首要目的,是认识自己
  5. 移动App性能测试包含哪些内容?App性能测试工具有哪些?
  6. 推荐一款免费的内网穿透工具ngrok
  7. 华安证券手机网上开户流程
  8. 算法的浅论:算法前序
  9. 利用记忆规律促进学生有效学习(记忆规律在教学中的运用)
  10. 在maven官网下载maven历史版本