Wooden Sticks

点我挑战题目

题意分析

给出T组数据,每组数据有n对数,分别代表每个木棍的长度l和重量w。第一个木棍加工需要1min的准备准备时间,对于刚刚经加工过的木棍,如果接下来的木棍l和w均小于等于上一根木棍的l和w那么就不许要准备时间,否则的话还需要1min的准备时间。求解对于每组数据,所需要的最小的准备时间是多少。

贪心策略。

对木棍进行降序排序,首要关键字是l,次要关键字是w(可以颠倒)。然后选取最顶端的木棍,向下遍历,对于当前木棍,若l和w均小于等于顶层木棍,那么标记它为已处理,并且更新此时木棍的数据,继续遍历,直到没有木棍未知。此时判断所有的木棍是否处理完,是的话输出结果,否则的话继续选取顶层没有处理的木棍,重复遍历的操作。

代码总览

/*
Title:HDOJ.1051
Author:pengwill
Date:2016-11-25
*/
#include <iostream>
#include <algorithm>
#include <stdio.h>
#define max 5005
using namespace std;
struct stick{
int len;
int weight;
bool fish;
}item[max];
bool cmp(stick a,stick b)
{
if(a.len == b.len){
return a.weight>b.weight;
}else{
return a.len>b.len;
}
} int main()
{
int t;
//freopen("in.txt","r",stdin);
scanf("%d",&t);
while(t--){
int n,i;
scanf("%d",&n);
for(i = 0;i<n;i++){
scanf("%d %d",&item[i].len,&item[i].weight);
}
sort(item,item+n,cmp);
int num = 0,nlen,nweight,cnt = 0,temp= 0;
while(num!= n){
for(i = temp;i<n;i++){
if(item[i].fish == false){
nlen = item[i].len;
nweight = item[i].weight;
item[i].fish = true;
num++;cnt++;i++;
temp = i;
break;
}
}
for(;i<n;i++){
if(item[i].fish == false && item[i].len<=nlen && item[i].weight<=nweight){
item[i].fish = true;
num++;
nlen = item[i].len;
nweight = item[i].weight;
}
}
}
printf("%d\n",cnt);
for(i = 0;i<n;i++){
item[i].fish = false;
} }
return 0;
//fclose(stdin);
}

HDOJ.1051 Wooden Sticks (贪心)的更多相关文章

  1. HDOJ 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 (贪心)

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

  3. HDU 1051 Wooden Sticks 贪心||DP

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

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

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

  5. HDOJ 1051. Wooden Sticks

    题目 There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The ...

  6. HDU 1051 Wooden Sticks 贪心题解

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

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

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

  8. 1270: Wooden Sticks [贪心]

    点击打开链接 1270: Wooden Sticks [贪心] 时间限制: 1 Sec 内存限制: 128 MB 提交: 31 解决: 11 统计 题目描述 Lialosiu要制作木棍,给n根作为原料 ...

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

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

随机推荐

  1. CentOS 7.2-编译安装zabbix 3.4

    起因: 前面已经使用yum安装了zabbix 3.4了,准备去交差了,交差时老大明确要求必须使用编译安装,统一放在/usr/local目录下.... 重来吧!! 一.环境说明 本次安装使用CentOS ...

  2. Java 语法基础

    一 关键字 关键字: 其实就是某种语言赋予了特殊含义的单词 保留字: 其实就是还没有赋予特殊含义 但是准备日后要使用过的单词 二 标示符 标示符: 其实就是在程序中自定义的名词 比如类名, 变量名, ...

  3. <cctype>

    头文件名称:  <cctype> (ctype.h) 头文件描述: 这是一个拥有许多字符串处理函数声明的头文件,这些函数可以用来对单独字符串进行分类和转换: 其中的函数描述: 这些函数传入 ...

  4. Java进阶知识点:并发容器背后的设计理念

    一.背景 容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的.当容器和多线程并发编程相遇时,程序员又该何去何从呢? 通常有两种 ...

  5. react和vue的区别

    1.数据改变的方式 react是通过setState来改变数据,然后重走组件的渲染过程.而vue是通过Object.defineProperty和watcher来显示响应式的数据,所以数据的改变是直接 ...

  6. LiveVideoStack Meet|深圳 多媒体开发新趋势

    2018年初始,音视频技术生态并不平静,Codec争夺愈加激烈,新一代标准的挑战一浪高过一浪:WebRTC的定版也为打通浏览器.移动端乃至IoT带来了机会:此外AI.区块链技术的兴起,催化着与多媒体领 ...

  7. Spring Boot - Filter实现简单的Http Basic认证

    Copy自http://blog.csdn.net/sun_t89/article/details/51916834 @SpringBootApplicationpublic class Spring ...

  8. IntelliJ IDEA 2017.3/2018.1/.2 激活

    传统的License Server方式已经无法注册IntelliJ IDEA2017.3的版本了. http://idea.lanyus.com,这个网站有破解补丁和注册码两种方式,另外http:// ...

  9. [C++] OOP - Base and Derived Classes

    There is a base class at the root of the hierarchy, from which the other class inherit, directly or ...

  10. RedHat/CentOS利用iso镜像做本地yum源

    在这里用iso或者光盘做本地yum源的方法是差不多的,只是用光盘的话Linux系统会自动挂载,用iso镜像的或需要手动挂载,这里就说挂载iso的方法吧. (1) 创建iso存放目录和挂载目录 mkdi ...