洛谷 P1233 【木棍加工】题解

2023-05-16

算法:排序,DP(最长上升子序列)

前言:

此题的数据非常水,这里给予一组 hack 数据:


21
96 25 1 9 39 19 87 51 7 61 11 1 46 74 51 1 1 61 51 84 51 76 49 33 13 57 73 86 41 99 9 81 41 51 13 61 17 33 81 62 47 41   

请求加强数据!

------------

正文

我看题解里好多人写的都是贪心,唯一一个赞比较多的 DP 解法还被我的数据 hack 了,于是就写了这篇题解(其实我第一次提交的代码也会被 hack)。

这道题首先要用结构体排序,以木棍的长度为第一关键字(从大到小),以宽度为第二关键字排序(同样也是从大到小)。

需要注意的是,如果在两根木棍长度相等的情况下,必须要按宽度排序,否则就会被 hack。

在排序后,我们直接可以扔到这个长度不管了,直接把宽度跑一遍最长不上升子序列,得出最长不上升子序列的个数。但是我们知道,最长不上升子序列的个数等于最长上升子序列的长度,所以我们只需要求出后者即可。

$ \rm code $


# include <bits/stdc++.h>
using namespace std;
# define maxN 50005
struct Stick {
    int l, w;
}stick[maxN];
// 首先定义一个名字为 Stick 的结构体,存放木棍的长度和宽度.
int n, dp[maxN];
// 然后定义木棍的数量 n 和 dp 数组.
bool cmp(Stick, Stick);
// 这是排序函数.
int main() {
//    freopen("1.in", "r", stdin);
    cin >> n;
    for(int i = 1; i <= n; ++i) cin >> stick[i].l >> stick[i].w;
    sort(stick + 1, stick + 1 + n, cmp);
    // 输入数据,排序.
    dp[1] = stick[1].w;
    // dp 数组的初始化.
    int k = 1; // 答案最小也为 1.
    for(int i = 2, j; i <= n; ++i) j = lower_bound(dp + 1, dp + k + 1, stick[i].w) - dp, j <= k ? dp[j] = stick[i].w : dp[++k] = stick[i].w;
    //跑一遍最长上升子序列.
    cout << k << '\n', exit(0);
    // 输出答案.
}
bool cmp(Stick a, Stick b) {
    if(a.l != b.l) return a.l > b.l; // 如果两根木棍的长度不等,那么按木棍的长度从大到小排序.
    return a.w > b.w; // 否则按木棍的宽度从大到小排序.
}  

 

转载于:https://www.cnblogs.com/Xray-luogu/p/11006416.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

