P1678题库链接:https://www.luogu.org/problem/P1678

难度:普及-

算法标签:模拟,贪心,排序,二分查找

1.朴素模拟 O(m*n) 得分30

先将m个学校的录取分数线排序,再用每名考生的成绩依次寻找第i个大学(若某个大学的录取分数线大于等于考生的成绩,即为第i个大学),该考生的成绩在第i-1个与第i个大学的录取分数线之间,用第i-1个和第i个大学的录取分数线分别减去该考生的成绩,取绝对值,因为要求出最小值,则用sum加上两者取绝对值后的较小值,最后sum即为答案

 #include <cstdio>
#include <algorithm>
using namespace std;
int m, n, a[], b[];
int main()
{
scanf("%d%d", &m, &n);
int sum = ;
for(int i = ; i < m; ++i)
scanf("%d", &a[i]);
for(int i = ; i < n; ++i)
scanf("%d", &b[i]);
sort(a, a + m);
for(int i = ; i < n; ++i)
{
for(int j = ; j < m; ++j)
{
if(b[i] <= a[j])
{
if(j == ) sum += a[] - b[i];
else sum += min(abs(a[j] - b[i]), abs(a[j - ] - b[i]));
break;
}
}
}
printf("%d\n", sum);
return ;
}

2.二分查找优化 O(log(m)*n) 得分100

利用二分查找来找到每名考生的第i个大学,其查找过程只需要log(m)次,可以解决时间复杂度较大的问题,其余与朴素算法同理

 #include <cstdio>
#include <algorithm>
using namespace std;
int m, n, a[], b[];
int main()
{
scanf("%d%d", &m, &n);
int sum = ;
for(int i = ; i < m; ++i)
scanf("%d", &a[i]);
for(int i = ; i < n; ++i)
scanf("%d", &b[i]);
sort(a, a + m);
for(int i = ; i < n; ++i)
{
int l = , r = m - ;
while(l < r)
{
int mid = (l + r) / ;
if(b[i] >= a[mid]) l = mid + ;
else if(b[i] < a[mid]) r = mid;
}
if(b[i] <= a[]) sum += a[] - b[i];
else sum += min(abs(a[l - ] - b[i]), abs(a[l] - b[i]));
}
printf("%d\n", sum);
return ;
}

P1678 烦恼的高考志愿的更多相关文章

  1. 洛谷 P1678 烦恼的高考志愿

    题目背景 计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案.可是v神太忙了,身后还有一群小姑娘等着和他约会,于 ...

  2. P1678 烦恼的高考志愿(二分)

    emmmm,我感觉我在解题的过程中还是有点吃亏的,因为,我知道是二分,只是大概知道怎么分,没有管这道到底是需要怎样的二分.然后在题上卡了很久. 思路:要找到填报学校的录取线x和自己的分数y的绝对值最小 ...

  3. 中国高考志愿填报与职业趋势分析 - ActiveReports 大数据分析报告

    中国高考志愿填报与职业趋势分析 1977年中国高考制度恢复,重新开启了人才成长之门.40多年来,高考累积录取人数增长了27倍, 2.28亿人报名,9900万名高素质人才先后通过了中国高等教育的培养,高 ...

  4. 高考志愿填报:java 软件 程序员 目前的就业现状

    大约在17年前,也就是2000年,学计算机专业的学生可以有大部分都进入本专业,并且就业非常容易.哪怕只会office套件,想找个工作也很简单.那时候学计算机就是最热门的行业. 那时候,搞Java的还是 ...

  5. 扒一扒IT大佬高考:马云数学1分考北大 李彦宏是状元

    http://news.cnblogs.com/n/522622/ 高考今天正式拉开序幕,而像李彦宏.马云等 IT 大佬之前也都参加过高考,他们成绩又都是怎样的呢? 马化腾:放弃天文梦选择计算机 20 ...

  6. Python预测2020高考分数和录取情况可能是这样

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:打磨虾 “迟到”了一个月的高考终于要来了. 正好我得到了一份山东新高 ...

  7. Python预测2020高考分数和录取情况

    “迟到”了一个月的高考终于要来了. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识. ...

  8. 思达index网站

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. IT菜鸟的生存指南(一)那些人才适合从事IT行业

    此文献给那些刚误入IT行业的小菜鸟们,此文无法教你如何"当上CEO,迎娶白富美",那是电视剧情.现实IT行业里危机重重,竞争激励.这里教你的是如何生存.生存.生存- Just do ...

随机推荐

  1. rsync+inotify实现文件实时同步

    一.相关组件简介 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器 ...

  2. macbook安装LightGBM

    一开始直接用pip install lightgbm 报错: OSError: dlopen(/opt/anaconda3/lib/python3.7/site-packages/lightgbm/l ...

  3. 快手为什么要全资收购Acfun?

    近日据媒体报道,快手已完成对「Acfun」以下简称A站的全资收购.未来A站仍将保持独立品牌和独立运营以及原有团队的独立发展.近年来,A站可谓命途多舛.相比隔壁B站风风光光顺利上市且成为真正的二次元大本 ...

  4. ibatis in语句参数传入方法

    第一种:传入参数仅有数组        <select id="GetEmailList_Test"  resultClass="EmailInfo_"& ...

  5. vue2.0学习之动画

    下载animate.css <transition name="v"> <div class="content">需要做动画的内容< ...

  6. python三目运算和递归的小练习

    应用前: ''' 递归的简单实现,输出i = 5的时候的结果 ''' def diGui(i = 0): i = i +1 if i >=5: return ("{0}大于等于5&qu ...

  7. CentOS-DHCP服务搭建

    title date tags layout CentOS6.5 DHCP服务器搭建 2018-08-26 Centos6.5服务器搭建 post 1.安装dhcp软件包 yum install -y ...

  8. [LC] 39. Combination Sum

    Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), fin ...

  9. EntityNotFoundException EntityExistException

    package me.zhengjie.common.exception; import org.springframework.util.StringUtils; import java.util. ...

  10. miracle|

    N-COUNT 奇迹;出人意料的事If you say that a good event is a miracle, you mean that it is very surprising and ...