Gym - 101572K Kayaking Trip 二分
Description
有n个人要进行两两配对的划船,他们的个人能力分为3种级别,新手sb,普通sn,精通se。有n个人要进行两两配对的划船,他们的个人能力分为3种级别,新手sb,普通sn,精通se。有n个人要进行两两配对的划船,他们的个人能力分为3种级别,新手s_b,普通s_n,精通s_e。
共有n/2只船,如果由x,y来开船i,其稳定程度为k=ci(sx+sy)共有n/2只船,如果由x,y来开船i,其稳定程度为k=ci(sx+sy)共有n/2只船,如果由x,y来开船i,其稳定程度为k = c_i (s_x+s_y)
现在要求最大化一次完全匹配中所有船的稳定度的最小值。现在要求最大化一次完全匹配中所有船的稳定度的最小值。现在要求最大化一次完全匹配中所有船的稳定度的最小值。
Solution
二分枚举答案。
对于答案去进行check(),如果存在一一匹配使得所有船的稳定度大于mid,则是满足条件的。对于答案去进行check(),如果存在一一匹配使得所有船的稳定度大于mid,则是满足条件的。对于答案去进行check(),如果存在一一匹配使得所有船的稳定度大于mid,则是满足条件的。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
const int inf = 0x3f3f3f3f;
int cnt[3],arr[3],val[3],crr[maxn],m;
bool check(int mid) {for(int i=0;i<3;i++) cnt[i] = arr[i];for(int i=1;i<=m;i++) {int x=-1,y=-1;for(int k=0;k<3;k++) {for(int d=k;d<3;d++) if(cnt[d] && cnt[k]){if((d == k && cnt[d] == 1) || ((val[d]+val[k])*crr[i] < mid)) continue;if(x == -1 || (val[k]+val[d] < val[x]+val[y])) {x = k;y = d;}}}if(x == -1) return false;cnt[x]--;cnt[y]--;}return true;
}
int main()
{while(~scanf("%d%d%d",&arr[0],&arr[1],&arr[2])) {int l = inf,r = 0;for(int i=0;i<3;i++) scanf("%d",val+i),l=min(val[i],l),r=max(val[i],r);m = (arr[0] + arr[1] + arr[2]) / 2;for(int i=1;i<=m;i++) scanf("%d",&crr[i]);sort(crr+1,crr+1+m);l = 2*l*crr[1];r = 2*r*crr[m];while(l <= r) {int mid = (l + r) >> 1;if(check(mid)) l = mid + 1;else r = mid - 1;}printf("%d\n",r);}return 0;
}
Gym - 101572K Kayaking Trip 二分相关推荐
- Gym 100883J palprime(二分判断点在凸包里)
题意:判断一堆小点有多少个在任意三个大点构成的三角形里面. 思路:其实就是判断点在不在凸包里面,判断的话可以使用二分来判断,就是判断该点在凸包的哪两个点和起点的连线之间. 代码: 1 /** @xig ...
- Nordic Collegiate Programming Contest 2017 题解
前几天打了一场外国人的比赛,感觉那边的题目质量还是很好的,区分度很鲜明,题目没有国内的难,坑点比较少,比较注重思维,基础算法. B题: Best Relay Team Picture by Ferna ...
- E.Text Editor (Gym 101466E + 二分 + kmp)
题目链接:http://codeforces.com/gym/101466/problem/E 题目: 题意: 给你s串和t串,一个数k,求t的最长前缀串在s串中出现次数不少于k. 思路: 一眼二分+ ...
- 【二分】NEERC15 L Landscape Improved(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 一个宽度为N的网格图,i上有h[i]高的方块.现在你有W个方块,问怎么放使得最终的最高点最高. 只要一个格子的 ...
- codeforce Gym 100500F Door Lock (二分)
根据题意略推一下,其实就是问你满足(a*(a+1))/2 < m <= ((a+1)*a(a+2))/2的a和m-(a*(a+1))/2 -1是多少. 二分求解就行了 #include&l ...
- 【Gym - 101608G】WiFi Password (区间或,线段树 或 按位处理+尺取 或 二分)
题干: Just days before the JCPC, your internet service went down. You decided to continue your trainin ...
- Gym 102091L Largest Allowed Area 【二分+二维前缀和】
<题目链接> 题目大意: 给你一个由01组成的矩形,现在问你,该矩形中,最多只含一个1的正方形的边长最长是多少. 解题分析: 用二维前缀和维护一下矩形的01值,便于后面直接$O(1)$查询 ...
- Gym - 100889H Hitting Points 计算几何+三分+二分
题目链接 Hitting Points 题意 按逆时针顺序给你二维平面上严格凸包的n个点,编号0到n-1, 有q次询问, 每次询问确定一个编号为idx的基础点, 以idx和(idx+1)%n构成的向量 ...
- I - The old Padawan Gym - 100285I——二分查找
Think: 1知识点:二分查找+前缀和 2题意:n个石子,m次发呆,每次发呆若手中石子足够掉落石子大于k,询问将所有石子拾到手中所需要的时间 3反思:多理解,多反思,多思考 vjudge题目链接 以 ...
- GYM 100285 I. The old Padawan(二分+简单模拟)
Description 有一个人捡按一定顺序捡石头,每秒都能捡起一个,但是他有时会分心,这是不但不能举石头,而且手中的石头还会掉,直到没有石头可以掉下来或者掉下来的石头的总重量>k.依次给出n个 ...
最新文章
- python中的特殊成员
- 缘何Square可以在移动支付领域上成功?
- Spring注解 (更新中)
- pip 安装模块时报“pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonh”
- Windows Phone 7 自定义弹出窗口
- Visual Studio.NET 无法创建或打开应用程序之解决方法
- Windows Mobile 进阶系列.WCF Mobile(Part 2)
- 小程序毕设作品之微信校园维修报修小程序毕业设计成品(4)开题报告
- android ndk下载安装教程,NDK安装教程20180605
- 小型超市管理系统【软件工程大作业】
- CRT 之LISENCE
- ROS NOETIC 思岚激光雷达A2M8启动历程
- 程序员内功:八大排序算法
- 学习如何使用php创建一张空白的图片
- c#输出二维数组矩阵
- Ubuntu安装软件包网络不可达问题
- GStreamer连接 IP 网络摄像机的实际例子
- Vs2019创建新项目时,没有任何模板,导致无法创建新项目
- 微信聊天api接口调用
- VC++6.0遇到“error spawning cl.exe”的解决办法