【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级<中国近现代史纲要>课程期末考试试卷 考核方式:(开卷) ...
随机推荐
- 【Python开发】python重命名文件和遍历文件夹操作
当前文件夹下,把所有文件名中的"50076"替换成"50092",用Python实现,代码所下: # encoding: utf-8 import os imp ...
- 【神经网络与深度学习】Caffe Model Zoo许多训练好的caffemodel
Caffe Model Zoo 许多的研究者和工程师已经创建了Caffe模型,用于不同的任务,使用各种种类的框架和数据.这些模型被学习和应用到许多问题上,从简单的回归到大规模的视觉分类,到Siames ...
- C#4.0中的协变和逆变
原文地址 谈谈.Net中的协变和逆变 关于协变和逆变要从面向对象继承说起.继承关系是指子类和父类之间的关系:子类从父类继承所以子类的实例也就是父类的实例.比如说Animal是父类,Dog是从Anima ...
- 简单的利用nginx部署前端项目
网上有很多教程写的一大堆东西,新手可能会有点看不懂,现在我写这篇文章是为了更好的帮助新手,如何将自己的前端项目部署到自己的服务器上. 首先我们必须要有一台自己的ubuntu服务器,如果没有可以去阿里云 ...
- Laravel关联模型
public $timestamps = false;//不存时间 1.多对多关联.如收藏.用户表users,产品表products,收藏中间表user_favorite_products.那么在用户 ...
- MySQL教程详解之存储引擎介绍及默认引擎设置
什么是存储引擎? 与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architectu ...
- 云数据库RDS MySQL 版
阿里云关系型数据库(Relational Database Service,简称RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL. ...
- Python-RabbitMQ-fanout(广播模式)
生产者:fanout_publiser.py import pika import sys connection = pika.BlockingConnection(pika.ConnectionPa ...
- certutil 命令配合PS反弹后门
Certutil.exe是一个命令行程序,作为证书服务的一部分安装.您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书 ...
- 创建node节点的kubeconfig文件
创建node节点的kubeconfig文件 1.创建TLS Bootstrapping Token export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | ...