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 二分相关推荐

  1. Gym 100883J palprime(二分判断点在凸包里)

    题意:判断一堆小点有多少个在任意三个大点构成的三角形里面. 思路:其实就是判断点在不在凸包里面,判断的话可以使用二分来判断,就是判断该点在凸包的哪两个点和起点的连线之间. 代码: 1 /** @xig ...

  2. Nordic Collegiate Programming Contest 2017 题解

    前几天打了一场外国人的比赛,感觉那边的题目质量还是很好的,区分度很鲜明,题目没有国内的难,坑点比较少,比较注重思维,基础算法. B题: Best Relay Team Picture by Ferna ...

  3. E.Text Editor (Gym 101466E + 二分 + kmp)

    题目链接:http://codeforces.com/gym/101466/problem/E 题目: 题意: 给你s串和t串,一个数k,求t的最长前缀串在s串中出现次数不少于k. 思路: 一眼二分+ ...

  4. 【二分】NEERC15 L Landscape Improved(2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: 一个宽度为N的网格图,i上有h[i]高的方块.现在你有W个方块,问怎么放使得最终的最高点最高. 只要一个格子的 ...

  5. 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 ...

  6. 【Gym - 101608G】WiFi Password (区间或,线段树 或 按位处理+尺取 或 二分)

    题干: Just days before the JCPC, your internet service went down. You decided to continue your trainin ...

  7. Gym 102091L Largest Allowed Area 【二分+二维前缀和】

    <题目链接> 题目大意: 给你一个由01组成的矩形,现在问你,该矩形中,最多只含一个1的正方形的边长最长是多少. 解题分析: 用二维前缀和维护一下矩形的01值,便于后面直接$O(1)$查询 ...

  8. Gym - 100889H Hitting Points 计算几何+三分+二分

    题目链接 Hitting Points 题意 按逆时针顺序给你二维平面上严格凸包的n个点,编号0到n-1, 有q次询问, 每次询问确定一个编号为idx的基础点, 以idx和(idx+1)%n构成的向量 ...

  9. I - The old Padawan Gym - 100285I——二分查找

    Think: 1知识点:二分查找+前缀和 2题意:n个石子,m次发呆,每次发呆若手中石子足够掉落石子大于k,询问将所有石子拾到手中所需要的时间 3反思:多理解,多反思,多思考 vjudge题目链接 以 ...

  10. GYM 100285 I. The old Padawan(二分+简单模拟)

    Description 有一个人捡按一定顺序捡石头,每秒都能捡起一个,但是他有时会分心,这是不但不能举石头,而且手中的石头还会掉,直到没有石头可以掉下来或者掉下来的石头的总重量>k.依次给出n个 ...

最新文章

  1. python中的特殊成员
  2. 缘何Square可以在移动支付领域上成功?
  3. Spring注解 (更新中)
  4. pip 安装模块时报“pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonh”
  5. Windows Phone 7 自定义弹出窗口
  6. Visual Studio.NET 无法创建或打开应用程序之解决方法
  7. Windows Mobile 进阶系列.WCF Mobile(Part 2)
  8. 小程序毕设作品之微信校园维修报修小程序毕业设计成品(4)开题报告
  9. android ndk下载安装教程,NDK安装教程20180605
  10. 小型超市管理系统【软件工程大作业】
  11. CRT 之LISENCE
  12. ROS NOETIC 思岚激光雷达A2M8启动历程
  13. 程序员内功:八大排序算法
  14. 学习如何使用php创建一张空白的图片
  15. c#输出二维数组矩阵
  16. Ubuntu安装软件包网络不可达问题
  17. GStreamer连接 IP 网络摄像机的实际例子
  18. Vs2019创建新项目时,没有任何模板,导致无法创建新项目
  19. 微信聊天api接口调用
  20. VC++6.0遇到“error spawning cl.exe”的解决办法

热门文章

  1. android禁用传感器,Android 系统 强制 禁用 距离传感器 方法
  2. Equations of Mathematical Magic题解
  3. html中3d图片轮播图,js实现图片3D轮播效果
  4. bzoj_2827_千山鸟飞绝
  5. 离线地图for arcgis tpk
  6. 全国书画艺术之乡-----通渭
  7. promise.then链式调用顺序
  8. 一些框架图的色彩搭配
  9. 常见的企业流程再造模式
  10. 高等数学 —— 数列的极限