• nyoj-236-心急的C小加


    http://acm.nyist.net/JudgeOnline/problem.php?pid=236

    心急的C小加

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:4
    描述

    C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?

    输入
    第一行是一个整数T(1<T<1500),表示输入数据一共有T组。
    每组测试数据的第一行是一个整数N(1<=N<=5000),表示有N个木棒。接下来的一行分别输入N个木棒的L,W(0 < L ,W <= 10000),用一个空格隔开,分别表示木棒的长度和质量。
    输出
    处理这些木棒的最短时间。
    样例输入
    3  
    4 9 
    5 2 
    2 1 
    3 5 
    1 4  
    3  
    2 2 
    1 1 
    2 2  
    3  
    1 3 
    2 2 
    3 1  
    样例输出
    3

    解题思路:贪心,按照长度升序排列,如果长度相同则重量升序,每次取没有取过满足条件的木棒 。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 
     5 struct P{
     6     int l;
     7     int w;
     8     int flag;
     9 }p[5050];
    10 
    11 int cmp(const void *a, const void *b){
    12     struct P *c = (struct P *)a;
    13     struct P *d = (struct P *)b;
    14     if(c->l != d->l){
    15         return c->l - d->l;
    16     }
    17     return c->w - d->w;
    18 }
    19 
    20 int main(){
    21     int T, n, i, j, now;
    22     int ans;
    23     scanf("%d", &T);
    24     while(T--){
    25         scanf("%d", &n);
    26         memset(p, 0sizeof(p));
    27         for(i = 0 ; i < n; i++){
    28             scanf("%d %d", &p[i].l, &p[i].w);
    29             p[i].flag = 0;
    30         }
    31 
    32         qsort(p, n, sizeof(p[0]), cmp);
    33         ans = 0;
    34         for(i = now = 0; i < n; i++){
    35             if(p[i].flag == 0){
    36                 now = i;
    37                 for(j = i + 1; j < n; j++){
    38                     if(p[j].flag == 0 && p[j].l >= p[now].l && p[j].w >= p[now].w){
    39                         p[j].flag = 1;
    40                         now = j;
    41                     }
    42                 }
    43                 ans++;
    44             }
    45         }
    46         printf("%d ", ans);
    47     }
    48     return 0;

    49 } 

  • 相关阅读:
    HDU 2594 扩展kmp模板题
    HDU 1358 简单kmp
    HDU 3336 扩展kmp
    SPOJ SUBLEX 求第k小子串
    Codeforces 235C
    HDU 4622 Reincarnation
    HDU 4622 求解区间字符串中的不同子串的个数
    [LeetCode] Length of Last Word 字符串查找
    [LeetCode] Sudoku Solver 解数独,递归,回溯
    [LeetCode] Longest Common Prefix 字符串公有前序
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4113862.html
Copyright © 2020-2023  润新知