f(今天开学第一天)
洛谷算法标签:
这个题要用排序是真的很神奇;
首先我们来理解一下题意:首先蚂蚁们按血量接受打击【魔鬼操作】,血量最少的蚂蚁要走到最前面,所以我们可以用到sort(但不要忘记头文件#include<algorithm>)。所有塔集中打一个蚂蚁,如果蚂蚁血量为0以下(这是重点)塔才切换目标。当第r秒时,血量在0及0以上的蚂蚁将蛋糕搬回。问:最终蚂蚁家里会有多少块蛋糕?
这个题坑就坑当蚂蚁血量为0时还要再打一次蚂蚁,而不是算为死亡,题目要排序尽管不理解,但你也拿他没办法对吧?
ac代码如下:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n,m,k,w,r,c,b; int a[100001]; int main() { cin>>n>>m>>k>>w>>r; for(int i=1;i<=n;i++) cin>>a[i]; b=m/k; c=b*w; sort(a+1,a+n+1); int j=1;int sum=0,i=1; while(i<=r) { i++; a[j]-=c; if(a[j]<0) { j++; } } for(int i=1;i<=n;i++) if(a[i]>0)sum++; cout<<sum<<endl; }
end-