题意

给定 $n$ 个物品,体积分别为 $v_i$,现有 $K$ 的容积一样的箱子,按如下策略装入物品:每次选取尽可能大的装入(较大的不能装入时可以向小的找),依次装入箱子。

分析

首先,不具有严格的单调性,即可能大的箱子不符合但小的符号。与我们的直觉有点不同,是这个策略造成的。

但是基本单调,最优解应该在二分结果附近,于是有了方法一。

方法二:找出答案的上下界,下界 $\left \lceil sum/k \right \rceil$,上界 $ \left \lceil sum/k \right \rceil + maxV$,枚举。

#include<bits/stdc++.h>
using namespace std; const int maxn = + ;
int n,k,a[maxn];
multiset<int>st; bool judge(int mid)
{
st.clear();int tmpk = k;
for(int i = ;i < n;i++) st.insert(a[i]);
while(!st.empty() && tmpk--)
{
int x = mid;
while(x)
{
multiset<int>::iterator it = st.upper_bound(x); //第一个小于或等于x
if(it == st.begin()) break;
it--;
x -=*it;
st.erase(it);
}
}
if(!st.empty()) return false;
return true;
} int main()
{
int T, kase=;
scanf("%d", &T);
while(T--)
{
scanf("%d%d", &n, &k);
for(int i = ;i < n;i++)
{
scanf("%d", &a[i]);
}
int l = , r = , ans;
while(l < r)
{
int mid = (l+r)>>;
if(judge(mid))
{
ans = mid;
r = mid-;
}
else l = mid+;
}
int res = ans; //printf("%d\n", ans);
for(int i = max(, ans-);i <= ans;i++) //往小一点尝试一下
if(judge(i))
{
res = i;
break;
}
printf("Case #%d: %d\n", ++kase, res);
}
return ;
}

参考链接:

1. https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41019801

2. https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41026089

2019牛客多校D move——乱搞&&思维题的更多相关文章

  1. 2019牛客多校C Governing sand——桶&&思维题

    题意 有 $n$ 种树,每种树都有高度 $H_i$,费用 $C_i$,数量 $P_i$,现要砍掉一些树,使得剩下的树中最高的树的数量超过一般,求最小的费用.($1 \leq n \leq 10^5, ...

  2. 2019牛客多校第一场 I Points Division(动态规划+线段树)

    2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...

  3. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

  4. 2019牛客多校第八场 F题 Flowers 计算几何+线段树

    2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或 ...

  5. 牛客多校第3场 J 思维+树状数组+二分

    牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问 ...

  6. 2019牛客多校 Round4

    Solved:3 Rank:331 B xor 题意:5e4个集合 每个集合最多32个数 5e4个询问 询问l到r个集合是不是都有一个子集的xor和等于x 题解:在牛客多校第一场学了线性基 然后这个题 ...

  7. 2019牛客多校第一场E ABBA(DP)题解

    链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 ABBA 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语 ...

  8. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  9. 2019牛客多校第四场 A meeting

    链接:https://ac.nowcoder.com/acm/contest/884/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10485 ...

随机推荐

  1. 如何制作windows live writer绿色便携版

    如何制作windows live writer绿色便携版 2013年10月03日 ⁄ 综合 ⁄ 共 463字 ⁄ 字号 小 中 大 ⁄ 评论关闭 制作一个绿色便携版的wlw 1.首先下载 techli ...

  2. Stream入门及Stream在JVM中的线程表现

    继上次学习过Java8中的非常重要的Lambda表达式之后,接下来就要学习另一个也比较重要的知识啦,也就如标题所示:Stream,而它的学习是完全依赖于之前学习的Lambda表达式. 小实验引入: 这 ...

  3. [转帖]阿里云VS腾讯云 谁才是中国未来的云计算之王?

    阿里云VS腾讯云 谁才是中国未来的云计算之王? https://www.qianzhan.com/analyst/detail/220/191008-f05009f6.html 吴小燕• 2019-1 ...

  4. springboot用controller跳转html页面

    之前SSM框架,里面有webapps文件夹,用来存放前端页面和各种前端资源,现在SpringBoot中没有webapps文件夹,springboot结构如下: 第一.resourses下文件夹publ ...

  5. MarkdownPad 2 用 LaTeX 编写公式(17)

    方法一:(可离线显示) 1.解压「jaxedit-master.zip」,解压后找到「jaxedit-master」文件夹下「MathJax.js」文件的路径,这个文件在该文件下的路径是「jaxedi ...

  6. 题解 luoguP3554 【[POI2013]LUK-Triumphal arch】

    代码的关键部分 inline void dfs(int u,int fa) { ; for(int i=first[u]; i; i=nxt[i]) { int v=go[i]; if(v==fa)c ...

  7. GPIO 输出—使用固件库点亮 LED

    编程要点 1. 使能 GPIO 端口时钟:  2. 初始化 GPIO 目标引脚为推挽输出模式:  3. 编写简单测试程序,控制 GPIO 引脚输出高.低电平. LED的电路图 过程: 1.拷贝一个库函 ...

  8. prometheus+grafana监控nginx

    被监控机器环境搭建&配置 nginx-module-vts下载: https://github.com/vozlt/nginx-module-vts nginx-module-vts安装 un ...

  9. 【Transact-SQL】让人快遗忘的游标

    原文:[Transact-SQL]让人快遗忘的游标 最初学SQL Server的时候,当学到游标的时候,突然有了一种亲切感,因为这种通过一个while循环,一条一条的处理数据的方式,很像学过的过程式语 ...

  10. RestControllerAdvice,ControllerAdvice

    1.切记@RestControllerAdvice 和 @ControllerAdvice 不能放在common里,会不生效,还会引起子项目的全局异常失败. 所以这2个还是放在各自的子项目里去处理.一 ...