![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kickstart
johsnows
正在静下心来学算法的acmer
展开
-
2020kickstart E round C Toys (优先队列)
题意: 有n个toy排成一个圈圈,每个toy有一个e[i],r[i],需要e[i]的时间去玩这个toy,r[i]可以理解为这个玩具再次可以被玩的cd时间,一个小孩会从第0个玩具开始,每次往i+1个玩具轮流玩过去,一个玩具可以被玩的前提是,距离上次被玩的时间超过r[i],当碰到不能玩的玩具后,小孩就会停下不动,否则一直玩下去。问移除多少个toy,可以让小孩玩的时间最长,并且再保证时间最长的情况下,移除最少的玩具。 思路: 第一轮肯定是都可以玩耍,关键是看第二轮,我们记完成一轮玩具的时间为tim,那.原创 2020-08-26 22:43:16 · 182 阅读 · 0 评论 -
2020kickstart d Beauty of tree
题意: a,b两个人, 分别在一棵节点数为n的有根树上,随机选择一个点,每x(y)个点(往根的方向)对一个节点染色,直到到达或超过根节点。 问这棵树被染色的点的期望值。 解题思路: 首先有N*N个情况,每种情况下这棵树被染色的数目之和除以N*N就是要求的期望值 所以问题就算如何统计每种情况染色数目之和 暴力枚举每种情况肯定是不行的,可以换一个思路来想,去求每个点被选取后会染色多少个点。在一棵树上,假设p-x就是p下一步会染的点,那么r[p]=r[p-x]+1,只需要一遍dfs指定向下遍历就.原创 2020-07-16 18:48:54 · 184 阅读 · 0 评论 -
2020kickstart C Candies
题意: 给出数组a,有询问更新操作,更新是单点更新pos, x,更新a[pos]=x,询问是问l,r区间内的sweet值,定义是: (-1)i-lAi× (i - l + 1) 比如: [3, 1, 6] is 3 × 1 - 1 × 2 + 6 × 3 = 19 [40, 30, 20, 10] is 40 × 1 - 30 × 2 + 20 × 3 - 10 × 4 = 0 [2, 100] is 2 × 1 - 100 × 2 = -198 解题思路: 维护两个树状数组,一个s1..原创 2020-06-05 17:32:09 · 175 阅读 · 0 评论 -
2020kickstartC_C perfect subarray
题意: 给定一个数组a,求有多少个子串和是平方数,-100<a[i]<100。 解题思路: 因为a的长度是1e5,a[i]<=100,所以平方数小于sqrt(1e7),只要枚举下平方数就行。遍历a数组,求以i结尾的子数组,有多少个是平方数,(本题因为a[i]存在负数,没法用双指针)设前缀和为sum[i],就是求有多少个j满足sum[i]-sum[j-1]为平方数,假设当前枚举的是平方数s[k],即求有多少个j满足sum[j]=sum[i]-s[k],所以只需要在遍历的时候统计下.原创 2020-05-30 19:09:32 · 182 阅读 · 0 评论 -
kickstart 2019H Elevanagram
↵ 太菜了只补了小数据的做法 小数据范围下可以直接把每个数字从小到大报存下来,记为a[i]. dp[i][j][k]表示前i个数,取j个数为正,i-j个数为负的时候,加和对11取模为k是否可以完成。 状态表示出来转移就很简单了,对于第i个数,枚举a[i]为正、负的情况就ok: dp[i][j][(k+a[i])%11]=max(dp[i-1][j-1][k], dp[i][j][(k...原创 2019-11-22 18:30:55 · 354 阅读 · 0 评论