题意大概是:有一组木头需要处理,每块木头有长度,重量两个属性,处理的前一块木头长len,重wei,当下一块木头的len1,与wei1满足:len1>len&&wei1>wei 时不需要准备时间,否则需要1分钟的准备时间,问最短的准备时间。

一开始的思路是将所有木头按照长度,重量两个属性从小到大排序后,找逆序数+1。

后来发现这样的思路是有问题的,比如排序后木头的重量是:1,2,3,4,5,6,4,7,8,9,10,9

如果按寻找逆序数的方法则需要分成

1,2,3,4,5,6

4,7,8,9,10

9

三组。需要3分钟准备。

争确的分组方法应该是:

1,2,3,4,5,6,7,8,9,10

4,9

两组,需要2分钟准备。

另外说一下qsort的comp函数写法,  

int comp(const void * a,const void * b){
if((*(wooden *)a).len>(*(wooden*)b).len){
return ;
}
else if((*(wooden *)a).len==(*(wooden*)b).len&&(*(wooden*)a).wei>(*(wooden*)b).wei){
return ;
}
else if((*(wooden *)a).len==(*(wooden*)b).len&&(*(wooden*)a).wei==(*(wooden*)b).wei){
return ;
}
else{
return -;
}
/*if((*(wooden *)a).len==(*(wooden *)b).len){
return ((*(wooden *)a).wei-(* (wooden *)b).wei);
}
else{
return ((*(wooden *)a).len-(*(wooden *)b).len);
}*/
}

参数必须是const void * 类型。

如果满足>关系则返回1 =关系返回0 <返回-1

因此可以自己定制大于小于条件。

我因为没有考虑到所有的大于小于关系wa了无数次,最后才发现竟然是因为排序问题。

其实注释中的写法更简洁,但是我还是喜欢非注释中的写法。

下面是ac代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
typedef struct node {
int len;
int wei;
int vi;
}wooden; int comp(const void * a,const void * b){
if((*(wooden *)a).len>(*(wooden*)b).len){
return ;
}
else if((*(wooden *)a).len==(*(wooden*)b).len&&(*(wooden*)a).wei>(*(wooden*)b).wei){
return ;
}
else if((*(wooden *)a).len==(*(wooden*)b).len&&(*(wooden*)a).wei==(*(wooden*)b).wei){
return ;
}
else{
return -;
}
/*if((*(wooden *)a).len==(*(wooden *)b).len){
return ((*(wooden *)a).wei-(* (wooden *)b).wei);
}
else{
return ((*(wooden *)a).len-(*(wooden *)b).len);
}*/
}
int main(){
int T,n,i,j,num,first;
wooden woo[];
scanf("%d",&T);
while(T--){
scanf("%d",&n);
if(n==){
printf("0\n");
continue;
}
for(i=;i<n;i++){
scanf("%d %d",&woo[i].len,&woo[i].wei);
woo[i].vi=;
}
qsort(woo,n,sizeof(woo[]),comp);
num=;
for(i=;i<n;i++){
if(woo[i].vi==){
num++;
woo[i].vi=;
first=woo[i].wei;
for(j=i+;j<n;j++){
if(woo[j].wei>=first&&woo[j].vi==){
woo[j].vi=;
first=woo[j].wei;
}
}
}
}
printf("%d\n",num);
}
return ;
}

poj 1065 简单的贪心算法的更多相关文章

  1. poj 1088 滑雪(贪心算法)

    思想: (贪心算法 ,看到题目是中文才做的) 先对数组中的数据进行排序,从最小的数据计算 当前的顶点的可以滑行的最大值=max(周围可达的顶点的可以滑行的最大值)+1 这样计算最后产生的路径肯定是最大 ...

  2. HDOJ 2037简单的贪心算法

    代码: #include<iostream> using namespace std; int main() { int n,s,t1[100],t2[100],i,t,j; while( ...

  3. poj 1065 Wooden Sticks_贪心

    题意:将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间. 思路:先按长度排序,相同在比较重量,然后按顺序比较得出结 ...

  4. POJ 1065 Wooden Sticks#贪心+qsort用法

    (- ̄▽ ̄)-* 这道题用到了cstdlib库的qsort()函数: 用法链接:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.h ...

  5. poj 3045 叠罗汉问题 贪心算法

    题意:将n头牛叠起来,每头牛的力气 s体重 w  倒下的风险是身上的牛的体重的和减去s 求最稳的罗汉倒下去风险的最大值 思路: 将s+w最大的放在下面,从上往下看 解决问题的代码: #include& ...

  6. POJ 1328 Radar Installation 贪心算法

    Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...

  7. ACM_ICPC hdu-2111(简单贪心算法)

    一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!#include <iostream> #include <stdio.h> #inclu ...

  8. hdu4310 - Hero - 简单的贪心

    2017-08-26  15:25:22 writer:pprp 题意描述: • 1 VS n对战,回合制(你打他们一下,需要受到他们所有存活人的攻击)• 你的血量无上限,攻击力为1• 对手血量及攻击 ...

  9. POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统 DP 贪心

    参考链接:http://blog.csdn.net/xiaohuan1991/article/details/6956629 (HDU 1257 解题思路一样就不继续讲解) POJ 1065题意:给你 ...

随机推荐

  1. div+css树形菜单

    自己做过的项目从来没有这种东西,但见过别人的项目都有,未免落伍,学来看看,也不知道自己找到的这个是不是正路子,先贴代码再分析. <!doctype html public "-//W3 ...

  2. mysql各种日志对应的配置项

    01.error_log --log-error=<file_name> 02.general_log --general-log-file=<file_name> --gen ...

  3. WPF 动态更改启动窗体startupUri

    原文:WPF 动态更改启动窗体startupUri 第一步: 在 App.xaml 里,把 StartupUri=""去掉,改成  Startup="Applicatio ...

  4. 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出(转)

    前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题.我们需要找造成OutOfMemoryError原因.一般有两种情况 ...

  5. 关于URL编码的问题

    在进行WEB开发时,字符集编码常常困扰着我们.我们需要区分两种情况,一是URL编码,二是HTTP Body编码.这两种编码所处理的机制不同. URL编码和解码 客户端负责对URL编码,服务端负责解码. ...

  6. hdu 5569 matrix(简单dp)

    Problem Description Given a matrix with n rows and m columns ( n+m ,) and you want to go to the numb ...

  7. hdu 5533 Dancing Stars on Me(数学,水)

    Problem Description The sky was brushed clean by the wind and the stars were cold in a black sky. Wh ...

  8. optimizer for eclipse--Eclipse优化,让你的Eclipse快来飞!

    官方网站:http://zeroturnaround.com/free/optimizer-for-eclipse/ infoq网址:http://www.infoq.com/cn/news/2015 ...

  9. 【奇偶剪枝】【HDU1010】Tempter of the Bone

    题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...

  10. spark基本概念

    Client:客户端进程,负责提交作业到Master. Application:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序, ...