4868: [Shoi2017]期末考试

题目:传送门


题解:

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

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

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

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

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


代码:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. typedef long long LL;
  8. LL A,B,C;
  9. LL n,m;
  10. LL a[],b[];
  11. LL sol(LL x)
  12. {
  13. LL sum=;
  14. if(A<B)
  15. {
  16. LL s1=,s2=;//表示需要推迟的总天数 和 提前的总天数
  17. for(int i=;i<=m;i++)if(b[i]<x)s1+=(x-b[i]);
  18. for(int i=;i<=m;i++)if(b[i]>x)s2+=(b[i]-x);
  19. if(s1>=s2)sum+=(s2*A);//用操作1直接解决
  20. else sum+=(s1*A+(s2-s1)*B);//操作1+操作2
  21. }
  22. else for(int i=;i<=m;i++)if(b[i]>x)sum+=(b[i]-x)*B;//因为没有操作是单独推迟的,所以少了一种情况
  23. for(int i=;i<=n;i++)if(a[i]<x)sum+=(x-a[i])*C;
  24. return sum;
  25. }
  26. int main()
  27. {
  28. scanf("%lld%lld%lld",&A,&B,&C);
  29. scanf("%lld%lld",&n,&m);
  30. for(int i=;i<=n;i++)scanf("%lld",&a[i]);
  31. for(int i=;i<=m;i++)scanf("%lld",&b[i]);
  32. LL l=,r=1e5,mid,mmid;
  33. LL ans1,ans2,ans3,ans4;
  34. ans1=ans2=ans2=ans4=;
  35. if(C==1e16)
  36. {
  37. LL mmin=1e18;
  38. for(int i=;i<=n;i++)mmin=min(mmin,a[i]);
  39. printf("%lld\n",sol(mmin));
  40. return ;
  41. }
  42. while(l+<r)
  43. {
  44. mid=(l+r)/,mmid=(mid+r)/;
  45. ans1=sol(mid),ans2=sol(mmid);
  46. if(ans1==ans2)l=mid,r=mmid;
  47. else if(ans1<ans2)r=mmid;
  48. else l=mid;
  49. }
  50. mid=(l+r)/,mmid=(mid+r)/;
  51. ans1=sol(l),ans2=sol(r),ans3=sol(mid),ans4=sol(mmid);
  52. printf("%lld\n",min(min(ans1,ans2),min(ans3,ans4)));
  53. return ;
  54. }

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. 初学ToggleButton 点击button,更换button背景图片;再次点击,恢复之前背景图

    上方的图标,R.drawable.register_checked  是选中图片 下方的图标,   R.drawable.register_unchecked 是未选中图片 默认是上方的选中效果.点击 ...

  2. PHP7添加swoole扩展

    swoole需要php版本在7.0以上. 1.进入php目录中的bin目录下,通过pecl指令进行安装. cd /usr/local/php7/bin [root@localhost bin]# pw ...

  3. 深入理解Oracle索引(1):INDEX SKIP SCAN 和 INDEX RANGE SCAN

    ㈠ Index SKIP SCAN                当表有一个复合索引,而在查询中有除了索引中第一列的其他列作为条件,并且优化器模式为CBO,这时候查询计划就有可能使用到SS       ...

  4. [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)

    题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_ ...

  5. POJ 1155 树形DP

    题意:电视台发送信号给很多用户,每个用户有愿意出的钱,电视台经过的路线都有一定费用,求电视台不损失的情况下最多给多少用户发送信号. 转自:http://www.cnblogs.com/andre050 ...

  6. pgpool中定义的数据库节点及pgpool支持的复制模式

    /* * The first DB node id appears in pgpool.conf or the first "live" DB * node otherwise.  ...

  7. Mysql-slowlog

    MySQL慢查询日志是MySQL提供的一种日志记录,用来记录执行时长超过指定时长的查询语句,具体指运行时间超过 long_query_time 值的 SQL 语句,则会被记录到慢查询日志中. long ...

  8. Mysql 分库分表方案

    0 引言 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. mysql中有一种机制是表锁定和行锁 ...

  9. Git diff 代码比较的高级技巧

    Git diff 代码比较的高级技巧 作者:offbye 出处:http://blog.csdn.net/offbye/article/details/6592563 Git是使用branch来管理不 ...

  10. web前后端安全问题

    1. 安全问题主要可以理解为以下两方面: 私密性:资源不被非法窃取和利用,只有在授权情况下才可以使用: 可靠性:资料不会丢失.损坏及篡改: 2. web安全的层面 代码层面:写代码时保证代码是安全的, ...