CF605C. Freelancer's Dreams
CF605C. Freelancer’s Dreams
题目描述
Solution
实际上就是给定ai,bi,A,Ba_i,b_i,A,Bai,bi,A,B,求n维向量(x1..xn)(x1..x_n)(x1..xn),使得:
∑i=1naixi≥A∑i=1nbixi≥Bminz=∑ixi\sum_{i=1}^na_ix_i\geq A\\ \sum_{i=1}^nb_ix_i\geq B\\ min\;z=\sum_i{x_i} i=1∑naixi≥Ai=1∑nbixi≥Bminz=i∑xi
答案就是minzmin\;zminz
这是一个简单线性规划问题,转化为对偶形式,可得:
∀i=1..naiy1+biy2<=1maxz=Ay1+By2y1,y2≥0\forall_{i=1..n}a_iy_1+b_iy_2<=1\\ max\;z={Ay_1+By_2}\\ y_1,y_2\geq 0 ∀i=1..naiy1+biy2<=1maxz=Ay1+By2y1,y2≥0
可以把上面的1式转化为:
∀i=1..ny1<=1−biy2ai\forall_{i=1..n}y_1<=\frac{1-b_iy_2}{a_i} ∀i=1..ny1<=ai1−biy2
现在的变量是y1,y2y_1,y_2y1,y2,相当于求二维平面的半平面交,可以求一个凸包解决。
但显然有更简单的方法:我们确定了y2y_2y2之后可以唯一确定y1y_1y1,并且该情况下答案显然是一个凸函数,所以可以直接三分y2y_2y2去求出极值点。
时间复杂度O(nlgn)O(nlgn)O(nlgn)。
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se secondusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-12;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=998244353;
const int MAXN=600005;
const int INF=0x3f3f3f3f;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
int n,A,B,a[MAXN],b[MAXN];
lod check(lod y2)
{lod y1=1e6;for (int i=1;i<=n;i++) upmin(y1,(1-y2*b[i])/a[i]);if (y1<eps) return -1;return y1*A+y2*B;
}
int main()
{n=read(),A=read(),B=read();for (int i=1;i<=n;i++) a[i]=read(),b[i]=read();lod l=0,r=1e6;while (r-l>eps){lod midl=l+(r-l)/3,midr=r-(r-l)/3;if (check(midl)+eps<check(midr)) l=midl;else r=midr;}printf("%.11lf\n",(double)check(l));return 0;
}
CF605C. Freelancer's Dreams相关推荐
- Codeforces Round #335 (Div. 1)--C. Freelancer's Dreams 线性规划对偶问题+三分
题意:p, q,都是整数. sigma(Ai * ki)>= p, sigma(Bi * ki) >= q; ans = sigma(ki).输出ans的最小值 约束条件2个,但是变量k有 ...
- 凸包 Codeforces605C Freelancer's Dreams
传送门:点击打开链接 题意:有n份工作,第i份工作做1个单位时间获得ai经验和bi钱,现在要凑齐p点经验和q钱,至少要工作多久,工作的时间可以为小数 思路:仔细想想总觉得哪里不对劲,是不是感觉好像只需 ...
- 查询域内计算机命令,AD域控Dsquery查询命令实列
注:请以管理员的身份运行cmd程序,要不然某些命令不生效 AD域控Dsquery查询命令实列 查询技术支持二部的所有用户 dsquery user OU=技术支持二部,OU=技术部,OU=ZT-Use ...
- 我和freelancer不得不说的故事5 --- 心理落差
我和freelancer不得不说的故事5 --- 心理落差 我下海之前所在的外企,是一家顶级知名IT企业,其SAP咨询服务业务规模和影响都很大,是SAP咨询界五大咨询公司之一.我从07年加入这家公司, ...
- SAP freelancer如何找到一个不苦逼的项目?
SAP freelancer如何找到一个不苦逼的项目? 作为一个资深SAP freelancer, 笔者每年都要找新的SAP项目.笔者已经超过35岁,体力和精力远不如95后小朋友了.所以每次在找新的S ...
- SAP freelancer接SAP项目应有底线思维
SAP freelancer接SAP项目应有底线思维 上周和一个业界资深顾问同行做了一些沟通. 她跟我年纪差不多,都是做了很多年的SAP顾问,目前也是自由职业者,技术领域,外语能力都不错.我们在K项目 ...
- SAP freelancer接SAP项目的几种方法
SAP freelancer接SAP项目的几种方法 时光飞逝,笔者从事SAP行业超过十年,下海做freelancer也近五年了. 这几年,笔者做得还算顺利.SAP项目一个接着一个的做,项目间歇期都非常 ...
- SAP freelancer夫妻并不难!你也可以!
SAP freelancer夫妻并不难!你也可以! 在笔者看来,如果能有每月超过10万的家庭收入,要是去上海滩购买单价在八万以上的房子,应该是可以轻松应对,想买就可以买,根本不用眨眼睛,不用一丁点儿的 ...
- 推荐几个全网最全的程序员接私活地方法或完整攻略或常用平台以及接单的注意事项(以免被雇主坑),比如国内的程序员客栈、CODING 码市,国外的Upwork、Freelancer、Dribbble等。
文章目录 1. 引言 2. 加QQ群.微信群等 3. 朋友.同事.同学介绍 4. 国内远程工作平台 4.1 程序员客栈 4.2 CODING 码市 4.3 开源众包 4.4 猪八戒 4.5 英选 4. ...
最新文章
- 【机器学习入门】(7) 线性回归算法:原理、公式推导、损失函数、似然函数、梯度下降
- 程序员交流平台_「建议收藏」10个适合程序员逛的在线社区
- 十五、图(graph)
- Nhibernate 3.0 cookbook学习笔记 配置与架构
- python正则表达式试题_正则表达式练习题2
- 【转】ASP.NET 2.0中Page事件的执行顺序
- 用计算机来控制飞船在太空中运行,神舟飞船在太空中靠什么动力运行
- 1.7更换JDK1.6版本后,无法启动eclipse mars解决办法。
- 49. 学会分析与STL相关的编译器诊断信息
- Java设计模式百例 - 原型模式
- java 二进制转换十六进制的方法_Java 中二进制转换成十六进制的两种实现方法...
- root 账号不能登录的解决方法
- 《数字逻辑设计与计算机组成》一 第3章 3.1 简介
- 基于区块链的大数据确权方案
- 9条消除if...else的锦囊妙计,解决代码的坏味道!
- 国内第一创作平台大佬,教你如何写好一篇技术博客?
- 学java能打开大脑思维_脑科学:一句“去你的吧”,就可以判断出你是左脑型思维还是右脑型思维!...
- Java将前端Data Url (data:image/jpg;base64,)转为数据流
- 路基路面工程(细粒土塑性图)
- Unity报错解决方法