4868: [Shoi2017]期末考试

题目:传送门


题解:

   Get到一个新姿势...三分法

   一开始百度百科的时候下了一跳...中国...的根???

   学懂了之后其实运用起来就根二分差不多啊,不过证明...不是很懂%大佬
   先喷一波自己:没看到最小值...一直维护的是一个上凸包ORZ

   然后知道了三分,计算答案的时候就直接用贪心嘛(比较一下那种不愉快度小就尽量用那种,统计一下当前解一共提前了和延后了多少天),不过因为没有操作可以单独推迟,所以少了一种情况。

   再打一波脸: 存在几组数据,使得C = 10 ^ 16(大视野写的真大)有这句话,longlong都爆了啊...加特判ORZ


代码:

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
LL A,B,C;
LL n,m;
LL a[],b[];
LL sol(LL x)
{
LL sum=;
if(A<B)
{
LL s1=,s2=;//表示需要推迟的总天数 和 提前的总天数
for(int i=;i<=m;i++)if(b[i]<x)s1+=(x-b[i]);
for(int i=;i<=m;i++)if(b[i]>x)s2+=(b[i]-x);
if(s1>=s2)sum+=(s2*A);//用操作1直接解决
else sum+=(s1*A+(s2-s1)*B);//操作1+操作2
}
else for(int i=;i<=m;i++)if(b[i]>x)sum+=(b[i]-x)*B;//因为没有操作是单独推迟的,所以少了一种情况
for(int i=;i<=n;i++)if(a[i]<x)sum+=(x-a[i])*C;
return sum;
}
int main()
{
scanf("%lld%lld%lld",&A,&B,&C);
scanf("%lld%lld",&n,&m);
for(int i=;i<=n;i++)scanf("%lld",&a[i]);
for(int i=;i<=m;i++)scanf("%lld",&b[i]);
LL l=,r=1e5,mid,mmid;
LL ans1,ans2,ans3,ans4;
ans1=ans2=ans2=ans4=;
if(C==1e16)
{
LL mmin=1e18;
for(int i=;i<=n;i++)mmin=min(mmin,a[i]);
printf("%lld\n",sol(mmin));
return ;
}
while(l+<r)
{
mid=(l+r)/,mmid=(mid+r)/;
ans1=sol(mid),ans2=sol(mmid);
if(ans1==ans2)l=mid,r=mmid;
else if(ans1<ans2)r=mmid;
else l=mid;
}
mid=(l+r)/,mmid=(mid+r)/;
ans1=sol(l),ans2=sol(r),ans3=sol(mid),ans4=sol(mmid);
printf("%lld\n",min(min(ans1,ans2),min(ans3,ans4)));
return ;
}

bzoj4868: [Shoi2017]期末考试(三分法)的更多相关文章

  1. [bzoj4868][Shoi2017]期末考试

    来自FallDream 的博客,未经允许,请勿转载,谢谢. 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在 ...

  2. BZOJ4868 [Shoi2017]期末考试 【三分 + 贪心】

    题目链接 BZOJ4868 题解 最后的答案决定于最后一个公布的成绩 显然这个是答案关于这个时间点是呈凸单调的 三分一下这个时间点 时间点固定,在这个时间前的人都会产生不愉快度,在这个时间前的科目可以 ...

  3. BZOJ4868 Shoi2017期末考试(三分+贪心)

    容易想到枚举最晚发布成绩的课哪天发布,这样与ti和C有关的贡献固定.每门课要么贡献一些调节次数,要么需要一些调节次数,剩下的算贡献也非常显然.这样就能做到平方级别了. 然后大胆猜想这是一个凸函数三分就 ...

  4. 并不对劲的bzoj4868: [Shoi2017]期末考试

    传送门-> 三分裸题. 发现答案只和最后一个科目公布成绩的时间有关. 科目公布成绩的时间越早,老师们的不愉快度越高,这个时间越晚,学生们的不愉快度越高. 它看上去像个单峰的,那么就三分好了. 判 ...

  5. NC20439 [SHOI2017]期末考试

    NC20439 [SHOI2017]期末考试 题目 题目描述 有 \(n\) 位同学,每位同学都参加了全部的 \(m\) 门课程的期末考试,都在焦急的等待成绩的公布.第 \(i\) 位同学希望在第 \ ...

  6. BZOJ4868:[SHOI2017]期末考试——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=4868 题目复制于洛谷:https://www.luogu.org/problemnew/show/P ...

  7. 【bzoj4868】[Shoi2017]期末考试 前缀和+暴力

    题目描述 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待 ...

  8. 【BZOJ4868】期末考试(整数三分)

    题意: 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天 或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待 ...

  9. bzoj 4868: [Shoi2017]期末考试

    Description 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天 或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有 ...

随机推荐

  1. 淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成逻辑计划

    淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成逻辑计划 SQL编译解析三部曲分为:构建语法树.生成逻辑计划.指定物理运行计划. 第一步骤,在我的上一篇博客淘宝数据库OceanBas ...

  2. php常用知识集锦

    php常用知识集锦 很多位置都有写好的代码,自己做项目的时候可以直接拿来用,而不用自己写,比如现在看到的菜鸟教程. 1.判断是否为空 empty($_POST["name"]) 2 ...

  3. elasticsearch源码分析之search模块(server端)

    elasticsearch源码分析之search模块(server端) 继续接着上一篇的来说啊,当client端将search的请求发送到某一个node之后,剩下的事情就是server端来处理了,具体 ...

  4. python中is与==的差别

    # is:比较的是两个对象的id值是否相等,# 也就是比较俩对象是否为同一个实例对象,# 是否指向同一个内存地址 # s = "alex"# abc = id(s) # 得到内存地 ...

  5. python对象 -- 组合

    详解组合:#Demo1class Game_kind: def __init__(self,nickname,sex,hp,ad): self.nickname = nickname self.sex ...

  6. sql导出到excel

    1.先查询数据ID,别名  导出到excel 2.增加标准名称,标识错误数据,导入sqlServer select distinct [StandardName] from [GMSOA].[dbo] ...

  7. ubuntu16.04 安装 go

    1,下载go安装包wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz 2,解压 sudo tar -C /usr ...

  8. Django开发之路 一(django安装并测试运行)

    安装Django与测试 1.虚拟环境的安装 一般来说Django的开发最好是在虚拟环境上进行,这样的好处是可以将不同的Django的项目的环境分割开来,相互不影响.比如说项目一用到Python2.x和 ...

  9. javascript中缓存

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Date.getTime() 结果为 NaN

    yyyy-MM-dd 格式的时间,部分浏览器环境下转换为 Date 对象后调用 getTime() 方法的结果为 NaN. 需要将 - 替换为 / var dateStr = '2019-01-01' ...