【BZOJ2666】[cqoi2012]组装 贪心
【BZOJ2666】[cqoi2012]组装
Description
Input
Output
Sample Input
-1 3
0 1
2 3
4 2
5 2
Sample Output
题解:易证:如果已知每种零件生产车间的位置,那么组装车间的位置一定是它们的中点。(自己列列式子就知道了。)
那么我们只需要知道每种零件生产车间的位置即可,对于相邻的同种车间i和i+1,当pi<x<mid时选择i,当mid<x<pi+1时选择i+1,那么我们只需要把所有的中间点都拿出来排个序,扫一遍统计答案即可。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=100010;
int n,m,tot;
double s1,s2,ans,minn;
double x[maxn],y;
int c[maxn],last[10010],pre[maxn];
struct node
{
double pos;
int nxt;
}p[maxn];
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret*f;
}
bool cmp(node a,node b)
{
return a.pos<b.pos;
}
int main()
{
n=rd(),m=rd();
int i;
for(i=1;i<=m;i++)
{
x[i]=rd(),c[i]=rd();
if(!last[c[i]]) s1+=x[i],s2+=x[i]*x[i];
else pre[i]=last[c[i]],p[++tot].pos=(x[i]+x[last[c[i]]])/2,p[tot].nxt=i;
last[c[i]]=i;
}
sort(p+1,p+tot+1,cmp);
ans=y=s1/n,minn=s2-2*s1*y+y*y*n;
for(i=1;i<=tot;i++)
{
s2-=x[pre[p[i].nxt]]*x[pre[p[i].nxt]],s1-=x[pre[p[i].nxt]];
s2+=x[p[i].nxt]*x[p[i].nxt],s1+=x[p[i].nxt];
y=s1/n;
if(minn>s2-2*s1*y+y*y*n) minn=s2-2*s1*y+y*y*n,ans=y;
}
printf("%.4lf",ans);
return 0;
}
【BZOJ2666】[cqoi2012]组装 贪心的更多相关文章
- [CQOI2012]组装 贪心
[CQOI2012]组装 贪心好题. LG传送门 首先有一个必须要能推的式子:设第\(i\)种零件选的生产车间位置为\(x _ i\),组装车间位置为\(x\), 则总的花费为 \[f(x) = \s ...
- Luogu3162 CQOI2012 组装 贪心
传送门 如果提供每一种零件的生产车间固定了,那么总时间\(t\)与组装车间的位置\(x\)的关系就是 \(t = \sum (x-a_i)^2 = nx^2-2\sum a_ix + \sum a_i ...
- [CQOI2012]组装 (贪心)
CQOI2012]组装 solution: 蒟蒻表示并不会模拟退火,所以用了差分数组加贪心吗.我们先来看题: 在数轴上的某个位置修建一个组装车间 到组装车间距离的平方的最小值. 1<=n< ...
- luogu P3162 [CQOI2012]组装
传送门 mdzz,为什么这题有个贪心的标签啊qwq 首先考虑每一种车间,对于每相邻两个车间,在中点左边那么左边那个会贡献答案,在右边就右边那个更优 所以总共会有m-1个这样的分界中点,然后最多有m+1 ...
- BZOJ 2666: [cqoi2012]组装
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2666 题意:n种零件,m个位置,每个位置有一种零件.求一个位置x,使得cost(1 ...
- P3162 [CQOI2012]组装
传送门 退火大法好 我并不会正解于是只好打退火了--其他没啥好讲--只要对每一种颜色开一个vector,存一下所有这个颜色的位置,判定的时候可以去所有的颜色里二分找到前缀和后缀,把和当前点距离小的加入 ...
- 【题解】P3162CQOI2012组装
[题解][CQOI2012]组装 考虑化为代数的形式,序列\(\left[a_i \right]\)表示选取的\(i\)种类仓库的坐标. \(ans=\Sigma(a_i-x)^2,(*)\),展开: ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [BZOJ2667][cqoi2012]模拟工厂 贪心
2667: [cqoi2012]模拟工厂 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 367 Solved: 184[Submit][Status] ...
随机推荐
- IT人为了自己父母和家庭,更得注意自己的身体和心理健康
我前一阵在一家互联网公司,工作节奏是995,忙的时候,要晚上10点才能离开公司,有时候周六还得加班.自己感觉身体状况有所下降,且听说其它一个组,在体检后多少都查出问题来,细思极恐. 有时候确实忙,那么 ...
- 自动内存管理算法 —— 标记和复制法
最近阅读了<垃圾回收算法手册>这本经典的书籍,借此机会打算写几篇内存管理算法方面的文章,也算是自己的总结吧. ...
- Network | Cookie and Session
Cookies are arbitrary pieces of data chosen by the web server and sent to the browser. The browser r ...
- jersey上传文件解决办法
这两天在使用jersey 构建的jersey JAX-RS REST服务器,在通过POST方法上传文件的时候,如果根据example来操作的话会引发如下异常: SEVERE: Missing depe ...
- FAB使用在CoordinatorLayout的隐藏动画
import android.content.Context; import android.os.Build; import android.support.design.widget.Coordi ...
- cordova 中de.sitewaerts.cordova.documentviewer 插件 看pdf图片缩略图与实际图片不一致
//if (document == nil) // Unarchive failed so create a new ReaderDocument object //{ document = [[Re ...
- 【音乐App】—— Vue-music 项目学习笔记:推荐页面开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 上一篇总结了项目概述.项目准备.页面骨架搭建.这一篇重点梳理推荐页面开发.项目github地址:https://github.com/66We ...
- GDI+重绘笔记
有的控件不能重载 OnPaint,设置 ControlStyles.UserPaint = true即可 //如果为 true,控件将自行绘制,而不是通过操作系统来绘制. //如果为 false,将不 ...
- C++课程资源下载问题
[来信] 贺老师,您好,我是江西某高校软件学院的一名在校学生.看了您在csdn上公布的博文和视频,我获益良多.不得不承认,之前的大学时光我是荒废了,立即就要大三了,我主攻的是C++方面.因此我悔过自新 ...
- maven打包时出现no compiler is provided in this environment
我是使用maven打jar包时出现的问题,与我问题不同的可以查看下面链接是否有棒状 http://blog.csdn.net/lslk9898/article/details/73836745 可以确 ...