hdu 4882 ZCC Loves Codefires (贪心 推导)
做题的时候凑的规律,其实可以 用式子推一下的。
题意:n对数,每对数有e,k, 按照题目的要求(可以看下面的Hint就明白了)求最小的值。
分析:假设现在总的是sum, 有两个e1 k1 e2 k2
则先选e1 为 (sum+e1)*k1+(sum+e1+e2)*k2
先e2: (sum+e2)*k2 + (sum+e1+e2)*k1.
比较两个式子发现不同的部分分别是 e1*k2 e2*k1; 比较大小移向 e1/k1 e2/k2, 那个小,就选那个,能达到最小。
官方题解:
考察序列中相邻的两题i, j(i在前)。交换它们后,解出它们之前的题目所带来的时间对答案的贡献是不变的,它们对
它们后面的题目的贡献也是不变的,其他题目之间对答案的贡献自然也是不变的。唯一的变化就是,原来的EiKj一项变
成了EjKi一项。那么,为了使答案变优,需要满足的条件是EjKi≤EiKj。也即Ei/Ki≥Ej/Kj。
那么,最优解序列Ai一定满足,EAi/KAi是递增的。
排序一遍即可。
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
const int maxn = +;
int n;
struct node
{
int e, k;
double x;
}p[maxn]; bool cmp(node a, node b)
{
return a.x < b.x;
}
int main()
{
int i;
__int64 sum, ans;
while(~scanf("%d", &n))
{
for(i = ; i < n; i++)
{
scanf("%d", &p[i].e);
}
for(i = ; i < n; i++)
{
scanf("%d", &p[i].k);
p[i].x = (double)(p[i].e*1.0/p[i].k*1.0);
}
sort(p, p+n, cmp);
sum = ; ans = ;
for(i = ; i < n; i++)
{
sum += p[i].e;
ans += sum*p[i].k;
}
cout<<ans<<endl;
}
return ;
}
hdu 4882 ZCC Loves Codefires (贪心 推导)的更多相关文章
- HDU 4882 ZCC Loves Codefires(贪心)
ZCC Loves Codefires Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4882 ------------------------------------------------ ...
- HDU 4882 ZCC Loves Codefires (贪心)
ZCC Loves Codefires 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/B Description Though ...
- 2014多校第二场1011 || HDU 4882 ZCC Loves Codefires (贪心)
题目链接 题意 : 给出n个问题,每个问题有两个参数,一个ei(所要耗费的时间),一个ki(能得到的score).每道问题需要耗费:(当前耗费的时间)*ki,问怎样组合问题的处理顺序可以使得耗费达到最 ...
- hdu 4882 ZCC Loves Codefires(贪心)
# include<stdio.h> # include <algorithm> # include <string.h> using namespace std; ...
- HDU-4882 ZCC Loves Codefires
http://acm.hdu.edu.cn/showproblem.php?pid=4882 ZCC Loves Codefires Time Limit: 2000/1000 MS (Java/Ot ...
- 2014---多校训练2(ZCC Loves Codefires)
ZCC Loves Codefires Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- HDU 4876 ZCC loves cards(暴力剪枝)
HDU 4876 ZCC loves cards 题目链接 题意:给定一些卡片,每一个卡片上有数字,如今选k个卡片,绕成一个环,每次能够再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个 ...
- hdu 4873 ZCC Loves Intersection(大数+概率)
pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...
随机推荐
- Encog
http://www.heatonresearch.com/encog/ https://www.mql5.com/zh/articles/252
- 【转载】link和@import的区别
link和@import的区别 原文地址:http://www.cnblogs.com/zbo/archive/2010/11/17/1879590.html 页面中使用CSS的方式主要有3种:行内添 ...
- 获取不到app.config里面的数据库连接字符串的解决方法
今天在自己的类库里添加了对app.config文件的数据库连接字符串的引用,但是返回的居然是Null,纳闷了.然后在网上找到了答案原来是我的app.config文件加错了地方,应该加到启动项目里面,而 ...
- [转载]C# FTP操作工具类
本文转载自<C# Ftp操作工具类>,仅对原文格式进行了整理. 介绍了几种FTP操作的函数,供后期编程时查阅. 参考一: using System; using System.Collec ...
- ubuntu中磁盘挂载与卸载
问题描述: ubuntu中磁盘的挂载和卸载 问题解决: (1)ubuntu中磁盘挂载 注: 如上所示,使用命令df查看磁盘使用情况 ...
- git/github在windows上使用
问题描述: git在Windows上的使用 问题解决: (1)下载安装git http://msysgit.github.io/ 到该网址中下载msgit软件 注: 安装msg ...
- 使用EF code first和asp.net mvc4遇到的问题总结
最近使用EF code first和asp.net mvc4做项目,遇到些问题,记录一下. 一.EF code first 生成外键列问题. 一般情况下,都是先写一个int型外键id属性,然后写一个外 ...
- uva 1056
floyd 算法 用了stl 的map 存名字的时候比较方便 #include <cstdio> #include <cstdlib> #include <cmath&g ...
- .NET framework 4.0安装失败怎么办
开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 开始——运行——输入%windir%找到有个叫SoftwareDistribution的文件夹,把它重命 ...
- NuGet学习笔记——初识NuGet及快速安装使用
源自:http://kb.cnblogs.com/page/143190/