题意大概是:有一组木头需要处理,每块木头有长度,重量两个属性,处理的前一块木头长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. ip聚合(百度之星资格赛1003)

    IP聚合 点击这里 Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下, ...

  2. SQL 查找某个字段的首字母

    执行以下SQL语句 SELECT ,--或得首字母出现的位置 ),--要替换的字符串 ),''),--替换后的结果 OrderId, * FROM dbo.OrderSync 得到结果如下

  3. 在WPF中自定义你的绘制(三)

    原文:在WPF中自定义你的绘制(三) 在WPF中自定义你的绘制(三)                                                                  ...

  4. ILSpy,DLL反编译工具,学习与了解原理的好帮手

    你是否一直苦于找到了好的dll却只知道怎么使用而不知道其原理. 你是否在使用一个dll的时候发现它在一些参数时报错了却没法解决. 你是否想成为一个优秀的.net开发,成为一个优秀的系统制造者. 那你需 ...

  5. poj 2531 Network Saboteur(经典dfs)

    题目大意:有n个点,把这些点分别放到两个集合里,在两个集合的每个点之间都会有权值,求可能形成的最大权值.   思路:1.把这两个集合标记为0和1,先默认所有点都在集合0里.             2 ...

  6. PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

    PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) ...

  7. CSS实现限制字数功能

    <div style="width:200px; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; border:1 ...

  8. Oracle delete input与delete all input

    oracle官方文档提示:If you had specified DELETE INPUT rather than DELETE ALL INPUT, then RMAN would have on ...

  9. idea git merge代码

    1.点击idea 右下角的红框区域 2.出现如下截图,第一个红框是本地dev merge,也就是说可以从从本地的dev仓库merge,第二个红框表明可以从远程的git dev merge 第三个红框表 ...

  10. C# Socket服务端和客户端互相send和receive

    服务端           {          ];          ;                                       {                       ...