洛谷 P1233 【木棍加工】题解 的相关文章

  • vs 2010 专业版 密钥

    YCFHQ 9DWCY DKV88 T2TMH G7BHP 转载于 https www cnblogs com daretodream archive 2013 04 02 2995147 html
  • 公历,阴历转换

    公历 xff0c 阴历转换 static inline void ValidCtrCheck ThsDivineCalendar new ThsDivineCalendar NULL fastcall ThsDivineCalendar T
  • pytorch---情感分析

    前言 xff1a 这个系列一共有8个部分 主要参考了github上的几个代码 使用工具有torchtext xff0c pytorch 数据集主要是烂番茄电影评论数据集https www kaggle com c sentiment ana
  • 【three.js练习程序】旋转物体自身

    lt DOCTYPE html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt ceshi lt title gt lt script type
  • Linux系统检查查看桌面环境

    Linux的桌面系统系统多达十几种 xff0c 像gnome kde mate cinnamon lxde xfce jwm等 比较常用的一般是gnome kde xfce等 那么如何判断Linux系统安装了哪种桌面环境组件呢 xff1f
  • Ubuntu18.04.4 安装xrdp 远程桌面

    因为工作的关系 xff0c 需要远程桌面使用Linux xff0c 安装了最新的Ubuntu18 04 4版本 参考了网上一堆的VNC和安装xubuntu等 xff0c 都不是自己想要的 xff0c ubuntu原生的桌面就非常的好 只是安
  • 小米手机android_id如何查看,一篇文章看懂如何通过手机上小米社区查Mi ID?

    作为小米社区的老用户都知道 xff0c 早先在老的小米社区App或者电脑版个人主页就可以直接查看到用户的Mi ID 而现在的新版本小米社区无论是App版本或者电脑端都无法再直接地查看到个人或者其他人Mi ID 本期Flashcer就和大家分
  • 使用寄存器点亮LED——编程实战

    stm32的编程和stc89c51还是存在着很多思想上的不同的 xff0c 在51单片机中 xff0c 我们点亮LED灯 xff0c 只用给对应IO高低电平就可以了 xff0c 而stm32中 xff0c 就一个简单的GPIO xff0c
  • 【转载】取消Debian系统自动锁屏

    Linux的自动锁屏功能 xff0c 会在你离开屏幕的两分钟 xff0c 甚至更短的时候内 xff0c 将屏幕锁住 xff0c 需要输入密码才能进入Linux系统 可按下图设置 xff0c 关掉Linux自动锁屏功能 System gt P
  • 如何cout输出CString对象?

    CString str 61 34 HeyLook 34 char pch 61 new char str GetLength 43 1 pch 61 str GetBuffer str GetLength 43 1 str Release
  • python中Tuple详解

    python中Tuple详解 另外 还有一个和list 很像的数据tuple 中文叫元组 他和list的主要区别就是 tuple是一开始就定义好的 即 assign first 之后就永远不能被改变了 所以 一般全局比较重要的数据 我们都是
  • 自动分析局域网内网速慢的电脑---结合IPERF,TASK SCHEDULE,PYTHON,MAIL

    今天写的 用IPERF作测试局域网速度的工具 用AD域组策略推送给客户端 xff0c xcopy y XXX XXX Iperf c Iperf 然后 xff0c 客户端会在每次LOGON的执行测试网速的BAT文件 xff0c 并将结果存放
  • 对IIC总线时序的一点理解以及ACK和NACK(NAK)

    参考自 xff1a http blog chinaunix net uid 16100003 id 3059814 html 关于IIC的响应问题 xff1a 对于每一个接收设备 xff08 从设备 xff0c slaver xff09 x
  • Permutation test(排列(组合)检验)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 对Permutation test 的首次描述可追溯到上个世纪30年代 Fisher 1935 和Pitman 1937 介绍了其在线性统计模型中的应用 但该法计算工作量过
  • windows全局变量设置

    今天安装jave RE xff0c 需要设置全局变量 xff0c 除了图形界面的配置外 xff0c 有没有其他的方式设置呢 xff0c 开始以为set可以 xff0c 看了半天没整明白到网上search下 xff0c 见到了几种方法 xff

