牛客小白月赛37签到题

擅长解密的小红同学

https://ac.nowcoder.com/acm/contest/11214/B

签到题:AC数大于100的题

A

题意:给定A,B两位勇者的攻击力和生命值以及无限血量的魔王,每回合会对魔王造成等同于攻击力的伤害,回合结束后又会自相残杀,若不在同一个回合死亡,则活下来的一人会对魔王造成10倍伤害,若两人在同一回合死亡则不会造成十倍伤害,要求输出造成的伤害总和。
思路:计算两个人的存活回合,若不相等,则存活回合大的造成十倍伤害。若相等,则不造成十倍伤害。两人合力造成伤害的回合等于存活回合少的回合数。

代码

B

题意:给定密码由0~9组成,知道密码中每个数的出现次数,每次输入后,密码的排列顺序会改变,求尝试解密的次数期望。
思路:设这些数一共能组成n个数字,概率
期望
于是问题就变成了求n的大小。
多重全排列是指求r0个0,r1个1,r2个2,…,rt个t的排列数
图片说明
于是预处理1e7的阶乘就可以了,注意这里的除法要用乘以逆元代替。
代码

D

题意:给定长度为n的数组A和B,快乐值为A数组中某一连续部分的和,羞耻值为B数组中某一连续部分的和。连续部分最大为k,要优先使快乐值最大同时使羞耻值最小,若有多个区间满足,则选择左区间更小的一个,输出左区间的编号。
思路:因为数组A,B每个元素都大于0,所以连续部分长度越大越好,从左向右维护每个左端点的快乐值和羞耻值,之后按照快乐值大到小,羞耻值小到大,左端点小到大排序,输出第一个元素的左端点即可。
代码

F

题意:给n*m的格子染色,相邻格子不能同色,不能涂色者输,问谁赢。
思路:玩了一下,猜了一手奇偶性。
代码

H

题意:定义漂亮数是一个不是素数的可以由两个素数相乘得到的数,问你区间[L,R]中有多少漂亮数。
思路:多组区间询问很容易想到预处理后前缀和查询。虽然1e8内有3e6左右个质数,但是当乘积超过1e8时就退出了,可以先筛出所有质数,然后两两组合计算乘积,之后前缀和维护。
注意开ll,有人没开ll,RE了一个小时。
代码

J

题意:输出不含后三位的输入串。
思路:getline(cin,s)和s.substr(0,s.length()-3)
代码

I

题意:给定一个长度为n的数组。每次操作可以让某个数加 1 或者某个数减 1 。最多能进行k次操作。求出现次数最多的次数可以出现多少次。
思路:这里有一个结论(看了题解才知道)“一个数组每次操作可以让一个数加一或者减一,使所有数都相等的操作最小次数的方式是所有数都变成中位数(或两个中间的数的任意一个,若共有偶数个数)”。如果知道这个结论就可以双指针维护,查中位数然后小的部分+1,大的部分-1,如果操作数小于K,r++,反之l++。
代码

写在最后:收获了多重全排列和I题的结论,收获满满。
打完CCPC“网络”选拔赛后颓了好几天(原神真好玩),早点找回状态。

全部评论

相关推荐

点赞 评论 收藏
转发
3 收藏 评论
分享
牛客网
牛客企业服务