poj 1065 简单的贪心算法
题意大概是:有一组木头需要处理,每块木头有长度,重量两个属性,处理的前一块木头长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 简单的贪心算法的更多相关文章
- poj 1088 滑雪(贪心算法)
		
思想: (贪心算法 ,看到题目是中文才做的) 先对数组中的数据进行排序,从最小的数据计算 当前的顶点的可以滑行的最大值=max(周围可达的顶点的可以滑行的最大值)+1 这样计算最后产生的路径肯定是最大 ...
 - HDOJ 2037简单的贪心算法
		
代码: #include<iostream> using namespace std; int main() { int n,s,t1[100],t2[100],i,t,j; while( ...
 - poj 1065 Wooden Sticks_贪心
		
题意:将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间. 思路:先按长度排序,相同在比较重量,然后按顺序比较得出结 ...
 - POJ 1065 Wooden Sticks#贪心+qsort用法
		
(- ̄▽ ̄)-* 这道题用到了cstdlib库的qsort()函数: 用法链接:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.h ...
 - poj 3045 叠罗汉问题  贪心算法
		
题意:将n头牛叠起来,每头牛的力气 s体重 w 倒下的风险是身上的牛的体重的和减去s 求最稳的罗汉倒下去风险的最大值 思路: 将s+w最大的放在下面,从上往下看 解决问题的代码: #include& ...
 - POJ 1328 Radar Installation 贪心算法
		
Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...
 - ACM_ICPC hdu-2111(简单贪心算法)
		
一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!#include <iostream> #include <stdio.h> #inclu ...
 - hdu4310 - Hero -  简单的贪心
		
2017-08-26 15:25:22 writer:pprp 题意描述: • 1 VS n对战,回合制(你打他们一下,需要受到他们所有存活人的攻击)• 你的血量无上限,攻击力为1• 对手血量及攻击 ...
 - POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统  DP 贪心
		
参考链接:http://blog.csdn.net/xiaohuan1991/article/details/6956629 (HDU 1257 解题思路一样就不继续讲解) POJ 1065题意:给你 ...
 
随机推荐
- div+css树形菜单
			
自己做过的项目从来没有这种东西,但见过别人的项目都有,未免落伍,学来看看,也不知道自己找到的这个是不是正路子,先贴代码再分析. <!doctype html public "-//W3 ...
 - mysql各种日志对应的配置项
			
01.error_log --log-error=<file_name> 02.general_log --general-log-file=<file_name> --gen ...
 - WPF 动态更改启动窗体startupUri
			
原文:WPF 动态更改启动窗体startupUri 第一步: 在 App.xaml 里,把 StartupUri=""去掉,改成 Startup="Applicatio ...
 - 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出(转)
			
前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题.我们需要找造成OutOfMemoryError原因.一般有两种情况 ...
 - 关于URL编码的问题
			
在进行WEB开发时,字符集编码常常困扰着我们.我们需要区分两种情况,一是URL编码,二是HTTP Body编码.这两种编码所处理的机制不同. URL编码和解码 客户端负责对URL编码,服务端负责解码. ...
 - 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 ...
 - 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 ...
 - optimizer for eclipse--Eclipse优化,让你的Eclipse快来飞!
			
官方网站:http://zeroturnaround.com/free/optimizer-for-eclipse/ infoq网址:http://www.infoq.com/cn/news/2015 ...
 - 【奇偶剪枝】【HDU1010】Tempter of the Bone
			
题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...
 - spark基本概念
			
Client:客户端进程,负责提交作业到Master. Application:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序, ...