[UOJ UNR #2]积劳成疾】的更多相关文章

来自FallDream的博客,未经允许,请勿转载,谢谢. 传送门 区间最大值的题emmmm 想到构建笛卡尔树,这样自然就想到了一种dp f[i][j]表示大小为i的笛卡尔树,根的权值是j的答案. 转移的时候枚举左右子树的大小,对权值那一维前缀和转移. 然后在每次转移的时候,把已经可以确定最大值的段的贡献乘进去就可以了. #include<iostream> #include<cstdio> #define MN 400 #define mod 998244353 using nam…
UOJ 序列中的每个位置是等价的.直接令\(f[i][j]\)表示,\(i\)个数的序列,最大值不超过\(j\)的所有序列每个长为\(k\)的子区间最大值的乘积的和. 由\(j-1\)转移到\(j\)时,考虑枚举第一个\(j\)出现在哪里.设最左边的\(j\)在\(p\)位置,那么会对左端点在\([\max(1,p-k+1),\ \min(p,i-k+1)]\)的每个\(k\)区间造成\(w[j]\)的贡献,也就是\(w[j]^{len}\).\(p\)左边没出现过\(j\),贡献是\(f[p-…
题目描述 一个长度为 $n$ 的序列,每个数在 $[1,n]$ 之间.给出 $m$ ,求所有序列的 $\prod_{i=1}^{n-m+1}(\text{Max}_{j=i}^{j+m-1}a[j])$ 的总和,即对所有序列求每个长度为 $m$ 的子区间的最大值乘积之和.答案对 $998244353$ 取模. $m\le n\le 400$ . 题解 dp 设 $f[i][j]$ 表示长度为 $i$ 的序列,每个数都在 $[1,j]$ 之间的所有序列每个长度为 $m$ 的子区间最大值乘积之和.…
来自FallDream的博客,未经允许,请勿转载, 谢谢. 原题可以到UOJ看,传送门 如果存在一个点是白的,却有儿子是黑的,显然无解. 不然的话,只要所有黑色的“黑叶子”节点,即没有黑色的儿子的节点有访问到就行了. 联想到今年CTSC上一道题叫“被操纵的线段树”,每个点被访问之后,可以和他合并的点满足左端点是它的右端点+1,并且和它没有相同的父亲. 发现这些点构成一条链,所以只需要向最大的那个点连边就行了,然后每个点向左儿子连边. 拆点之后,给所有的“黑色叶子”节点中间的边加上流量下界,求出最…
来自FallDream的博客,未经允许,请勿转载,谢谢. 传送门 很奇妙的一道题 首先不难发现一个暴力做法,就是f[i]表示异或和为i的答案数,每次FWT上一个F数组,其中F[0]=1,F[ai]=2,最后输出f[0]即可. 这样我就考虑从FWT之后的数组入手. 首先发现F[0]=1只会让最后的数组全部+1,所以只考虑F[ai]=2的影响. 发现每个项只会是3或者-1,这取决于FWT过程中的取反次数. 所以可以设计一个dp,f[i][x]表示分治到第i层,x是2的方案数,F[i][x]表示...…
来自FallDream的博客,未经允许,请勿转载,谢谢. 传送门 感觉这题有点神... 模数是6比较奇怪,考虑计算答案的式子. Ans=$\sum_{i=1}^{k} P(k,i)*ans(i)$ ans(i)表示恰好用i种颜色的方案数. 发现i<=2时候才有贡献 i=1的时候,只有m=0才有贡献,否则没有 i=2的时候,判断图是否是二分图,是的话答案就是2^(联通块个数) #include<iostream> #include<cstring> #include<cs…
来自FallDream的博客,未经允许,请勿转载,谢谢. 传送门 考虑直接对每个数字,统计它会产生的贡献. 单调栈求出每个数字左边第一个大等于他的数,右边第一个大于他的 (注意只能有一边取等) 假设左右两边分别有x1,x2个数,较大的是mx,较小的是mn 对于长度在(mx+1,mn+mx+1]的x,会产生mn+mx+1 - x - 1的贡献 对于长度在(mn,mx+1]的数,会产生 mn+1的贡献 对于长度在[1,mn]中的数x,会产生x的贡献. 差分维护即可 #include<iostream…
来自FallDream的博客,未经允许,请勿转载,谢谢. 题面 考虑用可持久化线段树直接维护每个点在不同时刻,第一辆车的编号. 这样3操作就变成了区间赋值,1操作变成区间和 2操作的话,只需要查询一下现在这辆车的编号,再到历史版本去查一下上一辆车的编号就行了. #include<iostream> #include<cstdio> #define MN 500000 using namespace std; inline int read() { ,f=;char ch=getch…
用可持久化线段树维护每个站的第一辆车和每个站的前一次更新的位置即可. #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<algorithm> #define maxn 500005 using namespace std; inline int read() { ,f=;char ch=get…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…