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题意:给你 ...
随机推荐
- 转的git
原文链接:http://blog.csdn.NET/dengjianqiang2011/article/details/9260435 如果输入$ Git remote add origin git@ ...
- GNU所有软件下载,其中最有意思的是octave
http://ftp.gnu.org/gnu/ 最有意思的是octave:https://www.gnu.org/software/octave/http://ftp.gnu.org/gnu/octa ...
- [Leetcode][Python]45: Jump Game II
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 45: Jump Game IIhttps://oj.leetcode.com ...
- PHP实现好友生日邮件提醒
我有一个想法是这样的,希望每天知道今天是我哪位好友的生日? 当然,我得首先保存我所有好友的生日信息 实现:在新浪申请免费服务器,并申请Mysql应用,然后建一张表保存好友的信息 我想,我已经完成第一步 ...
- 【LeetCode练习题】Candy
分糖果 There are N children standing in a line. Each child is assigned a rating value. You are giving c ...
- optics matlab实现
关于optics算法的一些基本概念,在此一一忽略. 先求得所有节点的核心距离,用cd矩阵表示: 然后对每个节点进行处理,这个时候不需要考虑该节点是不是核心对象,按顺序取节点,如果该拓展点是核心对象,处 ...
- poj 3185 The Water Bowls(反转)
Description The cows have a line of water bowls water bowls to be right-side-up and thus use their w ...
- poj 2393 Yogurt factory(dp+贪心)
奶牛们建了一家酸奶厂,在N周内每周需要出货Y_i单位酸奶,第i周成本为C_i,储存费为每周S.求总体最低成本. 贪心策略是维持每周的最低单位成本,每周可能用上周剩下的,也可能生产新的.于是该周单位成本 ...
- android listiew适配器
List<Map<String>> Items = new ArrayList<Map<String>>(); // 把该显示的内容放到list中 fo ...
- Bctf-pwn_ruin-re_lastflower
Pwn-ruin 用几个词来概括下漏洞原理:Arm+heap overflow(house of force)+dl-resolve Info leak: 在printf key8时,泄漏堆上地址(s ...