Move

题意

有k个体积相同的箱子,有个憨憨有固定的装箱策略,每次都只装可以装的重量中最大的东西,求箱子的最小提及

分析

看起来可以二分,但由于他的装箱策略有点蠢,所以只在宏观上满足单调性,在特别小的区间没有单调性,比赛的时候也想到了没有单调性,但是没想清楚在宏观上满足单调性,所以写了二分没过,就心态崩了,赛后发现只要在二分出来的值左右找一个满足的最小的就能过。。。。还是太年轻了

hack:15 5 • 39 39 39 39 39 60 60 60 60 60 100 100 100 100 100,199 为一个合法的答案,但 200 不是,201 也不是。

  1. #include<bits/stdc++.h>
  2. #define pb push_back
  3. #define F first
  4. #define S second
  5. #define pii pair<int,int>
  6. #define mkp make_pair
  7. using namespace std;
  8. const int maxn=2005;
  9. const int inf=1e7;
  10. int a[maxn];
  11. int n,k;
  12. multiset<int>s;
  13. int check(int mid){
  14. s.clear();
  15. for(int i=1;i<=n;i++)s.insert(a[i]);
  16. for(int i=0;i<k;i++){
  17. /*
  18. auto it=(--s.end());
  19. int vl=mid;
  20. if((*it)>mid){
  21. return 0;
  22. }
  23. vl-=(*it);
  24. s.erase(it);
  25. */
  26. int vl=mid;
  27. if(s.empty())return 1;
  28. while(vl>0){
  29. //cout<<vl<<endl;
  30. auto z=s.upper_bound(vl);
  31. if(z==s.begin()){
  32. /*if(*z<=vl){
  33. vl-=*z;
  34. s.erase(z);
  35. cnt++;
  36. // cout<<cnt<<endl;
  37. if(s.empty())return 1;
  38. break;
  39. }
  40. if{
  41. break;
  42. }*/
  43. break;
  44. }
  45. --z;
  46. //if(*z>vl)break;
  47. vl-=(*z);
  48. s.erase(z);
  49. if(s.empty())return 1;
  50. }
  51. }
  52. if(s.empty())return 1;
  53. else return 0;
  54. }
  55. int main(){
  56. int t;
  57. scanf("%d",&t);
  58. int kase=1;
  59. while(t--){
  60. scanf("%d%d",&n,&k);
  61. for(int i=1;i<=n;i++){
  62. scanf("%d",&a[i]);
  63. }
  64. sort(a+1,a+1+n);
  65. int l=1,r=inf,ans=inf;
  66. while(l<=r){
  67. int mid=(l+r)>>1;
  68. if(check(mid)){
  69. ans=min(ans,mid);
  70. r=mid-1;
  71. }
  72. else l=mid+1;
  73. }
  74. for(int i=max(1,ans-100);i<=ans+100;i++){
  75. if(check(i)){
  76. ans=i;
  77. break;
  78. }
  79. }
  80. printf("Case #%d: %d\n",kase++,ans);
  81. }
  82. return 0;
  83. }

2019牛客竞赛第六场D Move 宏观单调,部分不单调的更多相关文章

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

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

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

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

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

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

  4. [2019牛客多校第二场][G. Polygons]

    题目链接:https://ac.nowcoder.com/acm/contest/882/G 题目大意:有\(n\)条直线将平面分成若干个区域,要求处理\(m\)次询问:求第\(q\)大的区域面积.保 ...

  5. 2019 牛客多校第一场 D Parity of Tuples

    题目链接:https://ac.nowcoder.com/acm/contest/881/D 看此博客之前请先参阅吕凯飞的论文<集合幂级数的性质与应用及其快速算法>,论文中很多符号会被本文 ...

  6. 2019牛客多校第二场D-Kth Minimum Clique

    Kth Minimum Clique 题目传送门 解题思路 我们可以从没有点开始,把点一个一个放进去,先把放入一个点的情况都存进按照权值排序的优先队列,每次在新出队的集合里增加一个新的点,为了避免重复 ...

  7. 2019牛客多校第二场H-Second Large Rectangle

    Second Large Rectangle 题目传送门 解题思路 先求出每个点上的高,再利用单调栈分别求出每个点左右两边第一个高小于自己的位置,从而而得出最后一个大于等于自己的位置,进而求出自己的位 ...

  8. 2019牛客多校第二场F-Partition problem(搜索+剪枝)

    Partition problem 题目传送门 解题思路 假设当前两队的对抗值为s,如果把红队中的一个人a分配到白队,s+= a对红队中所有人的对抗值,s-= a对白队中所有人的对抗值.所以我们可以先 ...

  9. 2019牛客多校第一场 E-ABBA(dp)

    ABBA 题目传送门 解题思路 用dp[i][j]来表示前i+j个字符中,有i个A和j个B的合法情况个数.我们可以让前n个A作为AB的A,因为如果我们用后面的A作为AB的A,我们一定也可以让前面的A对 ...

随机推荐

  1. switch 语句 总结笔记

    1.switch 语句 语法: switch(expression) { case value1 : statement1; break; case value2 : statement2; brea ...

  2. 38.Python自定义计算时间过滤器

    在写自定义的过滤器时,因为django.template.Library.filter()本身可以作为一个装饰器,所以可以使用: register = django.template.Library( ...

  3. EasyUI笔记(四)菜单和按钮

    本系列只列出一些常用的属性.事件或方法,具体完整知识请查看API文档 Menu(菜单) 菜单组件通常用于快捷菜单.他是构建其他菜单组件的必备基础组件.比如:menubutton和splitbutton ...

  4. 如何在Mac上显示和查看隐藏的文件/文件夹

    今天的文章推出的是如何在Mac上显示和查看隐藏的文件/文件夹.出于隐私或安全性考虑,出于多种原因,我们需要在Mac计算机上隐藏某些文件.这些文件或文件夹在默认情况下是为Mac的平稳运行而隐藏的,但是如 ...

  5. Selenium实战(六)——数据驱动应用

    一.数据驱动 由于大多数文章和资料都把“读取数据文件”看做数据驱动的标志,下面创建一个baidu_data.csv文件: 文件第一列为测试用例名称,第二列为搜索的关键字.接下来创建test_baidu ...

  6. [USACO19DEC]Tree Depth P

    题意 求逆序对为\(k\)的\(n\)排列中,生成的笛卡尔数,每个位置的深度和.\(n\le 300\) 做法 设\(f_{k}\)为\(n\)排列中逆序对为\(k\)的个数,其生成函数为:\[\pr ...

  7. numpy reshape -1

    来源:https://www.zhihu.com/question/52684594 z = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ...

  8. C# DES加密、解密

    /// <summary> /// DES加密字符串 /// </summary> /// <param name="pToEncrypt">待 ...

  9. React.js高阶函数的定义与使用

    /* 高阶函数的简单定义与使用 一: 先定义一个普通组件 二: 用function higherOrder(WrappendComponent) { return } 将组件包裹起来,并用export ...

  10. IIS7配置asp程序

    Windows 中IIS7.IIS7.5是默认不安装的,所以在安装完Windows Vista/windows 7/windows 2008之后如果需要安装IIS7/iis7.5的话,就要自己动手了. ...