题解:CF1498B Box Fitting

· · 题解

注意:此代码含有整活元素,警惕阅读。

贪心。每次在底下放入最大的元素是最优的,所以每放一个物品后,每次挑最长的放入即可。使用优先队列,最大的始终会在队头。

代码如下:

此代码在 CodeForces 原 OJ 是可以正常 AC 的,AC 记录

#include<bits/stdc++.h>
#define 使用 using
#define 命名空间 namespace
#define 标准命名空间 std
#define 然后 ;
#define 整型 int
#define 主函数 main
#define 左圆括号 (
#define 右圆括号 )
#define 左花括号 {
#define 右花括号 }
#define 返回 return
#define 零 0
#define 输入 cin>>
#define 入 >>
#define 输出 cout<<
#define 出 <<
#define 加 +
#define 换行 '\n'
#define 若条件成立则一直循环 while
#define 减一 --
#define 加一 ++
#define 十的五次幂 1e5
#define 十五 15
#define 左方括号 [
#define 右方括号 ]
#define 循环 for
#define 等于 =
#define 一 1
#define 小于等于 <=
#define 排序 sort
#define 逗号 ,
#define 大的在前 greater
#define 左尖括号 <
#define 右尖括号 >
#define 优先队列 priority_queue
#define 如果 if
#define 是空的 .empty()
#define 放入 .push
#define 减 -
#define 否则 else
#define 的队头元素 .top()
#define 弹出队首 .pop()
#define 的大小 .size()
#define 或者 ||
#define 小于 <
/*--------------------------------------------------------------------------------------*/
使用 命名空间 标准命名空间 然后
整型 t 逗号 n 逗号 w 逗号 a 左方括号 左圆括号 整型 右圆括号 十的五次幂 加 十五 右方括号 然后
整型 主函数 左圆括号 右圆括号 左花括号
    输入 t 然后
    若条件成立则一直循环 左圆括号 t 减一 右圆括号 左花括号
        输入 n 入 w 然后
        循环 左圆括号 整型 i 等于 一 然后 i 小于等于 n 然后 i 加一 右圆括号
            输入 a 左方括号 i 右方括号 然后
        排序 左圆括号 a 加 一 逗号 a 加 一 加 n 逗号 大的在前 左尖括号 整型 右尖括号 左圆括号 右圆括号 右圆括号 然后
        优先队列 左尖括号 整型 右尖括号 q 然后
        循环 左圆括号 整型 i 等于 一 然后 i 小于等于 n 然后 i 加一 右圆括号 左花括号
            如果 左圆括号 q 是空的 或者 q 的队头元素 小于 a 左方括号 i 右方括号 右圆括号
                q 放入 左圆括号 w 减 a 左方括号 i 右方括号 右圆括号 然后
            否则 左花括号
                整型 x 等于 q 的队头元素 然后
                q 弹出队首 然后
                q 放入 左圆括号 x 减 a 左方括号 i 右方括号 右圆括号 然后
            右花括号
        右花括号
        输出 q 的大小 出 换行 然后
    右花括号
    返回 零 然后
右花括号