【GDOI2018模拟7.9】期末考试
题目
分析
如果我们确定最后的成绩公布日期t,那么就可以贪心来求出最小的不愉快度:
首先,那些希望的日期小于t的同学,会产生不愉快度,这个用前缀和可以来处理,
对于课程,我们要将大于t的课程全部拖到t,
可以考虑有A、B操作,
首先我们知道,操作的总数是固定的
当A>=B时,尽量选B会最优,于是,对于将大于t的课程全部用B操作拖到t。
当A<=B时,尽量选A会最优,那么由于A有数量限制,所以剩下的选B。
这些就可以用前缀和来处理(笨菜鸟无知,用了权值线段树)。
这个贪心的时间复杂度为O(1)。
所以枚举t即可。
另:
由于t的最优值为单峰函数,也可以用三分。
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const long long maxlongint=2147483647;
const int mo=1000000007;
const int N=100000;
using namespace std;
long long ss[N*6][2],a,b,c,si[N*6][2],ans=maxlongint*maxlongint;
int n,m,tot;
void put(int v,int l,int r,int x,int y)
{
if(l==r)
{
si[v][y]++;
ss[v][y]+=x;
return;
}
int mid=(l+r)/2;
if(x<=mid) put(v*2,l,mid,x,y);
else put(v*2+1,mid+1,r,x,y);
ss[v][y]=ss[v*2][y]+ss[v*2+1][y];
si[v][y]=si[v*2][y]+si[v*2+1][y];
}
long long find(int v,int l,int r,int x,int y,int z)
{
if(x>y) return 0;
if(l==x && y==r)
{
return ss[v][z];
}
int mid=(l+r)/2;
if(y<=mid) return find(v*2,l,mid,x,y,z);
else
if(x>mid) return find(v*2+1,mid+1,r,x,y,z);
else
return find(v*2,l,mid,x,mid,z)+find(v*2+1,mid+1,r,mid+1,y,z);
}
long long finds(int v,int l,int r,int x,int y,int z)
{
if(x>y) return 0;
if(l==x && y==r)
{
return si[v][z];
}
int mid=(l+r)/2;
if(y<=mid) return finds(v*2,l,mid,x,y,z);
else
if(x>mid) return finds(v*2+1,mid+1,r,x,y,z);
else
return finds(v*2,l,mid,x,mid,z)+finds(v*2+1,mid+1,r,mid+1,y,z);
}
long long get(long long t)
{
long long xx=finds(1,1,N,1,t-1,0)*t-find(1,1,N,1,t-1,0);
if(xx && ans/xx<=c) return maxlongint*maxlongint;
long long sum=xx*c;
if(b<=a)
{
sum+=(find(1,1,N,t+1,N,1)-finds(1,1,N,t+1,N,1)*t)*b;
}
else
{
long long zy=finds(1,1,N,1,t-1,1)*t-find(1,1,N,1,t-1,1),be=find(1,1,N,t+1,N,1)-finds(1,1,N,t+1,N,1)*t;
if(zy>=be) sum+=be*a;
else
{
sum+=zy*a+b*(be-zy);
}
}
return sum;
}
int main()
{
scanf("%lld%lld%lld%d%d",&a,&b,&c,&n,&m);
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
put(1,1,N,x,0);
}
for(int i=1,x;i<=m;i++)
{
scanf("%d",&x);
put(1,1,N,x,1);
}
for(int i=1;i<=N;i++) ans=min(ans,get(i));
printf("%lld",ans);
}
【GDOI2018模拟7.9】期末考试的更多相关文章
- python期末考试复习
期末考试复习 补修的python跟着大一一起学,考试肯定不会出难,于是就敲了一些代码,把他们放到博客上,来记录一下 代码都是一段一段的,且python代码不是很多,所以我都写到了一个文件里,作为练习 ...
- 复旦大学2015--2016学年第二学期高等代数II期末考试情况分析
一.期末考试成绩班级前几名 胡晓波(90).杨彦婷(88).宋卓卿(85).唐指朝(84).陈建兵(83).宋沛颖(82).王昊越(81).白睿(80).韩沅伯(80).王艺楷(80).张漠林(80) ...
- 复旦大学2014--2015学年第二学期(14级)高等代数II期末考试第八大题解答
八.(本题10分) 设 $A,B$ 为 $n$ 阶半正定实对称阵, 求证: $AB$ 可对角化. 分析 证明分成两个步骤: 第一步, 将 $A,B$ 中的某一个简化为合同标准形来考虑问题, 这是矩 ...
- 复旦大学2015--2016学年第一学期高等代数I期末考试情况分析
一.期末考试成绩班级前几名 胡晓波(93).宋沛颖(92).张舒帆(91).姚人天(90).曾奕博(90).杨彦婷(90).白睿(88).唐指朝(87).谢灵尧(87).蔡雪(87) 二.总成绩计算方 ...
- 复旦大学2014--2015学年第二学期高等代数II期末考试情况分析
一.期末考试成绩班级前几名 钱列(100).王华(92).李笑尘(92).金羽佳(91).李卓凡(91).包振航(91).董麒麟(90).张钧瑞(90).陆毕晨(90).刘杰(90).黄成晗(90). ...
- 复旦大学2014--2015学年第一学期高等代数I期末考试情况分析
一.期末考试成绩班级前几名 金羽佳(92).包振航(91).陈品翰(91).孙浩然(90).李卓凡(85).张钧瑞(84).郭昱君(84).董麒麟(84).张诚纯(84).叶瑜(84) 二.总成绩计算 ...
- nyoj 757 期末考试【优先队列+贪心】
期末考试 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣 ...
- 复旦大学2016--2017学年第一学期高等代数I期末考试情况分析
一.期末考试成绩班级前十名 宁盛臻(100).朱民哲(92).徐钰伦(86).范凌虎(85).沈伊南(84).何陶然(84).丁知愚(83).焦思邈(83).董瀚泽(82).钱信(81) 二.总成绩计 ...
- 2012 B 中国近现代史纲要》课程期末考试试卷
湖南人文科技学院2013年3月公共课 2011级<中国近现代史纲要>课程期末考试试卷B 考核方式:(开卷) 考试时量: ...
- 2012 A 《中国近现代史纲要》课程期末考试试卷
湖南人文科技学院2012—2013学年第1学期公共课 2011级<中国近现代史纲要>课程期末考试试卷 考核方式:(开卷) ...
随机推荐
- 无限级根据Id获得所有子节点数据
from sysobjects where id = object_id('tb1') and type = 'U') drop table tb1 go create table tb1 ( Id ...
- PTA(Basic Level)1058.A+B in Hogwarts
If you are a fan of Harry Potter, you would know the world of magic has its own currency system -- a ...
- 解决PowerDesigner提示This data item is already used in a primary identifier
解决PowerDesigner提示This data item is already used in a primary identifier 解决PowerDesigner提示This data i ...
- 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题)
layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" c ...
- 分层最短路(牛客第四场)-- free
题意: 给你边权,起点和终点,有k次机会把某条路变为0,问你最短路是多长. 思路: 分层最短路模板题.题目有点坑(卡掉了SPFA,只能用dijkstra跑的算法). #include<iostr ...
- P3586 [POI2015]LOG
传送门 对于询问,首先如果正数数量不到 $c$ 个显然无解 然后如果大于等于 $s$ 的数大于等于 $c$ 个,那么显然有解 否则,考虑贪心地取数,首先初始大于等于 $s$ 的哪些数我们每次取都可以取 ...
- Lock Puzzle CodeForces - 936C (构造)
大意: 给定字符串$s$,$t$, 每次操作可以将$S=AB$变为$S=B^RA$, 要求$3n$次操作内将$s$变为$t$. #include <iostream> #include & ...
- Django框架——进阶之AJAX
<script>$("#b1").on("click", function () { // 点击 id是b1的按钮要做的事儿 var i1 = $( ...
- Python新式类与经典类(旧式类)的区别
看写poc的时候看到的,思考了半天,现在解决了 转载自http://blog.csdn.net/zimou5581/article/details/53053775 Python中类分两种:旧式类和新 ...
- 服务命令(systemctl的使用)
常用的service与systemctl命令的对比 应用举例: ●start:开启服务 ●stop:停止服务 ●status:参数来查看服务运行情况 ●restart:重新加载服务 应用举例·: #启 ...