【wqs二分】HHHOJ#15. 赤
这个wqs二分并不熟练……
题目描述
题目分析
两维都用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. 赤的更多相关文章
- [CSP-S模拟测试]:赤(red)(WQS二分+DP)
题目传送门(内部题38) 输入格式 每个输入文件包含多组测试数据.选手应当处理到文件结束($EOF$) 每一组数据包括$3$行. 第$1$行包含三个正整数$n,a,b$,表示有$n$只猫,$gyz$有 ...
- [八省联考2018]林克卡特树lct——WQS二分
[八省联考2018]林克卡特树lct 一看这种题就不是lct... 除了直径好拿分,别的都难做. 所以必须转化 突破口在于:连“0”边 对于k=0,我们求直径 k=1,对于(p,q)一定是从p出发,走 ...
- 洛谷P4383 [八省联考2018]林克卡特树lct(DP凸优化/wqs二分)
题目描述 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一个叫做“LCT” 的挑 ...
- WQS二分学习笔记
前言 \(WQS\)二分听起来是个很难的算法,其实学起来也并不是那么难. 适用范围 在某些题目中,会对于某个取得越多越优的物品,限定你最多选择\(k\)个,问你能得到的最优答案. 例如这道题目:[CF ...
- Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)
P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式 ...
- P4383 [八省联考2018]林克卡特树 树形dp Wqs二分
LINK:林克卡特树 作为树形dp 这道题已经属于不容易的级别了. 套上了Wqs二分 (反而更简单了 大雾 容易想到还是对树进行联通情况的dp 然后最后结果总和为各个联通块内的直径. \(f_{i,j ...
- CF321E Ciel and Gondolas Wqs二分 四边形不等式优化dp 决策单调性
LINK:CF321E Ciel and Gondolas 很少遇到这么有意思的题目了.虽然很套路.. 容易想到dp \(f_{i,j}\)表示前i段分了j段的最小值 转移需要维护一个\(cost(i ...
- luogu CF125E MST Company wqs二分 构造
LINK:CF125E MST Company 难点在于构造 前面说到了求最小值 可以二分出斜率k然后进行\(Kruskal\) 然后可以得到最小值.\(mx\)为值域. 得到最小值之后还有一个构造问 ...
- luogu P5633 最小度限制生成树 wqs二分
LINK:最小度限制生成树 还是WQS二分的模板题 不过相当于我WQS二分的复习题. 对于求出强制k个的答案 dp能做不过复杂度太高了. 世界上定义F(x)表示选出x个的答案 画成图像 其实形成了一个 ...
随机推荐
- Java:创建线程
Java定义了两种创建线程的方法: 1.实现Runnable接口 要实现Runnable接口,只需简单地实现run()方法即可,声明如下:public void run() 在run()方法中,可以定 ...
- PJzhang:web漏洞扫描工具sitadel
猫宁!!! 参考链接:https://www.freebuf.com/sectool/194769.html 转变博客的写作思路,力求精简快捷,不浪费自己或者他人的时间. sitadel是一款精简的w ...
- jquery中的$(this)和this
在jquery中,存在$(this)和this. 其中常见的是出现在事件处理函数中. 首先先来理解jquery对象. jquery对象其实就是DOM对象的集合. 比如:$('a')[0];------ ...
- python进阶10 MySQL补充 编码、别名、视图、数据库修改
python进阶10 MySQL补充 编码.别名.视图.数据库修改 一.编码问题 #MySQL级别编码 #修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf def ...
- [Java]hashCode的作用
一.如何理解hashCode的作用: 以java.lang.Object来理解,JVM每new一个Object,它都会将这个Object丢到一个Hash哈希表中去,这样的话,下次做Object的比较或 ...
- NSwag生成客户端调用代码
NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码 https://www.cnblogs.com/hunanzp/p/9297361.html 前言 上一篇博客中我们 ...
- X Samara Regional Intercollegiate Programming Contest DIV2
http://codeforces.com/gym/101341 其实我觉得这份题很不错的,虽然是div2,但是感觉对我挺有帮助(我比较垃圾0.0),还没补完(做的时候一直蒙逼,要补很多题)先写一点点 ...
- SmartWeatherAPI C#版
private string GetKey(string areaId, string type, string date, string appId, string privateKey) { va ...
- [摘录]全面学习GFW
转载自:https://cokebar.info/archives/253 GFW会是一个长期的存在.要学会与之共存,必须先了解GFW是什么.做为局外人,学习GFW有六个角度.渐进的来看分别是: 首先 ...
- JDBC和分包
JDBC(Java Data Base Connectivity,java数据库连接) JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...