zoukankan      html  css  js  c++  java
  • hdu 1800 Flying to the Mars

    http://acm.hdu.edu.cn/showproblem.php?pid=1800

    soldiers学习使用魔法扫帚,水平高的可以教水平在他之下的,每个老师有而只有一个学生,并且可以共用一个魔法扫帚练习,要求每个soldier都要有练习魔法扫帚的机会,求最少需要多少个魔法扫帚。

    如士兵A B C D E水平分别为2 4 5 6 4

    方法可以是:C教B,B教A,D教E,这样ABC共用一把扫帚,DE共用一把扫帚;只用两把扫帚即可。而结果也只需要两把就可以了。

    先对数列排序,然后筛选出相等元素,这样循环筛选,每筛选一次代表扫帚增一,直到无可筛选的元素。

    C could teach B; B could teach A; So , A B C are eligible to study on the same broomstick.
    D could teach E;So D E are eligible to study on the same broomstick;
    Using this method , we need 2 broomsticks.

    #include <iostream>

    #include <queue>

    #include <string>

    using namespace std;
    main()
    {
          int num,i,j,h,n,p[3005];
          while(scanf("%d",&n)!=EOF)
          {
               for(i=0;i<n;i++)
               scanf("%d",&p[i]);
               sort(p,p+i);
               h=i;
               num=0;
               while(h)  //当筛选出0个元素时结束。
               {
                    num++;j=0;
                    for(i=0;i<h-1;i++)
                    if(p[i]==p[i+1])
                    {
                         p[j]=p[i+1];  //筛选出相等元素。
                         j++;
                    }
                    h=j;
               }
               printf("%d\n",num);
          }
    }
              

  • 相关阅读:
    〖Python〗-- Tornado自定义session组件
    〖Python〗-- Tornado异步非阻塞
    〖Python〗-- Tornado基础
    〖Python〗-- Flask
    〖Python〗-- 设计模式
    〖Python〗-- Celery分布式任务队列
    〖Demo〗-- CosPlayPermission
    05——wepy框架中的一些细节
    04——wepy框架搭建
    03——微信小程序官方demo讲解——page部分
  • 原文地址:https://www.cnblogs.com/zxj015/p/2740248.html
Copyright © 2011-2022 走看看