zoukankan      html  css  js  c++  java
  • 洛谷P1916 小书童——蚂蚁大战

    题目背景

    小A在你的帮助下,开始“刷题”,他在小书童里发现了一款叫“蚂蚁大战”(又称蛋糕保卫战)的游戏。(你懂得)

    题目描述

    游戏中会出现n只蚂蚁,分别有a1,a2……an的血量,它们要吃你的蛋糕。当然,你不会袖手旁观。你有m元钱,可以用来造防御塔,每个塔k元。塔的威力是每秒w滴血。此外,在第r秒时,蚂蚁会把蛋糕搬进窝。小A想知道,在第r秒时,会有多少块蛋糕被搬进窝(一只蚂蚁搬一块蛋糕)。

    输入输出格式

    输入格式:

    第一行:n m k w r。第2~n+1行:a1,a2……an。

    输出格式:

    一行,表示有多少块蛋糕被蚂蚁搬进窝。


    这道题题意就让我不太明白.....直到我想起了保卫萝卜  

    反正差不多就是这个意思......只不过这个题简单一些(和做保卫萝卜的题相比)

    由于蚂蚁的血量是不一样的,而每只蚂蚁都只能搬一块蛋糕   给萝卜扣一点血(不同的是,这里可以看成这一堆蚂蚁是一起出来的),所以为了使被搬走的蛋糕尽可能少   让萝卜的血扣得少     我们要集中火力打血最少的蚂蚁,再打血多的蚂蚁(别问我怎么做到的),于是我们可以对蚂蚁的血量排序,从小往大的打

    ;一共有m元钱,一个塔k元,塔的威力是每秒w,于是可以算出每秒总的塔伤害ww=m/k*w,从t=1第一秒开始,每秒造成一次伤害,打死一个就再打血多的,最后用蚂蚁树n减去打死的蚂蚁数量就好了

    AC代码如下

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<iomanip>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    int a[10005];
    int main()
    {
      int n,m,k,w,r,ans=0,t=1,ww=0,count=0;
      cin>>n>>m>>k>>w>>r;
      ans=n;
      ww=m/k*w;//每秒塔的总伤害
      for(int i=0;i<n;i++)
      {
        cin>>a[i];
      }
      sort(a,a+n);//排一个序
      while(t<=r)//是否结束
      {
        t++;
        a[count]=a[count]-ww;
        {
          if(a[count]<0)//不能加=
          {
            count+=1;//如果打死了就再打血多的
          }
        }
      }
      for(int i=0;i<n;i++)
      {
        if(a[i]<=0) //不能去=
        {
          ans-=1;//只要当前的蚂蚁死了,蛋糕就少偷一个
        }
      }
      cout<<ans;
      return 0;
    }

  • 相关阅读:
    关闭编辑easyui datagrid table
    sql 保留两位小数+四舍五入
    easyui DataGrid 工具类之 util js
    easyui DataGrid 工具类之 后台生成列
    easyui DataGrid 工具类之 WorkbookUtil class
    easyui DataGrid 工具类之 TableUtil class
    easyui DataGrid 工具类之 Utils class
    easyui DataGrid 工具类之 列属性class
    oracle 卸载
    “云时代架构”经典文章阅读感想七
  • 原文地址:https://www.cnblogs.com/lcezych/p/10403193.html
Copyright © 2011-2022 走看看