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

补题进度:10/10 A(树形dp) 略 B(dp) 题意: 给出一个n个关键节点的机械手臂,最开始是竖直的,即关键点在二维平面上的坐标分别是(0,0) (0,100) (0,200) (0,300)......,然后我们每次可以选择一个关键节点把它旋转45°(当然它上面的那些点也要跟着旋转) 现在有q个询问,每个询问输入一个矩形,问最少通过多少次操作使得机械手臂的末端落到这个矩形内 n<=10,q<=1000 分析: 首先关键点转的先后顺序对结果并没有影响,所以不妨我们先转下层的,再转上层的…
寒武纪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…
这道题实在是不该,我在化式子的时候,多此一举,把式子进行累加,导致自己当时化的式子是错的,这样导致自己卡了很久,也没想到好的思路,赛后重新分析一波,感觉巨™简单...难受的一逼. 这道题的关键在于,W这个东西,由于W序列是受L和R区间变化的,它的取值是由f(i,j)决定的,那么我们知道,肯定要把f(l,r)中 r-l+1相同的归到一处去,这是个思路,先不着急,我们可以先把表达式写出来. f(1,1)+f(1,2)+f(1,3)+f(1,4)+f(1,5) f(2,2)+f(2,3)+f(2,4)…
补题进度: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(计数+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]中,…
补题进度: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 分析: 连通块不好处理,一个连通块实际上对于一个割集,我…
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p…
开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致 hint: re.search(r'\([^()]+\)',s).group() '(-…