题解:洛谷P3745 期末考试(整数三分)

题目传送门

题目大意:给出 \(n\) 个同学期望出成绩的时间限制 \(a_i\) 和 \(m\) 个学科公布成绩的初始时间 \(t_i\) ,1个同学每多等一天就产生 C 的不愉快度。问通过一番操作后最小的不愉快度之和是多少?

操作有两种:

1.让学科 X 的发布时间晚1天,学科 Y 的发布时间早1天,产生A的不愉快度。

2.让学科 Z 的发布时间早1天,产生 B 的不愉快度。

思路:

设 \(t\) 表示规定的所有学科公布成绩的时间期限,\(y\) 表示满足第 \(t\) 天时出所有成绩的最小不愉快度之和。

则 \(y\) 关于 \(t\) 的函数是一个下凹函数(或者说形状类似一个开口向上的抛物线吧)

考虑三分出最低点(三分的部分就是板子了)

考虑怎么算 \(y\) ,由两部分组成:(1)\(t_i<t\) 的所有同学的不愉快度 \(res\)(2)操作的不愉快度

操作的不愉快度有两种,一种是 A 的移大补小,一种是 B 的暴力删。

首先明确一点:不关心大的到底补到了哪个小的,小的最终具体时间也不关心,因为同学的不愉快度只跟上限 \(t\) 有关。下面对操作的不愉快度进行分讨:

(1)若 \(B \leq A\) , 那肯定只使用 B

(2)若 \(A < B\) , 记所有小于 t 的学科的时间可以提供的补过来的空缺为 val1 , 大于 t 的学科超过 t 的总时间为 val2

当 \(val1 \geq val2\),全用 A 操作

当 \(val1 < val2\),进行 val1 次 A 操作,再进行 (val2-val1)次 B 操作

注意三分的边界和退出条件,算 \(res,val1,val2\) 时可以 \(O(N)\) 遍历 \(a_i\) 和 \(t_i\) ,也可以先排序后记个前缀和,三分的时候二分查找一下 分界点 \(t\) 再两个数组中的位置,时间复杂度 \(O(log_3N*log_2N)\)(感觉有点抽象,具体细节看代码吧~),注意特判C很大的情况,不然要开unsigned long long。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define F(i,l,r) for(int i=l;i<=r;++i)
const int N=1e5+5;
const ll M=1e16;
int n,m,A,B,a[N],t[N];
ll C,s1[N],s2[N];
inline ll suan(int x){//限制所有学科天数不超过x
ll w1=upper_bound(t+1,t+m+1,x)-t-1,w2=lower_bound(a+1,a+n+1,x)-a-1,
val1=x*w1-s2[w1],val2=(s2[m]-s2[w1])-(m-w1)*x,
res=(w2*x-s1[w2])*C;
//val1:<x的w1天里有多少空缺
//val2:超过x天的学科里要移动多少天过来(或者说理论上要多少空缺)
if(A<B){
if(val1>=val2) return A*val2+res;
else return A*val1+B*(val2-val1)+res;
}
return val2*B+res;
}
int main(){
scanf("%d%d%lld%d%d",&A,&B,&C,&n,&m);
F(i,1,n) scanf("%d",&a[i]); sort(a+1,a+n+1); F(i,1,n) s1[i]=s1[i-1]+a[i];
F(i,1,m) scanf("%d",&t[i]); sort(t+1,t+m+1); F(i,1,m) s2[i]=s2[i-1]+t[i];
if(C==1e16) return printf("%lld",suan(a[1])),0;//特判C很大的情况,不然要开unsigned long long
int l=0,r=t[m]+1,mid1,mid2;
while(l+2<r){
mid1=(2*l+r)/3,mid2=(l+2*r)/3;
if(suan(mid1)>=suan(mid2)) l=mid1;
else r=mid2;
}
printf("%lld",min({suan(l),suan(r),suan(l+1)}));
return 0;
}

