P1678 烦恼的高考志愿
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 烦恼的高考志愿的更多相关文章
- 洛谷 P1678 烦恼的高考志愿
题目背景 计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案.可是v神太忙了,身后还有一群小姑娘等着和他约会,于 ...
- P1678 烦恼的高考志愿(二分)
emmmm,我感觉我在解题的过程中还是有点吃亏的,因为,我知道是二分,只是大概知道怎么分,没有管这道到底是需要怎样的二分.然后在题上卡了很久. 思路:要找到填报学校的录取线x和自己的分数y的绝对值最小 ...
- 中国高考志愿填报与职业趋势分析 - ActiveReports 大数据分析报告
中国高考志愿填报与职业趋势分析 1977年中国高考制度恢复,重新开启了人才成长之门.40多年来,高考累积录取人数增长了27倍, 2.28亿人报名,9900万名高素质人才先后通过了中国高等教育的培养,高 ...
- 高考志愿填报:java 软件 程序员 目前的就业现状
大约在17年前,也就是2000年,学计算机专业的学生可以有大部分都进入本专业,并且就业非常容易.哪怕只会office套件,想找个工作也很简单.那时候学计算机就是最热门的行业. 那时候,搞Java的还是 ...
- 扒一扒IT大佬高考:马云数学1分考北大 李彦宏是状元
http://news.cnblogs.com/n/522622/ 高考今天正式拉开序幕,而像李彦宏.马云等 IT 大佬之前也都参加过高考,他们成绩又都是怎样的呢? 马化腾:放弃天文梦选择计算机 20 ...
- Python预测2020高考分数和录取情况可能是这样
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:打磨虾 “迟到”了一个月的高考终于要来了. 正好我得到了一份山东新高 ...
- Python预测2020高考分数和录取情况
“迟到”了一个月的高考终于要来了. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识. ...
- 思达index网站
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- IT菜鸟的生存指南(一)那些人才适合从事IT行业
此文献给那些刚误入IT行业的小菜鸟们,此文无法教你如何"当上CEO,迎娶白富美",那是电视剧情.现实IT行业里危机重重,竞争激励.这里教你的是如何生存.生存.生存- Just do ...
随机推荐
- android 获得存储设备状态
1.获取存储器总大小,可用大小 File path= Environment.getExternalStorageDirectory();StatFs fs = new StatFs(path.get ...
- sockaddr_in 转成string
string strAcceptIp = inet_ntoa(remoteAddr.sin_addr);
- 编译原理_P1002
. 词法分析 1.1 词法记号及属性 词法记号.模式.词法单元 记号名 词法单元列举 模式的非形式描述 if if 字符i,f for for 字符f,o,r relation < ...
- 自定义字段从BOM带入生产用料清单
自定义字段从BOM带入生产用料清单
- MTSP问题
问题描述:m个旅行商去旅游 n个城市,规定都必须从同一个出发点出发,而且返回原出发点,需要将所有的城市遍历完毕,每个城市只能游历一次,但是为了路径最短可以路过这个城市多次.这个就是多旅行商问题.是在T ...
- 6)HTML中a链接跳转地址怎么写
(1)看 thinkphp5的 附录--->助手函数 --->url 利用url进行书写地址跳转: 比如,你想跳转到cate控制器下的lst方法: <a href=" ...
- 20)PHP,数组的遍历
然后开始使用这2个函数和while循环结构来实现数组遍历: 形式: reset($arr1); while ( list ($key, $value ) = each( $arr1) ) //从数组$ ...
- rest framework-restful介绍-长期维护
############### django框架-rest framework ############### # django rest framework 框架 # 为什么学习这个res ...
- XRichText
XRichText是一个可以显示Html富文本的TextView.可以用于显示新闻.商品详情等场景.欢迎star.fork,提出意见. 使用 Gradle : compile 'cn.droidlov ...
- tarjan通俗易懂题
洛谷2661 https://www.luogu.org/problemnew/show/P2661 分析:求缩点后成环中,环大小最小的size #include<bits/stdc++.h&g ...