随机推荐

  • ProxmoxVE 单机模式安装(2台服务器非集群)

    上面左边是我的个人微信 xff0c 如需进一步沟通 xff0c 请加微信 右边是我的公众号 Openstack私有云 xff0c 如有兴趣 xff0c 请关注 公司有两台测试服务器 xff0c 是华为的RH2288 V3 xff0c 配置6
  • Desktop.ini

    类型1 ShellClassInfo IconFile 61 abc exe abc ico IconIndex 61 0 类型2 ShellClassInfo IconResource 61 abc exe abc ico 0 类型2 的
  • linux下安装ntop

    Ntop是一种监控网络流量工具 xff0c 用ntop显示网络的使用情况比其他一些网络管理软件更加直观 详细 Ntop甚至可以列出每个节点计算机的网络带宽利用率 他是一个灵活的 功能齐全的 xff0c 用来监控和解决局域网问题的工具 xff
  • iOS学习24之UIControl及其子类

    1 UIControl初识 1 gt 概述 UIControl 是有控制功能 的视图 如UIButton UISlider UISegmentedControl等 的父类 只要跟控制有关的控件 都是继承于该类 UIControl 这个类通常
  • URL中“#” “?” &“”号的作用

    1 10年9月 xff0c twitter改版 一个显著变化 xff0c 就是URL加入了 34 34 符号 比如 xff0c 改版前的用户主页网址为http twitter com username改版后 xff0c 就变成了http t
  • 强化路由器IOS安全-禁用不必要的服务

    Cisco Discovery Protocol CDP xff1a 思科发现协议 xff08 CDP xff1a Cisco Discovery Protocol xff09 CDP 基本上是用来获取直连设备的协议地址以及发现这些设备的平
  • 【OCR技术系列之三】大批量生成文字训练集

    放假了 xff0c 终于可以继续可以静下心写一写OCR方面的东西 上次谈到文字的切割 xff0c 今天打算总结一下我们怎么得到用于训练的文字数据集 如果是想训练一个手写体识别的模型 xff0c 用一些前人收集好的手写文字集就好了 xff0c
  • ubuntu安装mysql报错_在Ubuntu上安装mysql数据库和遇到的问题

    如果上面没有成功 xff0c 而出现了这样的问题的话 xff1a Mysql ERROR 1045 28000 Access denied for user 39 root 39 64 39 localhost 39 using passw
  • debian wheezy 使用

    为什么80 的码农都做不了架构师 xff1f gt gt gt 准备 xff1a 1 启动盘制作 软件 xff1a windows下lililinuxusbcreator linux下unetbootin debian 7 0 iso mi
  • Debian 7 安装 Wireshark

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 安装Wireshark sudo apt get install wireshark 如果以非root权限运行wireshark xff0c 可能会出现 No inte
  • win7桌面仿linux桌面,windows10开启 linux子系统桌面,巨详细,值得一藏-win7桌面主题...

    题记 xff1a 安装完微软windows10的ubuntu子系统之后 xff0c 想打开这款子系统的桌面 xff0c 一直摸不着头脑 找了很多教程 xff0c 都有点凌乱 xff0c 在此整理一下 0 备份原 get源文件 sudo mv
  • 石器时代地图->魔力宝贝地图

  • proxmox集群节点崩溃处理

    问题描述 在现有集群加入一个物理节点 xff0c 接着再此节点创建ceph监视器 创建OSD 从宿主机系统执行ceph osd tree查看状态 xff0c 创建起来的几个OSD状态都正常 xff08 up xff09 xff0c 从pro
  • debian笔记本电源管理

    kde下面使用kpowersave工具 xff0c 实现suspend和hibernate还需要pm ultis包 此时可以通过root权限pm suspend和pm hibernate实现to ram和to disk 普通用户用kpowe
  • 发挥Squid优势,TCP_HIT变成TCP_MEM_HIT

    192 168 10 139 15 Dec 2011 16 49 37 43 0800 34 GET http www jian com p w picpaths shufa jpg HTTP 1 0 34 200 95900 34 34
  • linux默认有回收站吗,linux下默认删除文件到回收站(bash实现)

    fedora下总是会把文件不小心删除了 xff0c 所以下面的脚本把实现 xff1a 文件删除默认移动到自己的回收站里面 功能 xff1a 脚本实现删除文件或者目录到 waste 自己定义 脚本附带文件名或者目录名 xff0c 则默认代表
  • EXCEL复制死机的问题

    最近发现好几例excel复制死机的现象 xff0c 特总结了一下解决方法 基本上就是下面几种 xff1a 可以供大家参考 1 剪贴板的问题 xff0c 与迅雷等监视剪贴板的软件相关 打开 配置 监视 监视剪贴板 xff0c 取消这个勾选 x
  • Transport endpoint is not connected 报错

    在android中做在线升级程序 xff0c 在http请求数据时 xff0c 出现如下错误 xff1a java net SocketTimeoutException Transport endpoint is not connected
  • Ubuntu下Qt自动退出

    一直在使用Qt xff0c 真的被它强大的功能 漂亮的界面深深吸引了 不过最近遇到了一件非常让人不爽的事情 xff0c 就是在Qt下创建文件的时候会自动 xff0c 而且没有代码提示功能 想想吧 xff0c 这是多么令人头痛 xff0c 没
  • 洛谷 P1233 【木棍加工】题解

    算法 xff1a 排序 xff0c DP xff08 最长上升子序列 xff09 前言 xff1a 此题的数据非常水 xff0c 这里给予一组 hack 数据 xff1a 21 96 25 1 9 39 19 87 51 7 61 11 1