• hdu 4040 (贪心算法)


    这题是我们学校比赛的题目,因为当时参加精英组比赛,除了3个大二的其他都是大三大四的大神,就抱着打酱油的心态去了,结果真的打酱油了;

    事后看看题目,确实有些题目以当前水平是可以做出来的,原因应该是 心态 以及 时间分配上的问题.

    这题一直卡在题目什么意思上,还有一题 求前K大数的,那题最后想到用堆,但是不会写- -,忘了优先队列这个东西.所以很遗憾啊..

    总而言之就是会的东西太少了哈...还需要好好加油;

    这题的意思就是说每个细胞每秒只能产生一个噬菌体,无论这个细胞里面有多少噬菌体,然后攒齐一定数量的噬菌体就可以再花费一定的时间感染一个细胞..

    很显然,最先找耗时最大的细胞感染,此时能产生的噬菌体总数最多,即可以在相同时间内感染最多的细胞.即采用贪心算法;

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 #define maxn 100005
     5  int max(int a,int b)
     6 {
     7     return a>b?a:b;
     8 }
     9 int n,T;
    10 struct node
    11 {
    12     int     d,t;
    13 }game[maxn];
    14 int cmp(node &a,node &b)
    15 {
    16     return a.t>b.t;
    17 }
    18 int main()
    19 {
    20     int cnt,i,j,ans,temp;
    21     scanf("%d",&T);
    22     cnt=1;
    23     while(T--){
    24         scanf("%d",&n);
    25         for(i=0;i<n;i++)
    26             scanf("%d%d",&game[i].d,&game[i].t);
    27         sort(game,game+n,cmp);
    28         ans=game[0].d+game[0].t;
    29         temp=game[0].d;
    30         for(int i=1;i<n;i++){  
    31             ans=max(ans,temp+game[i].d+game[i].t); //产生尽量多的噬菌体;,即判断是否需要额外花费感染某个细胞;.
    32             temp+=game[i].d; // 增加需要生产感染所需的噬菌体的时间;
    33         }  
    34         printf("Case %d: %d
    ",cnt++,ans);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    2018-8-10-如何写毕业论文-表格
    2018-8-10-win10-uwp-自定义控件初始化
    2018-8-10-win10-uwp-自定义控件初始化
    hashMap的hashCode() 和equal()的使用
    java中fail-fast 和 fail-safe的区别
    java各种集合的线程安全
    Java集合框架总结—超详细-适合面试
    CodeForces 1058C C. Vasya and Golden Ticket
    CodeForces 1058C C. Vasya and Golden Ticket
    CodeForces-1058B B. Vasya and Cornfield
  • 原文地址:https://www.cnblogs.com/xiaoniuniu/p/4196828.html
Copyright © 2020-2023  润新知