竞赛
考级
原题链接:https://www.acgo.cn/problemset/info/36088?questionCollectionId=9792 先说思路,看完题面后就很容易得只需要先将数组排序,然后用两个指针i和j,分别代表需要击败的卡牌和当前发动攻击的卡牌,每轮判断r[j]是否大于r[i],如果是,就让i退出战场,i后移,顺带用ans统计退出的卡牌数,就可以了。 好久没见到这么简单的csp-s题了(如果想的到的话) 给个赞行不行
瞪眼法易得:本题的主要考核内容是贪心 老师抓住了每张卡牌只能攻击一次的特点,将按r非降序排序后的卡牌放入队列并判断是否有卡牌出局,最终所有没有出局的卡牌都被存储与队列中,最终输出size即可。
使用贪心的思想,排序后使用队列来维护攻击出局,出局卡牌即弹出队列,最后输出队列长度。 ACCODE:\tt{ACCODE:}ACCODE:
就一个桶排序,主要看想不想的出来
依旧是不太难的一题(如果有好的思路) 先说结论:相等战力怪物数量最多的值。 下面是证明: 设战斗力最小(i1)的怪物,有x个。 且有y个战斗力比他略高(i2)的怪兽(不存在一个战斗力为im的怪物使得i1<im<i2) 如果y>x,其中的x个会赶走原先的x个怪兽,还有y-x个怪物未参与战斗,最终一共有y个怪物。 如果y=x,那么y个怪物把x个怪物全部赶走,最终一共有y个怪物。 如果y<x,那么其中y个会赶走y个战斗力为i1怪物,留下x-y个战斗力i1的怪物,最终一共有x个怪物。 最终发现实际上结果是x和y中的最大值。 可以进一步推广到i2和i3的情况,甚至是i(n-1)和in的情况。 不过在y<x中的情况要进一步考虑,留下来的i1的怪物,在后续的比较中,也一定存在着i1<i2<in,大小并不重要。 所以综上,我们只需要统计所有战力相等的怪物,最终求出他们的最大值即可。 以下是代码:
提交答案之后,这里将显示提交结果~