• hdu 4970 killing monster 代代相传刷qq 不用线段树啦~


    【题意】塔防游戏,一条n长的路上,有m个炮台,可以覆盖[li,ri]范围,威力ci,即每一秒,炮塔可以对范围 内的怪物可以造成ci点伤害。只有有q只怪物,每只怪物有hi点血,出现位置为xi;当怪物血量减少到0或以下时消失,怪物一直朝n位置前进。问有几只怪物可以离开这条路。

    【题解】用线段树可以做,不过还好我们有代代相传的刷qq 算法 ,让解法变得简单的多~    ^_^

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 __int64 num[100005];
     9 
    10 struct node{__int64 hp,x;}m[100005];
    11 
    12 int cmp(node a,node b)
    13 {
    14     return a.x<b.x;
    15 }
    16 
    17 int main()
    18 {
    19     int n,k,a,b,d;
    20     while(~scanf("%d",&n),n)
    21     {
    22         scanf("%d",&k);
    23         memset(num,0,sizeof(num));
    24         while(k--)
    25         {
    26             scanf("%d%d%d",&a,&b,&d);
    27             num[a]+=d;
    28             num[b+1]-=d;
    29         }
    30         __int64 sum=0;
    31         for(int i=0;i<=n;i++)
    32         {
    33             sum+=num[i];
    34             num[i]=sum;
    35         }
    36         //num[i]:每个点i的攻击力度
    37         scanf("%d",&k);
    38         for(int i=0;i<k;i++)
    39             scanf("%I64d%I64d",&m[i].hp,&m[i].x);
    40         sort(m,m+k,cmp);
    41         sum=0;
    42         int ans=0,j=k-1;
    43         for(int i=n;i>=0;i--)
    44         {
    45             sum+=num[i];          // sum:从点n到点i 怪物会受到的总攻击力度
    46             while(i==m[j].x)       // 可能有好几个怪物从点i冒出来
    47             {
    48                 if(m[j].hp>sum)
    49                    ans++;
    50                 j--;
    51                 if(j<0)
    52                     break;
    53             }
    54             if(j<0)
    55                 break;
    56         }
    57         printf("%d
    ",ans);
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    Leetcode 18. 4Sum
    Leetcode 15. 3Sum
    Leetcode 16. 3Sum Closest
    String类型的理解
    求字符串中某个字符出现的次数
    用StringBuilder来实现经典的反转问题
    String/StringBuilder 类 用对象数组实现登录注册功能
    String/StringBuilder 类 统计字符串中字符出现的次数
    String/StringBuilder 类 判断QQ号码
    C++ 面向对象: I/O对象的应用
  • 原文地址:https://www.cnblogs.com/assult/p/3925514.html
Copyright © 2020-2023  润新知