首页 > 其他分享 >逐月信息学 2024 提高组 #5

逐月信息学 2024 提高组 #5

时间:2024-07-02 16:53:57浏览次数:1  
标签:Node 信息学 const int mid 2024 逐月 淘汰 候选人

\(\color{black}\texttt{A. 党同伐异}\)

题目描述

有 \(N\) 个候选人,每个候选人都有一个不同的政治倾向 \(c_i\),进行 \(N-1\) 次选举。每轮选举中,所有未被淘汰的候选人给另一个没被淘汰的候选人。每一个候选人会将票投给 \(c_i\) 与自己差的绝对值最大的候选人。如果有多个这样的候选人,选择 \(c_i\) 更大的那个。每一轮中获得票最多的人淘汰,如果有多个这样的候选人,选择 \(c_i\) 更大的那个。问最后剩下哪个候选人。

思路

首先对 \(c_i\) 排序,因为每次淘汰的都是 \(c_i\) 最小或最大的人,所以剩余的候选人都是一个区间 \([l,r]\)。对于每一轮,二分最后一个 \(c_i - c_l\le c_r-c_i\) 的 \(i\),则 \([l,i]\) 内的人全部投票给 \(r\),\([i+1,r]\) 的人投票给 \(l\),比较一下即可。

代码

#include<bits/stdc++.h>
using namespace std;

const int MAXN = 1000001;

struct Node {
  int x, id;
}a[MAXN];

int n, s = 1, t;

int Binary_Search() {
  int l = s, r = t;
  for(; l < r; ) {
    int mid = (l + r + 1) >> 1;
    (a[mid].x - a[s].x <= a[t].x - a[mid].x ? l = mid : r = mid - 1);
  }
  return l;
}

int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n;
  t = n;
  for(int i = 1; i <= n; ++i) {
    cin >> a[i].x;
    a[i].id = i;
  }
  sort(a + 1, a + n + 1, [](const Node &a, const Node &b) { return a.x < b.x; });
  for(int i = 1; i < n; ++i) {
    int x = Binary_Search();
    (x - s + 1 < t - x ? s++ : t--);
  }
  cout << a[s].id;
  return 0;
}

总结

水题。

标签:Node,信息学,const,int,mid,2024,逐月,淘汰,候选人
From: https://www.cnblogs.com/yaosicheng124/p/18280160

相关文章

  • 2024年华为OD机试真题-分披萨-C++-OD统一考试(C卷D卷)
    2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述:“吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块。但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小......
  • 20240701
    https://cloud.tencent.com/developer/article/2018778HTMLDOMaddEventListener()方法document.addEventListener(event,function,useCapture)参数 描述event 必需。描述事件名称的字符串。注意:不要使用"on"前缀。例如,使用"click"来取代"onclick"。提示:所有HTML......
  • 2024.07.02【读书笔记】|医疗科技创新流程(第二章 创新创造 监管基础概述)
    监管基础概述监管基础涉及对医疗设备监管环境的理解,包括监管机构的组织结构、监管途径以及产品分类等。美国食品药品监督管理局(FDA)是全球领先的监管机构,其对医疗设备的监管流程为全球许多其他国家的监管机构所借鉴。FDA的背景和组织结构FDA是一个科学性的监管机构,负责保......
  • 2024.07.02【读书笔记】|医疗科技创新流程(第二章 创新创造 报销基础概述)
    报销基础概述在医疗领域,报销是指医疗设备、药品或服务在提供给患者后,由保险公司或支付机构对其进行补偿的过程。报销基础是医疗设备创新过程中的一个重要组成部分,它影响着产品的市场成功和可及性。报销的重要性医疗设备的报销直接影响到产品的市场接受度和销售潜力。如果......
  • 2024.7.1
    转盘锁可以把序列看出一个个元素,+1,-1看成转移,这就成了一个bfs还可以发现,\(a_0,a_1,a_2,a_3\tob_0,b_1,b_2,b_3=0,0,0,0\tob_0-a_0,b_1-a_1,b_2-a_2,b_3-a_3\)状态数只有\(10^4\)#include<bits/stdc++.h>usingnamespacestd;unord......
  • 2024.7.2
    党同伐异可以发现,每次只会是\(a_i\)最大或者\(a_i\)最小的人被淘汰,所以留下的肯定是从小到大排序后的一段区间。还可以发现一个单调性,越靠近左边就越不可能票左边,所以可以通过二分求出左右两边各被票了多少。#include<bits/stdc++.h>usingnamespacestd;const......
  • 2024.7.2 集训
    ###数位DP1.记录:1.是否顶上限;2.是否当前填了的都是前导$0$;3.当前位是否是从左往右数第一位。(2和3是两种做法,2是在Query里只调用一次DFS,3是在Query里枚举第一个非$0$位调用多次DFS)。2.记忆化的数组可以不用记所有内容。3.注意DFS返回时要返回res,而不是记......
  • 2024 Redis面试题
    Redis为什么快?1.纯内存KV操作        Redis的操作都是基于内存的,CPU不是Redis性能瓶颈,,Redis的瓶颈是机器内存和网络带宽。        在计算机的世界中,CPU的速度是远大于内存的速度的,同时内存的速度也是远大于硬盘的速度。redis的操作都是基于内......
  • 2024RabbitMQ面试题
    1、为什么使用消息队列?        其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么?        面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ......
  • CentOS 7基于开源项目制作openssh9.8p1 rpm二进制包修复安全漏洞CVE-2024-6387 ——
    2024年7月1日,官方发布openssh9.8版本,修复了安全漏洞CVE-2024-6387。此处主要基于开源项目https://github.com/boypt/openssh-rpms.git制作,之前也有写过类似的文章,这里就不再赘述。CentOS5/6/7基于开源项目制作openssh9.6p1rpm包——筑梦之路_centos6openssh9.6rpm-CSD......