这个wqs二分并不熟练……

题目描述

#15. 赤


题目分析

两维都用wqs二分,其他没有什么特殊之处。

重点在于,wqs二分还原最优解的时候,增量是强制给的k。

 #include<bits/stdc++.h>
const int maxn = ;
const double eps = 1e-; int n,a,b,usa,usb;
double bet,ans,coa,cob,p[maxn],q[maxn]; bool match()
{
double k1=coa,k2=cob;
usa = usb = , ans = ;
for (int i=, opt=; i<=n; i++)
{
double v = ;opt=;
if (p[i]-k1 > v) opt = , v = p[i]-k1;
if (q[i]-k2 > v) opt = , v = q[i]-k2;
if (p[i]+q[i]-p[i]*q[i]-k1-k2 > v)
opt = , v = p[i]+q[i]-p[i]*q[i]-k1-k2;
if (opt==||opt==) usa++;
if (opt==||opt==) usb++;
ans += v;
}
return usb <= b;
}
bool check()
{
double l = , r = 1.0, bet;
for (cob=(l+r)/2.0; r-l>eps; cob=(l+r)/2.0)
if (match()) bet = r = cob;
else l = cob;
cob = bet;
match();
return usa <= a;
}
int main()
{
while (scanf("%d%d%d",&n,&a,&b)!=EOF)
{
for (int i=; i<=n; i++) scanf("%lf",&p[i]);
for (int i=; i<=n; i++) scanf("%lf",&q[i]);
double l = , r = 1.0;
for (coa=(l+r)/2.0; r-l>eps; coa=(l+r)/2.0)
if (check()) bet = coa, r = coa;
else l = coa;
coa = bet;
check();
ans += 1.0*a*coa+1.0*b*cob;  //这里补偿答案用a,b
printf("%.5lf\n",ans);
}
return ;
}

END

【wqs二分】HHHOJ#15. 赤的更多相关文章

  1. [CSP-S模拟测试]:赤(red)(WQS二分+DP)

    题目传送门(内部题38) 输入格式 每个输入文件包含多组测试数据.选手应当处理到文件结束($EOF$) 每一组数据包括$3$行. 第$1$行包含三个正整数$n,a,b$,表示有$n$只猫,$gyz$有 ...

  2. [八省联考2018]林克卡特树lct——WQS二分

    [八省联考2018]林克卡特树lct 一看这种题就不是lct... 除了直径好拿分,别的都难做. 所以必须转化 突破口在于:连“0”边 对于k=0,我们求直径 k=1,对于(p,q)一定是从p出发,走 ...

  3. 洛谷P4383 [八省联考2018]林克卡特树lct(DP凸优化/wqs二分)

    题目描述 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一个叫做“LCT” 的挑 ...

  4. WQS二分学习笔记

    前言 \(WQS\)二分听起来是个很难的算法,其实学起来也并不是那么难. 适用范围 在某些题目中,会对于某个取得越多越优的物品,限定你最多选择\(k\)个,问你能得到的最优答案. 例如这道题目:[CF ...

  5. Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)

    P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式 ...

  6. P4383 [八省联考2018]林克卡特树 树形dp Wqs二分

    LINK:林克卡特树 作为树形dp 这道题已经属于不容易的级别了. 套上了Wqs二分 (反而更简单了 大雾 容易想到还是对树进行联通情况的dp 然后最后结果总和为各个联通块内的直径. \(f_{i,j ...

  7. CF321E Ciel and Gondolas Wqs二分 四边形不等式优化dp 决策单调性

    LINK:CF321E Ciel and Gondolas 很少遇到这么有意思的题目了.虽然很套路.. 容易想到dp \(f_{i,j}\)表示前i段分了j段的最小值 转移需要维护一个\(cost(i ...

  8. luogu CF125E MST Company wqs二分 构造

    LINK:CF125E MST Company 难点在于构造 前面说到了求最小值 可以二分出斜率k然后进行\(Kruskal\) 然后可以得到最小值.\(mx\)为值域. 得到最小值之后还有一个构造问 ...

  9. luogu P5633 最小度限制生成树 wqs二分

    LINK:最小度限制生成树 还是WQS二分的模板题 不过相当于我WQS二分的复习题. 对于求出强制k个的答案 dp能做不过复杂度太高了. 世界上定义F(x)表示选出x个的答案 画成图像 其实形成了一个 ...

随机推荐

  1. PAT甲级——1106 Lowest Price in Supply Chain(BFS)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90444872 1106 Lowest Price in Supp ...

  2. 7.数据处理函数 ---SQL

    大多数SQL实现支持以下类型的函数. 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数. 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数. 用于处理日期和时间值 ...

  3. [Android]Android开发艺术探索第13章笔记

    13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢? 利用Thread类的setDefaultUn ...

  4. Flat UI theme--扁平化的UI

    项目地址:点击打开 支持版本: jQuery Mobile 1.3.2 使用很简单,前提是你的前端是在jquery-mobile的基础上开发的,然后导入相应的css文件.img文件和js文件即可. 案 ...

  5. 转:IOS程序之间的文件共享

    原文 System-Declared Uniform Type Identifiers One of the common tasks that an iOS developer has to do ...

  6. .NET CORE IIS 500.21

    最近遇到的.NET CORE 500.21的错误 官方解决方案地址:https://docs.microsoft.com/en-us/dynamics-nav/troubleshooting-http ...

  7. .Net平台互操作技术:01. 主要问题

    在.Net平台进行程序设计时,经常遇到基于Native C++,已经开发出很多类库,而现在需要用C#语言调用Native C++类库.这种情况在金融公司的量化投资部门经常发生.原因是,金融业务系统的对 ...

  8. ./theHarvester.py -d baidu.com -l 100 -b google

    ./theHarvester.py -d baidu.com  -l 100 -b google

  9. 看动画,秒懂人工智能&物联网

  10. Mysql-数据库及数据表结构和操作

    1.数据库系统:数据库系统是用来维护和管理数据库的系统工具,数据库系统拥有自己的用户名和密码 1.1.显示该系统中的数据库:Show databases; 1.2.创建数据库:Create datab ...