[BZOJ4868][Shoi2017]期末考试
来源:互联网 发布:获取svn数据java接口 编辑:程序博客网 时间:2024/06/06 09:45
上午做了他们省选的模拟赛
感觉好累啊,没啥状态
这题属于签到题,解法好想也好打,没心情拍,不过最后也算是签到成功了吧
题目和学生可以分开来讨论,对两个数组分别排序
从小到大爆枚最晚出分的时间
分别算出等待的时间和调度的花费更新答案
注意B特别大的时候B一定不会作为最优解,直接特判掉不要算出来,那个值特别大会大于
时间复杂度取决于排序的复杂度,使用基数排序可以做到
#include <bits/stdc++.h>#define INF (1LL<<62)#define N 200050using namespace std;typedef long long LL;int t[N],b[N],n,m,tp,x,y;LL A,B,C,sum;inline int rd() {int r;scanf("%d",&r);return r;}void init() { A = rd(), B = rd(), C = rd(); n = rd(), m = rd(); for (int _=1;_<=n;_++) t[_] = rd(); sort(t+1,t+n+1); for (int _=1;_<=m;_++) b[_] = rd(); sort(b+1,b+m+1);}LL calc(LL _, LL x, LL fr) { LL dmd = sum-fr-_*(m-x), res = min(_*x-fr, dmd); if (B>N) return res>=dmd ? dmd*A : INF; return min(1LL*dmd*B, 1LL*res*A+1LL*(dmd-res)*B);}void solve() { tp = t[n]; x = 1; y = 1; for (int _=1;_<=m;_++) sum += b[_]; LL S=0LL, fr=0LL, ans=INF; for (int _=1;_<=tp;_++) { while (x<=n && t[x] < _) S += t[x++]; while (y<=m && b[y] < _) fr += b[y++]; LL cur = calc(_, y-1, fr); ans = min(ans, 1LL * C * ( 1LL*(x-1)*_-S ) + cur); } cout << ans << endl;}int main() { init(); solve(); return 0;}
阅读全文
0 0
- BZOJ4868 [Shoi2017]期末考试
- [BZOJ4868][Shoi2017]期末考试
- BZOJ4868: [Shoi2017]期末考试
- bzoj4868&&5213jzoj[Shoi2017]期末考试 枚举或三分
- 【SHOI&SXOI2017】bzoj4868 期末考试
- 4868: [Shoi2017]期末考试
- BZOJ 4868 [Shoi2017] 期末考试
- BZOJ 4868: [Shoi2017]期末考试 (三分法)
- bzoj 4868: [Shoi2017]期末考试 三分答案
- 洛谷 P3745 [六省联考2017]期末考试(bzoj P4868 [Shoi2017]期末考试)
- 期末考试
- 期末考试
- 期末考试
- 期末考试????
- 期末考试
- 期末考试......
- 期末考试
- 期末考试
- VR社交应用程序vTime支持Oculus Touch
- 组件的启动脚本
- scala class的三个分类
- Web测试自动化的Selenium组件
- Java基础知识 四 集合
- [BZOJ4868][Shoi2017]期末考试
- Java基础
- 线性筛素数
- 使用Vue.js和Laravel构建的开源博客。
- 欧拉线性筛
- PHP7革新与性能优化
- MCI接口实现音频左右声道控制
- 推荐:openinstall让用户提前一步体验你的App核心功能
- vue.js豆瓣书网站