• HDU 1051(处理木棍 贪心)


    题意是处理一批木棍,如果当前处理的木棍长度和重量均大于前一根木棍的长度和重量,则处理当前木棍花费为 0,否则花费为 1。

    用结构体存储木棍信息,将木棍按照长度从小到大排序,若长度相等则按照重量从小到大排序,在序列中找到比当前所处理的木棍长度和重量均大于且未处理的木棍再进行处理,若没有满足要求的木棍了,则再次从头开始处理未处理过的木棍,直到所有的木棍处理完毕。

    代码如下:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 struct stick
     4 {
     5     int l,w,num;
     6 }p[5050];
     7 bool cmp(stick a,stick b)
     8 {
     9     return a.l!=b.l?a.l<b.l:a.w<b.w;
    10 }
    11 int main()
    12 {
    13     int t,n,ans,sum,el,ew;
    14     scanf("%d",&t);
    15     while(t--)
    16     {
    17         scanf("%d",&n);
    18         for(int i = 0; i < n; ++i)
    19         {
    20             scanf("%d%d",&p[i].l,&p[i].w);
    21             p[i].num = 1;
    22         }
    23         sort(p,p+n,cmp);
    24         ans = sum = 0;
    25         while(sum<n)
    26         {
    27             el = ew = 0;
    28             for(int i = 0; i < n; ++i)
    29                 if(p[i].num&&p[i].l>=el&&p[i].w>=ew)
    30                 {
    31                     p[i].num = 0;
    32                     el = p[i].l;
    33                     ew = p[i].w;
    34                     ++sum;
    35                 }
    36             ++ans;
    37         }
    38         printf("%d
    ",ans);
    39     }
    40     return 0;
    41 }
    View Code
  • 相关阅读:
    灾难 BZOJ 2815
    消耗战 BZOJ 2286
    征途 BZOJ 4518
    纸箱堆叠 BZOJ 2253
    Gate Of Babylon BZOJ 1272
    std::string::npos mean
    [转]整理索引碎片,提升SQL Server速度
    笔记本win7制作wifi
    关闭linux下的使用的端口
    linux多线程
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9607845.html
Copyright © 2020-2023  润新知