BZOJ4868: [Shoi2017]期末考试
Submit: 936 Solved: 426
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
4 5
5 1 2 3
1 1 2 3 3
Sample Output
由于调整操作产生的不愉快度太大,所以在本例中最好的方案是不进行调整; 全部
5 的门课程中,最慢的在第 3 天出成绩;
同学 1 希望在第 5 天或之前出成绩,所以不会产生不愉快度;
同学 2 希望在第 1 天或之前出成绩,产生的不愉快度为 (3 - 1) * 2 = 4;
同学 3 希望在第 2 天或之前出成绩,产生的不愉快度为 (3 - 2) * 2 = 2;
同学 4 希望在第 3 天或之前出成绩,所以不会产生不愉快度;
不愉快度之和为 4 + 2 = 6 。
HINT
存在几组数据,使得C = 10 ^ 16
Source
黑吉辽沪冀晋六省联考
考场上还是静不下心来
总感觉这题是个dp
然后直接弃掉了。
其实还是挺简单的。
我们钦定一个试卷被批完的最晚时间
然后通过二分+前缀和计算出学生的不愉快度
再利用二分+后缀和计算出让最后一个被批完的试卷的时间满足要求的不愉快的
两者求和取最小值就可以了
这道题的关键是看出学生不满意度和试卷被批完的时间之间的单调关系
然后要想到枚举时间
#include<cstdio> #include<cmath> #include<algorithm> #define int unsigned long long using namespace std; const int MAXN=1e5+10; const int INF=1e19; inline int read() {char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f; } int A,B,C; int N,M; int t[MAXN],b[MAXN]; int sumt[MAXN],sumb[MAXN];//t的前缀与b的后缀 int limit,ans=INF; main() {#ifdef WIN32freopen("a.in","r",stdin);#endifA=read();B=read();C=read();N=read();M=read();for(int i=1;i<=N;i++) t[i]=read();for(int i=1;i<=M;i++) b[i]=read(),limit=max(limit,b[i]);sort(t+1,t+N+1);sort(b+1,b+M+1);for(int i=1;i<=N;i++) sumt[i]=t[i]+sumt[i-1];for(int i=M;i>=1;i--) sumb[i]=b[i]+sumb[i+1];for(int i=1;i<=limit;i++){int l=1,r=N,ans1=0,ans2=0,now=0;while(l<=r){int mid=l+r>>1;if(t[mid]<i) ans1=mid,l=mid+1;else r=mid-1;}l=1,r=M;while(l<=r){int mid=l+r>>1;if(b[mid]>i) ans2=mid,r=mid-1;else l=mid+1;}if(ans1!=0) now+=(ans1*i-sumt[ans1])*C;if(ans2!=0) {int need=(sumb[ans2]-(M-ans2+1)*i);if(A>=B) now+=need*B;else{int have=(ans2-1)*i-(sumb[1]-sumb[ans2]);if(have>=need) now+=need*A;else now+=have*A+(need-have)*B;}}ans=min(ans,now);}printf("%lld",ans);return 0; }
BZOJ4868: [Shoi2017]期末考试相关推荐
- BZOJ4868 Shoi2017期末考试(三分+贪心)
容易想到枚举最晚发布成绩的课哪天发布,这样与ti和C有关的贡献固定.每门课要么贡献一些调节次数,要么需要一些调节次数,剩下的算贡献也非常显然.这样就能做到平方级别了. 然后大胆猜想这是一个凸函数三分就 ...
- 【bzoj4868】[Shoi2017]期末考试 前缀和+暴力
题目描述 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待 ...
- 南昌大学计算机专业高数课本,南昌大学高等数学期末考试.pdf
南昌大学2008学年第二学期高等数学期末考试试卷 ( 3 15 ) 一. 填空题 每空 分,共 分 a 3i j 2k, b i 2j k, ( ...
- 清华《摸鱼学导论》开班啦!1000多学子在线摸鱼,无期末考试
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 浩楠 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 什 ...
- 四川大学java试题_四川大学2013年计算机(软件)学院Java语言程序设计期末考试试题B卷...
四川大学期末考试试题(闭卷) (2013 -2014学年第1学期) 课程号:课程名称: Java语言程序设计(B 卷)任课教师: 适用专业年级:学号:姓名: 一.单项选择题(本大题共20小题,每小题2 ...
- 计算机组装与维修是几级考试,计算机组装与维修期末考试试卷讲解学习.pdf
学而不思则惘,思而不学则殆 组装与维修期末考试试卷 一.选择题 1.下列显卡接口中,能在一根线缆上同时传输高清晰.全数字的音频和视频信号的是() A .DVI B.S-VIDEO C .D-SUB D ...
- python期末考试试题
python期末考试试题汇总 学习 2020-4-105589阅读 · 98喜欢 · 11评论 想个昵称憋一天 粉丝:370文章:31 关注 6.for i in range(2,n): if n%i ...
- 大一计算机期末考试高数试卷,高等数学大一期末试卷(A)及答案
清华大学,高等数学,期末,考试,复习 清华大学 2011-2012学年第 一 学期期末考试试卷(A卷) 及参考解答与评分标准 考试科目: 高等数学A(上) 考试班级: 2009级工科各班 考试方式: ...
- 滨州学院计算机自荐考试题型,滨州学院2004—2005学年第一学期期末考试计算机科学教育专业02级《数据库原理》试题及答案(3份,另附习题集)...
内容简介: 滨州学院2004-2005学年第一学期期末考试计算机科学教育专业02级<数据库原理>试题及答案(3份) <数据库原理>模拟试题一 一.选择题(每题1分,共5分) 1 ...
最新文章
- C++版数据结构继承关系图
- 模式识别之基础---常用分类算法特性归纳
- 【深度学习】去掉softmax后Transformer会更好吗?复旦华为诺亚提出SOFT:轻松搞定线性近似...
- 最简单的方式实现QML无边框窗口边缘拖动调整大小
- mysql自带命令使用教程_自用mysql自带命令实现数据库备份还原
- r k-means 分类结果_机器学习-Kmeans均值聚类算法(贪心学院)
- Git账号以及TortoiseGit配置
- 59 MM配置-后勤发票校验-维护税代码缺省值
- Vue本地图片循环加载显示不出来,vue img标签 :src地址拼接
- dateformat-参数表
- Git 图解、常用命令和廖雪峰教程笔记总结
- autojs 文件转base64
- 制作多媒体网页html代码,Director制作多媒体网页
- matlab加分号,matlab加分号
- JSON在JS中的应用
- 【转】常用单位换算表
- 戴尔游匣5577黑苹果EFI文件
- Android wear 睡眠追踪,为什么智能手表还不是最理想的睡眠追踪设备
- 9*9数独问题——深度搜索算法
- 深入理解空间金字塔池化(SPP,ASPP)