zoukankan      html  css  js  c++  java
  • hdu1050 Moving Tables

    题意:在一个长走廊里搬桌子,走廊的两侧都是房间,把桌子从一个房间搬到另外一个房间,走廊的宽度只能允许一个桌子通过,每次搬桌子需要10分钟(每一次允许再不交叉的走廊中同时搬桌子),问最少多长时间搬完!

     

     

    思路:因为每次搬的时间是一定的,所以可以看作是至少要搬多少次。而决定它最少搬多少次的因素就是有多少次搬桌子的过程中是存在线路的交叉的!所以可以把每一两个相对的房间之间的走廊所通过的次数记录下来(房间12之间的走廊用room[1]),找出所有部分通过最多的一个部分,它的通过次数就是在搬运过程中最大的交叉次数,也就是所需要的最少的搬运次数!

     

     

     

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 int a[202];
     4 int b[202];
     5 int room[202];//用于记录走廊的通过次数。
     6 int main()
     7 {
     8     int t,n,i,j,min,max,least,w;
     9     scanf("%d",&t);
    10     while(t--)
    11     {
    12         min=410;max=0;least=0;
    13         memset(room,0,sizeof(room));
    14         scanf("%d",&n);
    15         for(i=0;i<n;i++)
    16         {
    17             scanf("%d%d",&a[i],&b[i]);
    18             if(a[i]>b[i])
    19             {
    20                 w=a[i];
    21                 a[i]=b[i];
    22                 b[i]=w;
    23             }
    24         //对a[i]和b[i]之间的room都进行加1操作
    25         for(j=(a[i]+1)/2;j<=(b[i]+1)/2;j++)
    26         {
    27          room[j]++;
    28         }
    29         }
    30         //找出room中最大的数#include<stdio.h>
    31 #include<string.h>
    32 int a[202];
    33 int b[202];
    34 int room[202];
    35 int main()
    36 {
    37     int t,n,i,j,min,max,least,w;
    38     scanf("%d",&t);
    39     while(t--)
    40     {
    41         min=410;max=0;least=0;
    42         memset(room,0,sizeof(room));
    43         scanf("%d",&n);
    44         for(i=0;i<n;i++)
    45         {
    46             scanf("%d%d",&a[i],&b[i]);
    47             if(a[i]>b[i])
    48             {
    49                 w=a[i];
    50                 a[i]=b[i];
    51                 b[i]=w;
    52             }
    53         for(j=(a[i]+1)/2;j<=(b[i]+1)/2;j++)
    54         {
    55          room[j]++;
    56         }
    57         }
    58         for(i=1;i<=200;i++)
    59         {
    60             if(room[i]>least)
    61             least=room[i];
    62         }
    63         printf("%d\n",least*10);
    64     }
    65     return 0;
    66 }
    67         for(i=1;i<=200;i++)
    68         {
    69             if(room[i]>least)
    70             least=room[i];
    71         }
    72         printf("%d\n",least*10);
    73     }
    74     return 0;
    75 }

     

     

  • 相关阅读:
    【GoLand】分享项目到Github平台
    【Git】实用教程
    【Go】Mac系统下安装GoLand 及 环境配置
    CF 901C Bipartite Segments
    CF 811E Vladik and Entertaining Flags
    Luogu P6300 悔改
    Luogu P3943 星空
    CSP2020 | T4
    NOIP2017 | D2T3
    Luogu P6852 Mex
  • 原文地址:https://www.cnblogs.com/ACshasow/p/2753991.html
Copyright © 2011-2022 走看看