zoukankan      html  css  js  c++  java
  • hdu1051 Wooden Sticks---贪心

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=1051

    题目大意:
    给你n根木棍的长度和重量。根据要求求出制作该木棍的最短时间。建立第一个木棍需要1分钟,如果接着制作的木棍比这个木棍的长度长(或者相等),重量要重(或者相等),那么接着制作的木棍不需要花费时间!然后如果再继续接着制作,则下一个木棍要比上一个木棍的长度长(或者相等),重量大(或者相等),则这个木棍也不需要花费时间!依次类推,反之,则需要花费一分钟,然后让你求出制作这一批木棍花费的最少的时间是多少!

    解题思路:

    排序,贪心,按照长度从小到大排序,长度相同质量从小到大排序,每次取最小的木棍,从小到大扫描一遍并标记,然后继续取未标记的最小的木棍,以此类推,每次取最小的木棍时,时间加一就得到结果了。

     1 #include<iostream>
     2 #include<string>
     3 #include<vector>
     4 #include<cstdio>
     5 #include<cstring>
     6 #include<algorithm>
     7 #define FOR(i, a, b) for(int i = a; i < b; i++)
     8 using namespace std;
     9 int n, T;
    10 struct node
    11 {
    12     int l, w;
    13     bool operator < (const node & a)const
    14     {
    15         return l < a.l || l == a.l && w < a.w; 
    16     }
    17 };
    18 const int maxn = 5005 ;
    19 node a[maxn];
    20 bool vis[maxn];
    21 bool f(node a, node b)//判断a<b是否成立
    22 {
    23     return (a.l <= b.l && a.w <= b.w);
    24 } 
    25 int main()
    26 {    
    27     cin >> T;
    28     while(T--)
    29     {
    30         cin >> n;
    31         for(int i = 0; i < n; i++)
    32         {
    33             cin >> a[i].l >> a[i].w;
    34             vis[i] = 0;
    35         }
    36         sort(a, a + n);//排序 
    37         int ans = 0;
    38         for(int i = 0; i < n; i++)
    39         {
    40             if(vis[i])continue;//如果已经标记过的,直接下一个 
    41             vis[i] = 1;
    42             node now = a[i];//设置当前小的木棍,找到一个比它大的,更新当前木棍 
    43             for(int j = i + 1; j < n; j++)
    44             {
    45                 if(vis[j])continue;
    46                 if(f(now, a[j]))
    47                 {
    48                     vis[j] = 1;
    49                     now = a[j];
    50                  }
    51             }
    52             ans++;
    53         }
    54         cout<<ans<<endl;
    55     }
    56     return 0;
    57 }
    NOIP普及组、提高组培训,有意可加微信fu19521308684
  • 相关阅读:
    centos 中遇到了pcap.h没有那个文件或者目录
    linux中mysql密码修改
    httpd服务器正常,index.html访问不了
    linux 中防火墙的关闭
    Linux下面如何用命令进行配置网络
    Linux普通用户权限修改
    Linux系统的安装和网络配置
    js 继承
    鼠标点击按钮控制图片移动或者键盘控制图片移动(解决问题:parseInt失效问题,用Number)
    冒泡排序+二分查找
  • 原文地址:https://www.cnblogs.com/fzl194/p/8675751.html
Copyright © 2011-2022 走看看