• NYOJ 236 心急的C小加


    这个可以用排序来做,先排重量, 再来排长度,然后最后就是要统计分成条链就行了,也就是被机器处理几次,下面是代码的实现

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 typedef struct stick{/*其中l为length, w为weight,visit为标记当前组是否已被排列出来*/
     5     int l, w;
     6     int visit;
     7 }stick;
     8 int cmp(const void *a, const void *b)//定义比较函数
     9 {
    10     stick *c = (stick *)a;
    11     stick *d = (stick *)b;
    12     if(c -> w == d -> w)
    13     {
    14         return c ->l - d -> l;//从小到大排列, 先按重量的大小排,如果重量相同的时候, 在按照长度来排
    15     }
    16     return c -> w - d -> w;
    17 }
    18 int main()
    19 {
    20 //    freopen("1.txt", "r", stdin);
    21 //    freopen("2.txt", "w", stdout);
    22     int t;
    23     scanf("%d", &t);
    24     while(t --)
    25     {
    26         int n, cnt = 0, len;//len用来保存下面的临时长度,cnt计数, 一共花费多少分钟
    27         stick arr[5010];
    28         scanf("%d", &n);
    29         for(int i = 0; i < n; i++)
    30         {
    31             scanf("%d%d", &arr[i].l, &arr[i].w);
    32             arr[i].visit = 1;//初始化为1
    33         }
    34         qsort(arr, n, sizeof(stick), cmp);//排序, 当然也可以用sort排序
    35         for(int i = 0; i < n; i++)
    36         {
    37             if(arr[i].visit)//如果当前没有被排列出来,就再来一列进行排列
    38             {
    39                 len = arr[i].l;/*保存当前的长度,因为是按照重量来排列的,所以重量一定是递增的,即后一个肯定大于等于前一个,所以不必再比较重量*/
    40                 for(int j = i + 1; j < n; j++)
    41                 {
    42                     if(arr[j].visit && len <= arr[j].l)//如果满足要求,一直找下去
    43                     {
    44                         arr[j].visit = 0;//找到后标记为零,这样下次就不会从另一列中再找它了
    45                         len = arr[j].l;
    46                     }
    47                 }
    48                 cnt++;
    49             }
    50         }
    51         printf("%d
    ", cnt);
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    CSS基础应用学习系列(3)——图像的CSS阴影效果
    激活flash控件
    用一句SQL取出第 m 条到第 n 条记录的方法
    javascript检测浏览器和操作系统detect.js
    开始学习VS2008+.net3.5咯 :)
    用GridView编辑更新独立的单元格
    征服ASP.NET Ajax典型应用 (试读)
    CSS基础应用学习系列(4)――用CSS对列表应用样式
    Android SQLite学习指南
    Java内部类使用总结
  • 原文地址:https://www.cnblogs.com/Howe-Young/p/3992997.html
Copyright © 2020-2023  润新知