题解:洛谷P3745 期末考试(整数三分)的更多相关文章

  1. 【Luogu】P3745期末考试(三分)

    题目链接 我是怎么把“期末考试”在本地写成“假期计划”的 qwq???? 本题把学生和卷子都排个序,按出成绩最晚时间三分. 三分之后可以O(n)的时间统计答案,因为修改卷子出成绩的时间可以贪心计划. ...

  2. 【题解】期末考试 六省联考 2017 洛谷 P3745 BZOJ 4868 贪心 三分

    题目传送门:这里是萌萌哒传送门(>,<) 啊♀,据说这题有个完全贪心的做法,但是要维护太多东西好麻烦的(>,<),于是就来口胡一发三分的做法. 思路很简单,假设我指定了一个x, ...

  3. 题解 洛谷P3745 【[六省联考2017]期末考试】

    这题有点绕,我写了\(2h\)终于搞明白了. 主要思路:枚举最晚公布成绩的时间\(maxt\),然后将所有公布时间大于\(maxt\)的课程都严格降为\(maxt\)即可. 在此之前,还要搞清楚一个概 ...

  4. 洛谷模拟NOIP考试反思

    洛谷模拟NOIP考试反思 想法 考了这么简单的试qwq然而依然emmmmmm成绩不好 虽然本次难度应该是大于正常PJ难度的但还是很不理想,离预估分数差很多qwq 于是就有了本反思嘤嘤嘤 比赛链接 原比 ...

  5. 洛谷 P3745 [六省联考2017]期末考试

    题目描述 有 nnn 位同学,每位同学都参加了全部的 mmm 门课程的期末考试,都在焦急的等待成绩的公布. 第 iii 位同学希望在第 tit_iti​ 天或之前得知所有课程的成绩.如果在第 tit_ ...

  6. 洛谷P3745 [六省联考2017]期末考试

    传送门 题解 //Achen #include<algorithm> #include<iostream> #include<cstring> #include&l ...

  7. 题解 洛谷P5018【对称二叉树】(noip2018T4)

    \(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...

  8. 题解 洛谷 P3396 【哈希冲突】(根号分治)

    根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...

  9. 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)

    题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...

  10. 题解-洛谷P4229 某位歌姬的故事

    题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...

随机推荐

  1. 这是DDD建模最难的部分(其实很简单)

      本文书接上回<为了落地DDD,我是这样"PUA"大家的> ,欢迎关注我的同名公众号. https://mp.weixin.qq.com/s/DjC0FSWY1bgJ ...

  2. 无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案[含ollama部署]

    无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案 1.Dify 简介 1.1 功能情况 Dify,一款引领未来的开源大语言模型(LLM)应用 ...

  3. springcloud线上发布超时方案之终极杀招:预热(测试用例)

    springcloud线上发布超时系列文章: springcloud线上发布超时之feign(ribbon饥饿加载) springcloud线上发布超时之grpc springcloud线上发布超时方 ...

  4. win7安装snmp服务

    一.安装SNMP Win7操作系统默认情况下是不安装SNMP服务的,今天讲解一下在Win7操作系统下安装SNMP,具体安装步骤如下: 打开控制面板--卸载程序 WIN7操作系统下安装SNMP的步骤如下 ...

  5. C#设计模式入门实战教程

    什么是设计模式 设计模式是对面向对象设计中反复出现的问题的解决方案.它们提供了被反复使用.多数人知晓的.经过分类编目的代码设计经验总结. 设计模式的作用 提高代码的可重用性:通过定义一套标准的解决方案 ...

  6. 神奇的C语言输出12天圣诞节歌词代码

    12天圣诞节程序怎样运行?1988 年,一个令人印象深刻且令人敬畏的 C 代码,代号为 xmas.c,在国际混淆 C 代码竞赛中获胜.该程序甚至比其输出的"压缩"类型还要小,代表了 ...

  7. 【计算机视觉前沿研究 热点 顶会】ECCV 2024中目标检测有关的论文

    整值训练和尖峰驱动推理尖峰神经网络用于高性能和节能的目标检测 与人工神经网络(ANN)相比,脑激励的脉冲神经网络(SNN)具有生物合理性和低功耗的优势.由于 SNN 的性能较差,目前的应用仅限于简单的 ...

  8. 一个SQL查询走索引时涉及到的最左前缀原则

    一个SQL查询走索引时涉及到的最左前缀原则 在讲解最左前缀原则之前,先复习一下MySQL索引的重要基础知识(下面都将基于InnoDB存储引擎下的索引规则) 索引类型 主键索引 InnoDB存储引擎使用 ...

  9. springCloud allibaba 微服务引言

    微服务篇: springcloud 常见组件有哪些 nacos 的服务注册表结构是怎样的 nacos 如何支撑阿里内部数十万服务注册压力 nacos 如何避免并发读写冲突问题 nacos 和eurek ...

  10. 使用Joi 完成JavaScript 数据校验

    无论是在前端还是后端(Node.js),数据校验都是一件不可或缺的事情,使用JOI让我们轻松的完成数据校验 > npm install joi 这里持续记录使用心得 版本:17.4.2 官网:h ...