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. ElasticSearch搜索引擎在JavaWeb项目中的应用

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

  2. mysql5.6 无法远程连接问题解决

    需要配置mysql5.6版本的my.cnf文件,我的my.cnf文件配置如下: port=3306是我后来自己加上的.加上这个之后重启mysql service mysqld restart 记得给r ...

  3. Linux命令应用大词典-第22章 GRUB

    22.1 grub-md5-crypt:使用MD5格式加密口令 22.2 grub-install:在设备上安装GRUB 22.3 grub:进入GRUB命令shell 22.4 grub-crypt ...

  4. Unity操作小技巧

    1.操作类 1)F:选择物体后聚焦 2)V:选择物体的顶点,顶点吸附 3)Ctrl:摁住后拖动物体,可以按照系统设置的步长进行移动(Edit -> Snap setting) 4)Q W E R ...

  5. CSP201409-2:画图

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...

  6. CodeForces 838B Diverging Directions 兼【20180808模拟测试】t3

    描述 给你一个图,一共有 N 个点,2*N-2 条有向边. 边目录按两部分给出 1. 开始的 n-1 条边描述了一颗以 1 号点为根的生成树,即每个点都可以由 1 号点到达. 2. 接下来的 N-1 ...

  7. 局部加权回归(LWR) Matlab模板

    将百度文库上一份局部加权回归的代码,将其改为模板以便复用. q2x,q2y为数据集,是n*1的矩阵: r是波长参数,就是对于距离的惩罚力度: q_x是要拟合的数据横坐标,是1*n的矩阵: 得到的q_y ...

  8. C#通过gridview导出excel

    [CustomAuthorize]        public FileResult ExportQuestionCenterExcel(SearchBaseQuestion search)      ...

  9. .Net并行编程 - 并行任务基础知识

    在微软的.NET Framework中,任务是通过System.Threading.Tasks命令空间中的Task类来实现的.它的静态属性Task.Factory是TaskFactory类的一个实例, ...

  10. 四:HDFS Snapshots

    1.介绍 HDFS快照保存某个时间点的文件系统快照,可以是部分的文件系统,也可以是全部的文件系统.快照用来做数据备份和灾备.有以下特点: 1.快照几乎是实时瞬间完成的 2.只有在做快照时文件系统有修改 ...