寒武纪camp Day2】的更多相关文章

补题进度:8/10 A(计数+BIT) 题意: 给一个长度为n的数组a[],任意选0<=i<=j<n,将a[i]~a[j]从小到大排序,形成新的数组.问有多少个不同的新数组. N,a[i]<=1000000 分析: 对答案有贡献的ij一定是a[i]不是i~j的最小值,a[j]不是i~j的最大值,于是我们就去统计这样区间的数量 我们用单调栈搞出r[i]表示i右边第一个比a[i]小的位置,l[i]表示i左边第一个比a[i]大的位置 枚举区间左端点,那么可行的右区间在[r[i],n]中,…
寒武纪camp网络测试赛 地址:oj点我进入 A(树形dp+树链剖分) 题意: 分析: 考虑树形dp,f0(x)和f1(x)分别表示以x为根的子树,不取x点或取x点的最大合法子集的元素个数 那么对于一个询问来说,答案就是max(f0(x),f1(x)),我们的任务就是对于每次修改操作维护所有f数组的变化 假设我们新加入了一个x节点,很明显只有x以及x的祖先们的f值会改变 首先f1(x)=f0(x)+1,因为我多取一个x节点一定是合法的(题目保证权值从小到大) 然后考虑x的祖先fa,应该有f0(f…
2020 CCPC-Wannafly Winter Camp Day2 A 托米的字符串 虽然每个子串出现的概率是相同的,但是同一长度的子串个数是不同的,所以要分别处理.计算出某一长度的情况下,元音字母的贡献,然后计算期望即可. cls题解上的思路很清晰...我的代码太暴力了. const int N = 1000010; char s[N]; int a[N],n; ll d[N],c[N]; int main() { scanf("%s",s+1); n = strlen(s+1)…
Class $A_i = a \cdot i \% n$ 有 $A_i = k \cdot gcd(a, n)$ 证明: $A_0 = 0, A_x = x \cdot a - y \cdot n$ $令 d = gcd(a, n)$ $A_x \% d = (x \cdot a \% d - y \cdot n \% d) \% d = 0$ 得证 循环节为$\frac {n}{gcd(a, n)}$ Replay Dup4: 自闭了,啥都不会,想开一道无人做的字符串,喵喵喵? 总是陷入思维的…
solve 4/11 A Erase Numbers II Code:KK Thinking :KK 用ans表示当前最优答案,maxx表示遍历到的最大数字,一开始ans肯定等于a[ 1 ]+a[ 2 ],然后每次往后找,都把当前的a [ j ]拼到maxx后面,然后和答案比较,每次也更新maxx,时间复杂度o(n) 注意数据是1e19,会爆long long,用unsigned long long 就可以过. #include<cstdio> #include<algorithm>…
补题进度:10/10 A(树形dp) 略 B(dp) 题意: 给出一个n个关键节点的机械手臂,最开始是竖直的,即关键点在二维平面上的坐标分别是(0,0) (0,100) (0,200) (0,300)......,然后我们每次可以选择一个关键节点把它旋转45°(当然它上面的那些点也要跟着旋转) 现在有q个询问,每个询问输入一个矩形,问最少通过多少次操作使得机械手臂的末端落到这个矩形内 n<=10,q<=1000 分析: 首先关键点转的先后顺序对结果并没有影响,所以不妨我们先转下层的,再转上层的…
补题进度:6/10 A(状压dp) 题意: 有n个数字1,2,...,n,有m个限制(a,b),表示至少要有一个数字a排在数字b的前面 你需要构造出一个含有数字1~n的序列,数字可以重复多次,要求该序列满足所有的m个限制,并且长度最短,你只需要输出最短的长度 n<=18,m<=n(n-1) 分析: 首先,最多只需要2n长度就可以满足任何限制,即在前面放上1~n,在后面放上1~n,每个数最多只需要出现2次就够了,有的仅仅需要出现一次 我们很自然的想到枚举哪些数出现一次,把出现一次的放在中间,出现…
补题进度:7/11 A(博弈论) 略 B 待填坑 C(贪心) 题意: 一个序列是good的当且仅当相邻两个数字不相同.给出一个长度为n的数列,每个数字是ai.定义一种操作就是把a中某个元素拿到首位去,问最少需要多少次操作才能让数列a变成good的.如果不可行则输出-1. n<=1000,1<=ai<=n 分析: 我们先来判-1的情况,当且仅当出现次数最多的那个数字的出现次数超过了$\frac{n}{2}$ 然后我们再来考虑一般的情况,我们把那些需要移动的数字全部拿出来记录一下,即b[i]…
补题进度:9/10 A(多项式) 题意: 在一个长度为n=262144的环上,一个人站在0点上,每一秒钟有$\frac{1}{2}$的概率待在原地不动,有$\frac{1}{4}$的概率向前走一步,有$\frac{1}{4}$概率向后走一步,问t秒后这个人在x点的概率是多少,结果模998244353 分析: 我们设: 留在原地:$1$ 前进一步:$x$ 后退一步:$x^{-1}$ 那么最后实际上是要求n=262144意义下$(\frac{x^{-1}}{4}+\frac{1}{2}+\frac{…
补题进度:8/10 A(组合计数) 题意: 一个人站在数轴原点,每秒有1/4概率向前走一步,1/4概率向后走一步,1/2概率不动,问t秒后在p位置的概率. t,p<=100000 分析: 枚举不动的个数,于是向前走的个数和向后走的个数都确定了,然后就可组合计数了. B(平面图k小割) 题意: 给出一个n个点的树,1是根节点,每个点有点权,输出前k小的包含1节点的连通块的权值. n<=10^5,k<=10^5,点权<=10^9 分析: 连通块不好处理,一个连通块实际上对于一个割集,我…