2019牛客竞赛第六场D Move 宏观单调,部分不单调
Move
题意
有k个体积相同的箱子,有个憨憨有固定的装箱策略,每次都只装可以装的重量中最大的东西,求箱子的最小提及
分析
看起来可以二分,但由于他的装箱策略有点蠢,所以只在宏观上满足单调性,在特别小的区间没有单调性,比赛的时候也想到了没有单调性,但是没想清楚在宏观上满足单调性,所以写了二分没过,就心态崩了,赛后发现只要在二分出来的值左右找一个满足的最小的就能过。。。。还是太年轻了
hack:15 5 • 39 39 39 39 39 60 60 60 60 60 100 100 100 100 100,199 为一个合法的答案,但 200 不是,201 也不是。
#include<bits/stdc++.h>
#define pb push_back
#define F first
#define S second
#define pii pair<int,int>
#define mkp make_pair
using namespace std;
const int maxn=2005;
const int inf=1e7;
int a[maxn];
int n,k;
multiset<int>s;
int check(int mid){
s.clear();
for(int i=1;i<=n;i++)s.insert(a[i]);
for(int i=0;i<k;i++){
/*
auto it=(--s.end());
int vl=mid;
if((*it)>mid){
return 0;
}
vl-=(*it);
s.erase(it);
*/
int vl=mid;
if(s.empty())return 1;
while(vl>0){
//cout<<vl<<endl;
auto z=s.upper_bound(vl);
if(z==s.begin()){
/*if(*z<=vl){
vl-=*z;
s.erase(z);
cnt++;
// cout<<cnt<<endl;
if(s.empty())return 1;
break;
}
if{
break;
}*/
break;
}
--z;
//if(*z>vl)break;
vl-=(*z);
s.erase(z);
if(s.empty())return 1;
}
}
if(s.empty())return 1;
else return 0;
}
int main(){
int t;
scanf("%d",&t);
int kase=1;
while(t--){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sort(a+1,a+1+n);
int l=1,r=inf,ans=inf;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)){
ans=min(ans,mid);
r=mid-1;
}
else l=mid+1;
}
for(int i=max(1,ans-100);i<=ans+100;i++){
if(check(i)){
ans=i;
break;
}
}
printf("Case #%d: %d\n",kase++,ans);
}
return 0;
}
2019牛客竞赛第六场D Move 宏观单调,部分不单调的更多相关文章
- 2019牛客多校第一场 I Points Division(动态规划+线段树)
2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...
- 2019牛客多校第二场 A Eddy Walker(概率推公式)
2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...
- 2019牛客多校第一场E ABBA(DP)题解
链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 ABBA 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语 ...
- [2019牛客多校第二场][G. Polygons]
题目链接:https://ac.nowcoder.com/acm/contest/882/G 题目大意:有\(n\)条直线将平面分成若干个区域,要求处理\(m\)次询问:求第\(q\)大的区域面积.保 ...
- 2019 牛客多校第一场 D Parity of Tuples
题目链接:https://ac.nowcoder.com/acm/contest/881/D 看此博客之前请先参阅吕凯飞的论文<集合幂级数的性质与应用及其快速算法>,论文中很多符号会被本文 ...
- 2019牛客多校第二场D-Kth Minimum Clique
Kth Minimum Clique 题目传送门 解题思路 我们可以从没有点开始,把点一个一个放进去,先把放入一个点的情况都存进按照权值排序的优先队列,每次在新出队的集合里增加一个新的点,为了避免重复 ...
- 2019牛客多校第二场H-Second Large Rectangle
Second Large Rectangle 题目传送门 解题思路 先求出每个点上的高,再利用单调栈分别求出每个点左右两边第一个高小于自己的位置,从而而得出最后一个大于等于自己的位置,进而求出自己的位 ...
- 2019牛客多校第二场F-Partition problem(搜索+剪枝)
Partition problem 题目传送门 解题思路 假设当前两队的对抗值为s,如果把红队中的一个人a分配到白队,s+= a对红队中所有人的对抗值,s-= a对白队中所有人的对抗值.所以我们可以先 ...
- 2019牛客多校第一场 E-ABBA(dp)
ABBA 题目传送门 解题思路 用dp[i][j]来表示前i+j个字符中,有i个A和j个B的合法情况个数.我们可以让前n个A作为AB的A,因为如果我们用后面的A作为AB的A,我们一定也可以让前面的A对 ...
随机推荐
- 爬取漫画DB上的《浪客行》
漫画链接:https://www.manhuadb.com/manhua/324 建议:早上爬,速度较快. 天下无双宫本武藏 代码 # https://www.manhuadb.com/manhua/ ...
- Win10查看屏保的所在位置
路径 C:\Users\Hlzy\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\Local ...
- Page Object设计模式(二)——poium测试库
一.简介 poium是一个基于Selenium/appium的Page Object测试库,最大的特点是简化了Page层元素的定义. 项目地址:https://github.com/SeldomQA/ ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:hive安装
实验目的 了解hive的原理和安装方式 学习使用MySQL数据库 使用hive进行基本操作 实验原理 1.Hive Hive是一个数据仓库技术,包括解释器.编译器.优化器,一次将一个sql语句装化为m ...
- nginx配置location与rewrite规则教程
location 教程 location 教程 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] }location / { ...
- HashMap的一些学习
1.equals和==的对比==用于比较引用和比较基本数据类型时具有不同的功能:A:比较基本数据类型,如果两个值相同,则结果为true而在比较引用时,如果引用指向内存中的同一对象,结果为true; e ...
- Codeforces 1304F2 Animal Observation (hard version) 代码(dp滑动窗口线段树区间更新优化)
https://codeforces.com/contest/1304/problem/F2 #include<bits/stdc++.h> using namespace std; ; ...
- H5_0014:background-size设置
2,background-position
- Java体系结构
java程序运行过程图 文章中内容大多来自该处Java虚拟机规范----JVM体系结构 - Java初级码农 - 博客园 JDK体系 JDK体系结构图 JDK.JRE.JVM之间的关系 JDK:Jav ...
- 刷题22. Generate Parentheses
一.题目说明 这个题目是22. Generate Parentheses,简单来说,输入一个数字n,输出n对匹配的小括号. 简单考虑了一下,n=0,输出"";n=1,输出" ...