题目大意:有n根木棍(n<5000),每根木棍有一个长度l和重量w(l,w<10000),现在要对这些木头进行加工,加工有以下规则:

    1.你需要1分钟来准备第一根木头。

    2.如果下一根木头比第一根长且重,那么不需准备时间即可加工,否则需要1分钟时间准备。

木头没有顺序,求最小时间代价。(有多组数据)

输入:第一行t:需要处理的组数,接下来有t组数据,每组第一行是n,表示木头个数,下一行是n组,每组两个数,表示第i块木头的长、重。

  3
  5  
  4 9 5 2 2 1 3 5 1 4
  3
  2 2 1 1 2 2
  3
  1 3 2 2 3 1

输出:

  2
  1
  3(注意换行!!!!!!)

题目分析:一个典型LIS板子题,因为有两个限制条件,所以可以先排序其中一个条件,对另一个条件进行LIS求最少划分数。

      我们可以这么想:现在这些木头已经按长度从小到大排好序了,只要后面一根木头比前面轻,那么代价就+1,所以我们要求最少代价,就是最少划分数,                         划分的依据就是:后一个比前一个木头重,就可以合并,反之则划分数+1。

以下是代码:

 #include<cstdio>#include<cstring>#include<iostream>

#include<algorithm>
using namespace std;
const int maxn=1e5+10;
int n; struct ll{
int l,w;//定义结构体变量保存长度和重量,便于排序。
}lw[maxn]; int c[maxn];
int Max=1; //Max不要设为0,答案最小是1(根据第一条规则)
bool cmp(ll a,ll b){
if(a.l==b.l) return a.w>b.w;
return a.l<b.l;

}
void LIS(){//题目范围是5000,O(n^2)的效率足矣
for(int i=1;i<=n;i++){
c[i]=1;
for(int j=1;j<i;j++){
if(lw[i].w<lw[j].w&&c[i]<c[j]+1){//lw[i].w<lw[j].w是lw[i].w>=lw[j].w的反链
c[i]=c[j]+1;
Max=max(Max,c[i]);
}//最长反链等于最小正链划分数(证明自己百度)
//通过求出最长反链的长度即可求得最少代价
}
}
printf("%d\n",Max);
}
void clear(){
memset(c,1,sizeof(c));
for(int i=1;i<=n;i++){
lw[i].w=lw[i].l=0;
}
Max=1;
}//多组数据的初始化
int main(){
int t;
scanf("%d",&t);
for(int i=1;i<=t;i++){
scanf("%d",&n);
for(int j=1;j<=n;j++){
scanf("%d%d",&lw[j].l,&lw[j].w);
}
//读入数据
sort(lw+1,lw+n+1,cmp);//对长度进行排序,对重量LIS
LIS();
clear();
}
return 0;
}

代码就是这样,其中LIS的思想还是很重要的。

HDU-1051 Wooden Sticks--线性动归(LIS)的更多相关文章

  1. HDU 1051 Wooden Sticks (贪心)

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  2. HDU 1051 Wooden Sticks 贪心||DP

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  3. HDU - 1051 Wooden Sticks 贪心 动态规划

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)    ...

  4. hdu 1051:Wooden Sticks(水题,贪心)

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  5. HDU 1051 Wooden Sticks【LIS】

    题意:给出n个木头的重量wi,长度li,如果满足w[i+1]>=w[i]且l[i+1]>=l[i],则不用耗费另外的加工时间,问至少需要多长时间加工完这些木头. 第一次做这一题目也没有做出 ...

  6. HDU 1051 Wooden Sticks 贪心题解

    本题一看就知道是最长不减序列了,一想就以为是使用dp攻克了. 只是那是个错误的思路. 我就动了半天没动出来.然后看了看别人是能够使用dp的,只是那个比較难证明其正确性,而其速度也不快.故此并非非常好的 ...

  7. HDU 1051 Wooden Sticks

    题意: 有 n 根木棒,长度和质量都已经知道,需要一个机器一根一根地处理这些木棒. 该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模板的. 机器需要的准备时间如下: 1.第一根需要1 ...

  8. HDU 1051 Wooden Sticks 造木棍【贪心】

    题目链接>>> 转载于:https://www.cnblogs.com/Action-/archive/2012/07/03/2574800.html  题目大意: 给n根木棍的长度 ...

  9. hdu 1051 wooden sticks (贪心+巧妙转化)

    #include <iostream>#include<stdio.h>#include<cmath>#include<algorithm>using ...

  10. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

随机推荐

  1. Mybatis源码如何阅读,教你一招!!!

    前言 前一篇文章简单的介绍了Mybatis的六个重要组件,这六剑客占据了Mybatis的半壁江山,和六剑客搞了基友,那么Mybatis就是囊中之物了.对六剑客感兴趣的朋友,可以看看这篇文章:Mybat ...

  2. kickstart半自动安装centos系统与pxe自动安装centos系统

    一.kickstart半自动安装centos系统 关闭防火墙,关闭selinux,使用system-config-kickstart生成kickstart配置文件,启动xmanger-Passive ...

  3. css的引用关系

    总结:离div标签越近,越先被引用 先在同级目录下新建一个stylesheet(是以.css结尾的)注意:link引入进来的css中,class标签也是c1,因为html中div class=c1,因 ...

  4. Linux实战(18):Centos强制踢掉某登录用户的方法

    [root@localhost ~]# pkill -kill -t pts/2

  5. MATLAB 与 Excel 接口

    MATLAB 与 Excel 接口MATLAB 与 Excel 有两种接口方式:一种是通过 MATLAB 提供的 Excel 生成器,生成220 MATLAB 实用教程DLL 组件和 VBA 代码,实 ...

  6. CTF-BugKu-WEB-35-41

    2020.09.19 go on,今天务必搞定web 经验教训 能运行php标签的扩展名有php4,phtml,phtm,phps,php5等,可以在php被过滤的时候尝试: html请求头中,对内容 ...

  7. 关于KeePass基于csv格式的批量导入与导出

    在KeePass的导出选项中,有一个KeePass CSV(1.x),导出后格式如下: "Account","Login Name","Passwor ...

  8. python语言概述

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

  9. CCNP:重发布及实验

    重发布(又:重分布.重分发):一台设备同时运行于两个协议或两个进程,默认从两端学习到的路由条目不共享:重发布技术就是人为的进行共享. 一  满足: 1.必须存在ASBR --- 自治系统边界路由器-- ...

  10. vue下history模式刷新后404错误解决

    官方说明文档: https://router.vuejs.org/zh/g... 一. 实测 Linux 系统 Apache 配置: 更改站点配置文件即可,我这里在 Directory 标签后面添加了 ...