原题链接:

https://ac.nowcoder.com/acm/contest/9692

题意:

  • 这题就是说有m个嘉宾抢最多n个座位,抢不到心仪的座位就只能继续往前走,还得生气,怒气值就是这位嘉宾多走了几个座位。

题解:

  1. 要尽量让怒气值最小,也就是走过的距离最小,那肯定得啪的一下看到心仪座位后的空的座位嘉宾就马上坐下。
  2. 那么我们假设有无数个座位供嘉宾们坐下,记最后一个嘉宾坐下的位置为p,若p > n就说明座位不够,输出-1,否则输出怒气值的和。

实现:

  1. 先让这m个嘉宾的心仪座位(假设有四个)从小到大排序,分别记为m1,m2,m3,m4。座位靠前的先进去,啪的一下就坐下来了并且马上占据了这个座位,那很显然p的长度马上就变成了m1,并且下一个人至少从第p+1(或者说m1+1)个座位开始坐下。
  2. 如果m2 < p+1,m2嘉宾只能生[(p+1) - m2](当然此处是一)格的气并且坐下,此时p又得加一,下一个人最少只能坐p+2了。
  3. 如果m2 >= p+1,那m2嘉宾就可以坐到自己心仪的位置上了。如果这个时候最后一个座位p已经变成了m2,下一个人又只能坐p++(或者说m2++也行)了。
  4. 还记得我们对m排序了吗,也就说明一定有m3 >= m2,那我们就又可以重复刚刚的行为了耶!!
  5. 最后我们的m4嘉宾坐下来了,此时的p就是我们需要的座位个数。

代码:

#include <bits/stdc++.h>
//
using namespace std;
const int mod = 1e9+7;
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
#include <bits/stdc++.h>
using namespace std;
int main()
{long long n, m;long long num [100005];scanf("%lld %lld", &n, &m);for(int i = 1;i <= m;i++){scanf("%lld", &num[i]);}sort(num+1, num+m+1);long long p = 1;long long ans = 0;//参照了一下别人的代码//这个p就是座位,如果你的座位符合你就坐下去,同时这个座位已经被占了,p就得++//如果你座位已经被占了,你就得往后走一个位置再坐下for(int i = 1;i <= m;i++){if(p <= num[i]){p = num[i];p++;}else{ans += p - num[i];if(i < m) p++;}}//要是你比最多的座位还多,那你就没办法坐下了if(p > n) ans = -1;printf("%lld", ans);return 0;
}

2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G- 排解忧伤相关推荐

  1. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛 A.肥猪的钢琴床(dp动态规划)

    题目链接:https://ac.nowcoder.com/acm/contest/9692/A 题目描述 肥猪很喜欢睡懒觉,与此同时肥猪十分喜欢买各种各样神奇的床. 今天肥猪买了一张很宽很宽的钢琴床, ...

  2. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤

    2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤 题目链接 题目描述 猪猪参加小米赞助的icpc比赛之后惨遭打铁,为了排解忧伤,他开始观察嘉宾席. 嘉宾席是间隔为1,一字排 ...

  3. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)(详细题解)

    A 肥猪的钢琴床 思路: 我比赛的时候是没做出来,没往dp想,后来赛后看大佬代码才知道正解.我们发现对于每个点来说,都有两种情况,一种是取1留0,一种是取0留1,这正好是吻合了dp的想法,还有一种极端 ...

  4. 2020年广东工业大学第十届文远知行杯新生程序设计竞赛------母牛上树

    题目描述 母牛刚来到广东柱子大学时,就被学校的柱子深深地迷住.于是,母牛立下了flag,要在大学4年爬遍学校的柱子.同时,每个柱子顶部都有一个最佳的俯瞰学校的观测点.母牛在爬柱子时,会从柱子底爬到柱子 ...

  5. 牛客竞赛,GDDU第十届文远知行杯新生程序设计竞赛,摸鱼记(BDEIKL题解,补G,ACFHJ)

    碎碎念 比赛前看到评论区的提问 这个是干啥的,求解答,第一次参加 抽奖送牛客卫衣的 hhhh重在参与 然后[注意事项]里面写的 1 参赛形式:个人,面向零基础20级新生和部分有基础新生. 4 请各位教 ...

  6. 广东工业大学文远知行杯新生程序设计竞赛(重现赛)复习

    广东工业大学文远知行杯新生程序设计竞赛(重现赛) 1,F,亚子和燐子的game 思路: 我们可以维护一个堆(里面的数都相等,其实就是一个数),每扔进去一个数,就继续维持堆中数字相等(维持方法,就是谁大 ...

  7. 广东工业大学文远知行杯新生程序设计竞赛(牛客比赛)

    链接如下: 广东工业大学文远知行杯新生程序设计竞赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCPC/区域赛校 ...

  8. 【比赛回顾】2020广工文远知行杯新生程序设计竞赛(初赛)

    [比赛回顾]2020广工文远知行杯新生程序设计竞赛(初赛) 写在前面: 已经更新完除E和F以外的题解(因为这两道我没有时间做了,以后抽空做完后补充).可能我的题解并不是最优的,欢迎交流和讨论~ 文章目 ...

  9. 2018年广东工业大学文远知行杯新生程序设计竞赛 1001 文远知行β

    Problem Description "上一个国家的人真的是好心呢." 在山脉群之间,是一片宽广平坦的大地.被草木覆盖的绿意,顺着灰色的山间延伸. 摩托车(注:两轮的车子,尤其是 ...

最新文章

  1. javascript检测浏览器精简版
  2. UPC2710T放大电路功率增益测试
  3. 互联网协议 — TCP/IP 网络结构
  4. 完全搞懂傅里叶变换和小波(3)——泰勒公式及其证明
  5. 剑指offer:滑动窗口最大值
  6. Python Numpy学习手册(翻译自斯坦福大学 CS231n: Convolutional Neural Networks for Visual Recognition)
  7. 10个我最喜欢问程序员的面试问题
  8. 实战04_redis-cluster集群搭建
  9. .NET中GC的运行机制
  10. shell脚本中执行python脚本并接收其返回值的例子
  11. 设计模式的征途—7.适配器(Adapter)模式
  12. 为什么学霸不情愿帮助同学回答问题?
  13. oracle10g的系统视图(sys、system)
  14. 计算机后台打印机程序,打印机不能正常工作,提示'操作无法完成,后台打印程序服务没有运行'的解决方法...
  15. vbs的msgbox的恶搞文件
  16. Java异常 #Class path contains multiple SLF4J bindings.警告解决
  17. UG二次开发装配篇 添加/拖动/删除组件方法的实现
  18. 博客已死?移动互联网时代博客的价值
  19. 不查日历怎么知道任何一天是星期几
  20. mtatlas mysql_MHA-Atlas-MySQL高可用(下)

热门文章

  1. 绘制离散系统的直接模拟框图
  2. 【资源共享】好用的视觉软件Adaptive Vision Studio
  3. UTF-8 with BOM是什么意思
  4. rop和rop2的题目的wp
  5. 用Java基础来编写一个彩票中奖代码
  6. 台式计算机各种接口的名称,值得收藏的电脑接口大全(图文版)
  7. 形态分类行为中的气泡佯谬
  8. python给定一个整数n、判断n是否为素数_Python判断一个整数是否为素数
  9. 数字中台视角下的企业技术平台规划与实践
  10. 微信公众号菜单点击发送天气预报