zoukankan      html  css  js  c++  java
  • 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 } 

  • 相关阅读:
    June 1. 2018 Week 22nd Friday
    【Android开发】【布局】几个常用布局构成的简单demo
    【Android开发】【布局】各种TabLayout样式
    【Android开发】【数据库】Realm For Android
    【Android开发】jarsigner重新打包apk
    【Android开发】Coding + git命令行基本使用
    【MarkDown】使用
    【Android Studio】Gradle统一管理版本号引用配置
    【Android开发】EasyPermissions 请求权限
    【Android开发】Android6.0请求权限方式
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4113862.html
Copyright © 2011-2022 走看看