题目链接:点击查看

题目大意:给出 nnn 种颜色不同的鲜花,每种花有 aia_iai​ 个,现在规定 mmm 个不同的鲜花可以扎成一束,问最多可以扎多少束鲜花

题目分析:考虑问题的简化版:有三种颜色不同的袜子,分别有 a,b,ca,b,ca,b,c 个,任意两个颜色不同的袜子可以互相匹配,问最多可以匹配多少个,解法也很简单,记 sum=a+b+c,mmax=max(a,b,c)sum=a+b+c,mmax=max(a,b,c)sum=a+b+c,mmax=max(a,b,c),则:

  1. 若 mmax≤sum−mmaxmmax\le sum-mmaxmmax≤sum−mmax:答案为 ⌊sum2⌋\lfloor \frac{sum}{2} \rfloor⌊2sum​⌋
  2. 若 mmax>sum−mmaxmmax>sum-mmaxmmax>sum−mmax:答案为 sum−mmaxsum-mmaxsum−mmax

第二种情况比较显然,用另外两种袜子都来和最大值所表示的袜子匹配一定是最优的,重点是需要想明白如果不等式满足了第一种情况,那么一定是存在着一种分配方案,使得所有袜子要么全匹配,要么至多只剩一只无法匹配的情况

所以扩展到本题的情况,如果去二分答案,那么该如何去 checkcheckcheck 呢。观察上面问题的简化版,不难发现对于某种鲜花而言,大于答案的部分是没有贡献的。假设我们当前二分的答案为 midmidmid,只需要将所有鲜花的 min(mid,ai)min(mid,a_i)min(mid,ai​) 求和记为 sumsumsum,就变成了上面提到的第一种情况,也就是此时可以组成 ⌊sum2⌋\lfloor \frac{sum}{2} \rfloor⌊2sum​⌋ 束鲜花,和 midmidmid 判断一下大小关系就好了

代码:

// Problem: Flowers
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/7830/J
// Memory Limit: 524288 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<list>
#include<unordered_map>
#define lowbit(x) (x&-x)
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const LL inf=0x3f3f3f3f3f3f3f3f;
const int N=1e6+100;
int n,m;
LL a[N];
bool check(LL mid) {LL sum=0;for(int i=1;i<=n;i++) {sum+=min(a[i],mid);}return sum/m>=mid;
}
int main()
{#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--) {read(n),read(m);for(int i=1;i<=n;i++) {read(a[i]);}LL l=0,r=inf,ans=-1;while(l<=r) {LL mid=(l+r)>>1;if(check(mid)) {ans=mid;l=mid+1;} else {r=mid-1;}}cout<<ans<<endl;}return 0;
}

2019ICPC(沈阳) - Flowers(二分)相关推荐

  1. 2019-ICPC沈阳重现 L-Flowers 二分答案 +抽屉原理

    2019-ICPC沈阳重现 L-Flowers 题目: 基本题意: 给你n种花和每种花的数量,每束花要m朵,每束花里不能有同种的花,问最多能准备几束花. 基本思路: 我们二分能准备几束花,根据抽屉原理 ...

  2. 2019ICPC(沈阳) (回文自动机+Palindrome Series优化dp)

    无从追溯的一道题目.. 题目大意:给出一个字符串 s,要求在 s 中选出3个互不相交的回文子串,求长度之和的最大值 题目分析:考虑 n * n 的 dp,dp[ i ][ k ] 为 s[ 1 : i ...

  3. 2019ICPC(沈阳) - Fish eating fruit(树形dp+树根转移)

    题目链接:点击查看 题目大意:给出一棵树,给出分类规则:设两点之间的距离为w,则按照w对3取模后的余数分为三组(0,1,2),问两两顶点之间的距离分类后之和为多少,答案输出模分别为0,1,2时的距离和 ...

  4. 【2019.09.14】2019icpc沈阳网络赛

    题目地址:https://www.jisuanke.com/contest/3007 A: B: C: D: E: F: G: H: I: J: K: 转载于:https://www.cnblogs. ...

  5. 2019-ICPC沈阳J题Graph

    写这篇博客也是为了方便自己以后能够快速回顾LCT,再探索其其他的用途 以后回顾LCT可以参考这篇博客:写得很清楚 题目如下 Rose would like to find whether they t ...

  6. 2021HDU多校6 - 7029 Median(思维)

    题目链接:点击查看 题目大意:初始时给出 nnn 个数字 1,2,3,...,n{1,2,3,...,n}1,2,3,...,n,再给出 mmm 个中位数,问是否能将 nnn 个数字分到 mmm 个组 ...

  7. Flowers(二分答案)

    链接:https://ac.nowcoder.com/acm/contest/7830/J 来源:牛客网 题目描述 Recently Jack becomes much more romantic. ...

  8. HDU - 4614 Vases and Flowers 线段树+二分

    题目链接 思路:线段树维护区间和,当k=1时,询问二分询问[x-(x~n-1)]找到最小位置,复杂度n*logn*logn卡过 #include<stdio.h> #include< ...

  9. 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]

    题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...

最新文章

  1. 忘记Windows 7 登录密码,3分钟我来搞定
  2. 【PHP】 php7.0 扩展列表
  3. C++利用访函数进行选择排序
  4. 转载:KOF97八神攻防战
  5. 【活动】畅想云端加油站,赢iPad
  6. [react] 装饰器(Decorator)在React中有什么应用?
  7. 最全面的MySQL面试题大全-二
  8. bootstarp span标签文本居中_web前端入门到实战:文本图标对齐的几种解决方案
  9. html5发光动态效果图,一款带有发光动画的HTML5表单
  10. Ubuntu下OpenResty 搭建高性能服务端
  11. Docker教程小白实操入门(18)--如何挂载和共享数据卷
  12. RedHat Enterprise Linux 4的新安全机制-SELinux
  13. 注解 @EnableFeignClients 与 @ComponentScan 有冲突
  14. wps android版本下载,wps文档app下载-wps文档 安卓版v2.7.6-PC6安卓网
  15. Windows无法连接到打印机、打印机连接出现0X00000bcb错误应该如何解决?这应该是是最全面的解决方法啦~~
  16. jclasslib插件_JClassLib
  17. javaWeb连接数据库实现简单的登陆注册功能
  18. CSS学习(一)--选择器
  19. 《当程序员的那些狗日日子》(二十三)死在了今天的晚上
  20. 利用Modem实现远程双机互联

热门文章

  1. SpringSecurity OAuth2中表结构说明
  2. 静态代理和动态的本质区别
  3. 依赖注入_引用其他的bean
  4. 区域数据导入功能(在服务端接收上传文件)
  5. SpringBoot_数据访问-整合Druid配置数据源监控
  6. SpringBoot_日志-SpringBoot默认配
  7. Nginx_日志文件讲解
  8. android和web api接口,WebService和Webapi的区别
  9. Spring--总体架构
  10. iPhoneX 序列适配方案