题目链接

  我是怎么把“期末考试”在本地写成“假期计划”的

  qwq????

  本题把学生和卷子都排个序,按出成绩最晚时间三分。

  三分之后可以O(n)的时间统计答案,因为修改卷子出成绩的时间可以贪心计划。

  这里着重了解一下为什么可以三分。

  我们可以发现随着出成绩的时间推迟,学生的不偷税愉悦度肯定是越来越大的,换句话说这玩意单调递增。

  然而老师的不偷税度一定是越来越小的,换句话说这玩意单调递减。

  所以说这俩玩意加起来肯定跟二次函数长得特像。

  就可以三分啦。

  然而三分是用于实数定义域内的,我们这是整数怎么办?

  所以说我们可以三分取得一个较小的区间(我这里定的区间大小=8)

  然后对这个区间每一个值都求一遍求解就好啦

  

#include<cstdio>
#include<cstdlib>
#include<cctype>
#include<cstring>
#include<algorithm>
#define maxn 200020
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long a,b,c;
long long n,m;
long long q[maxn];
long long d[maxn]; double calc(long long x){
long long rest=,need=;
for(long long i=;i<=m;++i)
if(q[i]<=x) rest+=x-q[i];
else need+=q[i]-x;
double ans=;
if(a<b){
if(need<=rest) ans=a*need;
else ans=a*rest+b*(need-rest);
}
else ans=b*need;
for(long long i=;i<=n;++i)
if(d[i]<x){
//if(c==1e16) return 1e18;
ans+=(double)(x-d[i])*c;
}
return ans;
} int main(){
a=read(),b=read(),c=read();
n=read(),m=read();
for(long long i=;i<=n;++i) d[i]=read();
for(long long i=;i<=m;++i) q[i]=read();
sort(d+,d+n+);
sort(q+,q+m+);
long long l=d[],r=d[n];
while(r-l>){
long long mid=l+(r-l)/;
long long mmid=l+(r-l)*/;
if(calc(mid)<=calc(mmid)) r=mmid;
else l=mid;
}
long long ret=l;
for(long long i=l;i<=r;++i)
if(calc(i)<calc(ret)) ret=i;
printf("%.0lf",calc(ret));
return ;
}

【Luogu】P3745期末考试(三分)的更多相关文章

  1. [BZOJ4868][六省联考2017]期末考试(三分)

    4868: [Shoi2017]期末考试 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 964  Solved: 439[Submit][Status ...

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

    期末考试 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Input Output Samp ...

  3. BZOJ-1- 4868: [Shoi2017]期末考试-三分

    三分出成绩时间,假设当前出成绩最优,那么提前就会调增老师,增加不愉快度多于少等待的:如果延迟时间. 那么等待更久,增加的不愉快度也将多余少调增剩省下的. 于是:对于当前点,两边都是有单调性的. 就是说 ...

  4. BZOJ 4868 [Shoi2017]期末考试 ——三分 枚举

    考场上xjb三分过掉了. 然后$sdfzyhx$.$silvernebula$ $O(n)$虐掉了. 我还是太菜了 #include <cstdio> #include <cmath ...

  5. [luogu] P3745 [六省联考2017]期末考试 (贪心)

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

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

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

  7. 期末考试(正解:三分单峰函数 me~)

    好久没有水过杂题了! 今天lsc终于刚过了三道考试题来水杂题了! 期末考试 首先一看还是一脸mb(这是正常现象,毕竟我不像一些大神可以一眼出正解)然后我就被颓了标签,知道是三分单峰函数,但是自己实在是 ...

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

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

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

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

随机推荐

  1. BZOJ 4881: [Lydsy2017年5月月赛]线段游戏

    4881: [Lydsy2017年5月月赛]线段游戏 Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 164  Solved: 81[Submit][St ...

  2. [论文理解] Connectionist Text Proposal Network

    Connectionist Text Proposal Network 简介 CTPN是通过VGG16后在特征图上采用3*3窗口进行滑窗,采用与RPN类似的anchor机制,固定width而只预测an ...

  3. Talent Show

    6349: Talent Show 时间限制: 1 Sec  内存限制: 128 MB提交: 106  解决: 40[提交] [状态] [讨论版] [命题人:admin] 题目描述 Farmer Jo ...

  4. 2018.4.11 Java为何用xml做配置文件? 理由如下

    在Java世界里xml配置文件几乎是首选,xml有什么好的特性呢? 第一:xml能存储小量数据,仅仅是存储数据. 第二:xml可以跨平台,主流各种平台都对xml有支持, 真正的跨平台, 第三:xml读 ...

  5. 共享服务-FTP基础(二)

    续接上一篇 使用pam(Pluggable Authentication Modules)完成用户认证 pam_service_name=vsftpd pam配置文件:/etc/pam.d/vsftp ...

  6. NodeJS基础入门-Buffer

    Buffer.byteLength console.log(Buffer.byteLength('test')); console.log(Buffer.byteLength('我是C语言爱好者')) ...

  7. 《linux设备驱动开发详解》笔记——7并发控制

    linux中并发无处不在,底层驱动需要考虑. 7.1 并发与竞争 7.1.1 概念 并发:Concurrency,多个执行单元同时.并行执行 竞争:Race Condistions,并发的执行单元对共 ...

  8. GoF23种设计模式之行为型模式之命令模式

    一.概述 将一个请求封装为一个对象,从而可以使用不同的请求对客户端进行参数化.对请求排队或记录请求日志,以及支持撤销的操作. 二.适用性 1.当抽象出待执行的动作以参数化某个对象的时候. 2.当需要在 ...

  9. LeetCode(123) Best Time to Buy and Sell Stock III

    题目 Say you have an array for which the ith element is the price of a given stock on day i. Design an ...

  10. CodeForces - 899E Segments Removal (优先队列 + 链表)

    给定一个序列,每次从序列中找一个长度最大的元素相同的片段,删除它. 如果长度相同,删除最靠左边的那个片段. 问,需要删几次. 用链表处理删除片段.对于删除之后两边又能连成一个片段的那种情况,用set记 ...