POJ1065贪心

题意:有n条木棒,给出它们每条的l和w,用一台机器对它们进行加工,如果机器正加工的木条,与在它之前加工的木块有关系:l <= l'和w <= w',则机器不用准备时间,否则需准备1分钟。问加工完全部木棒,机器最少需要准备多久。

理解:用贪心要找到一个最优的遍历方案,注意到题目是说与它之前加工的木块的关系。
那么可以认为两个循环,第一个从头开始,第二个循环从第一个循环的变量的下一个开始一直循环到尾部,找出所有满足条件不需要耗时的木块,并对这些木块进行标记,使得在第一个循环里不会再次对他进行计数。
核心代码如下。其中haha数组是以li作为升序排序,并尽量使wi小的在前面。
       int icount = 0;
for (j = 0; j < n; ++j)
{
if (!vis[j])
{
vis[j] = 1 ;
Min = haha[j].wi;
icount++;
}
for (i = j + 1; i < n; ++i)
{
if (haha[i].wi >= Min && !vis[i])
{
vis[i] = 1;
Min = haha[i].wi;
}
}
}
cout << icount << endl;
memset(vis, 0, sizeof(vis));


值得引起注意的是,对于这样的标记数组vis,每次用完一定要记得清0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值