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

补题进度: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次就够了,有的仅仅需要出现一次 我们很自然的想到枚举哪些数出现一次,把出现一次的放在中间,出现…
寒武纪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…
题目链接 题意 对序列进行三种操作: 1.区间求和. 2.将区间小于等于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将比$x$大的放到右边. 3.将区间大于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将小于等于$x$的放到右边. 思路 将小于等于和大于$x$的数字分成两类,发现同类之间的相对顺序不改变,可以通过线段树维护区间内同类数字的数量和位置来获得区间真实值,使用前缀和维护两类数字序列的任意子段和. 代码 //#pragma comment(linker, "/S…
题目链接:https://zhixincode.com/contest/22/problem/I?problem_id=314 样例输入 1 5 9 31 5 3 2 41 1 52 1 51 1 11 2 21 3 31 4 41 5 53 3 51 1 4 样例输出 1 151325413 题解: dls出的题真好qwq! 我们先考虑partition的两种操作,若将所有小于等于 $x$ 的数字看成 $0$,将所有大于 $x$ 的数字看成 $1$,那么原序列就变成了一个 $01$ 序列. 那…
Replay: Dup4: 时间复杂度算不对? 一点点思路不经过验证就激动的要死? 浪费自己一个小时还浪费别人一个小时? 对1e3不敏感? 1e3 * 1e3是多少? 模拟建边跑dp不写非要写个大模拟? 看到数据结构就高兴的要死? 没细想? 没发现性质? X: 日常语文差, 导致计算几何死都写不对  读题要细致啊! 感觉状态还可以?只是计算几何写太久了, 人都懵了 A:Cactus Draw Solved. 按照BFS序以及深度排 #include<bits/stdc++.h> using n…
solve 5/11 补题:7/11 A Cactus Draw Code:zz Thinking :zz 题意:要在n*n的网格内画上一棵节点数为n树,使得没有边相交. 很好想的构造题,因为网格有n*n,足够大,所以结点1放在(1,1)的位置,与结点1相连的结点依次放在(2,1),(2,2)...的位子,依此类推. #include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h&…
补题进度:10/10 A(树形dp) 略 B(dp) 题意: 给出一个n个关键节点的机械手臂,最开始是竖直的,即关键点在二维平面上的坐标分别是(0,0) (0,100) (0,200) (0,300)......,然后我们每次可以选择一个关键节点把它旋转45°(当然它上面的那些点也要跟着旋转) 现在有q个询问,每个询问输入一个矩形,问最少通过多少次操作使得机械手臂的末端落到这个矩形内 n<=10,q<=1000 分析: 首先关键点转的先后顺序对结果并没有影响,所以不妨我们先转下层的,再转上层的…
补题进度: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(计数+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]中,…