来自FallDream 的博客,未经允许,请勿转载,谢谢。


有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布。第i位同学希望在第ti天或之前得知所.有.课程的成绩。如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生C不愉快度。对于第i门课程,按照原本的计划,会在第bi天公布成绩。有如下两种操作可以调整公布成绩的时间:1.将负责课程X的部分老师调整到课程Y,调整之后公布课程X成绩的时间推迟一天,公布课程Y成绩的时间提前一天;每次操作产生A不愉快度。2.增加一部分老师负责学科Z,这将导致学科Z的出成绩时间提前一天;每次操作产生B不愉快度。上面两种操作中的参数X,Y,Z均可任意指定,每种操作均可以执行多次,每次执行时都可以重新指定参数。现在希望你通过合理的操作,使得最后总的不愉快度之和最小,输出最小的不愉快度之和即可
n,m<=100000
 
很容易发现不愉快度是一个下凹的函数 所以可以三分= =
第一次写三分 莫名1A了
#include<iostream>
#include<cstdio>
#include<algorithm>
#define MN 100000
#define ll long long
using namespace std;
inline int read()
{
ll x = ; char ch = getchar();
while(ch < '' || ch > '') ch = getchar();
while(ch >= '' && ch <= ''){x = x * + ch - '';ch = getchar();}
return x;
} int n,m,t[MN+],s[MN+];
ll A,B,C,ans=1e18; ll calc(int tms)
{
ll sum=,left=,need=;
for(int i=;i<=n;++i) sum+=C*max(,tms-t[i]);
for(int i=;i<=m;++i)
if(s[i]>tms) need+=s[i]-tms;
else left+=tms-s[i];
if(B<A)return sum+need*B;
else if(left>=need) return sum+need*A;
else return sum+left*A+(need-left)*B;
} void Solve(int l,int r)
{
if(r-l<=)
{
for(int i=l;i<=r;++i) ans=min(ans,calc(i));
return;
}
int m1=(r-l+)/+l,m2=(r-l+)/*+l;
if(calc(m1)<calc(m2)) Solve(l,m2-);
else Solve(m1+,r);
} int main()
{
A=read();B=read();C=read();
n=read();m=read();int mx=;
for(int i=;i<=n;++i) mx=max(mx,(t[i]=read()));
for(int i=;i<=m;++i) mx=max(mx,(s[i]=read()));
Solve(,mx);
printf("%lld\n",ans);
return ;
}

[bzoj4868][Shoi2017]期末考试的更多相关文章

  1. bzoj4868: [Shoi2017]期末考试(三分法)

    4868: [Shoi2017]期末考试 题目:传送门 题解: Get到一个新姿势...三分法 一开始百度百科的时候下了一跳...中国...的根??? 学懂了之后其实运用起来就根二分差不多啊,不过证明 ...

  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. 利用python实现简单随机验证码

    #!/usr/bin/env python # -*- coding:utf-8 -*- import random temp ='' for i in range(6): num = random. ...

  2. AWS EMR上搭建HBase环境

    0. 概述 AWS的EMR服务为客户提供的托管 Hadoop 框架可以让您轻松.快 速.经济高效地在多个动态可扩展的 Amazon EC2 实例之间分发和处理 大量数据.您还可以运行其他常用的分发框架 ...

  3. 策略模式(Stratety)

    namespace StrategyPattern //策略模式 { /// <summary> /// 定义所以支持的算法的公共接口 /// </summary> abstr ...

  4. SecureCRT 7.3注册机激活

    SecureCRT是一款很好用的远程登陆管理工具 工具和注册机下载链接:http://pan.baidu.com/s/1jImWiMU 密码:0yox 以管理管运行keygen.exe(一定要以管理员 ...

  5. MVC Form 表单 提交 集合 及 复杂对象

    public class Customer { public string FName{get;set;} public Address address{get;set;} } public clas ...

  6. SpringMvc返回报文形式的控制-验证方法: JSON or HTML or XML

    首先,请求通过accept请求头声明了支持的返回格式 然后,框架根据该请求头和代码实现(注解)选择了对应的MessageConverter处理返回! 一.验证过程 1.返回html 1.1.请求组装 ...

  7. C++中const对象和非const对象调用成员函数问题

    一.类MyClass 二.主函数调用 三.结果

  8. nexus私服服务器意外关机后,本地不能下载jar包

    主要记录一个小问题. 今天要做个需求,需要读取word文档中的表格来在生成数据库建表语句. 读取word文档,要添加maven依赖 <dependency> <groupId> ...

  9. Intent 的两种主要使用方法

    首先建立两个activity界面 Activity1如下 public class MainActivity extends AppCompatActivity { private Button bt ...

  10. [洛谷P1197/BZOJ1015][JSOI2008]星球大战Starwar - 并查集,离线,联通块

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...