「ZJOI 2010」 排列计数】的更多相关文章

题目链接 戳我 \(Solution\) 其实我们可以发现这题等价于让你求: 用\(1\)~\(n\)的数组成一个完全二叉树使之满足小根堆性质的方案数 于是我们可以考虑\(dp\) 假设我们现在在\(i\)点,\(i\)的子节点个数为\(s[i]\)(包括自己) 则: \(dp[i]=C(s[i]-1,s[i*2])*f[i*2]*f[i*2+1]\) \(ps:\) 因为是二叉树所以\(i*2\)和\(i*2+1\)为\(i\)的两个儿子 这个式子很容易看懂吧. 在子节点中选一些填入左儿子,一…
Description 题库链接 询问有多少个 \(1\sim N\) 的排列 \(P\) 满足" \(\forall i\in[2,N], P_i>P_{\frac{i}{2}}\) " .对质数 \(P\) 取模. \(1\leq N\leq 1000000,1\leq P\leq 10^9\) Solution 容易发现满足题目需要的性质的序列就是满足堆性质的.那么可以在树(堆)上 \(DP\) . 记 \(f_o\) 为在 \(o\) 节点及其子树中满足条件的编号方法数.…
#2509. 「AHOI / HNOI2018」排列   题目描述 给定 nnn 个整数 a1,a2,…,an(0≤ai≤n),以及 nnn 个整数 w1,w2,…,wn.称 a1,a2,…,an 的一个排列 ap[1],ap[2],…,ap[n] 为 a1,a2,…,an 的一个合法排列,当且仅当该排列满足:对于任意的 kkk 和任意的 jjj,如果 j≤kj \le kj≤k,那么 ap[j]a_{p[j]}a​p[j]​​ 不等于 p[k]p[k]p[k].(换句话说就是:对于任意的 kk…
「状压DP」「暴力搜索」排列 题目描述: 题目描述 给一个数字串 s 和正整数 d, 统计 sss 有多少种不同的排列能被 d 整除(可以有前导 0).例如 123434 有 90 种排列能被 2 整除,其中末位为 2 的有 30 种,末位为 4 的有 60 种. 输入格式 输入第一行是一个整数 TTT,表示测试数据的个数,以下每行一组 s 和 d,中间用空格隔开.s 保证只包含数字 0,1,2,3,4,5,6,7,8,9 输出格式 每个数据仅一行,表示能被 d 整除的排列的个数. 输入输出样例…
「CTSC 2011」排列 要求不存在公差为 A 或者公比为 B 的子列,那么实际上可以把该问题转化为求一个图的最优拓朴序. 任意差为 A 或者比为 B 的两个数连一条边. 求一个合法序列的答案可以用树状数组. 接下来如果直接用优先队列计算最小拓朴序就可以得到32分的好成绩. 如上方法复杂度为\(o(nlog(n))\),远远小于给定时限. 尝试引入随机算法. 每个数都定义一个优先级\(rank\). 用爬山求出局部最优解: ​ 每次先随机生成\(rank\)数组,然后随机一个点,试图将该点$r…
Description 题库链接 问你 \([l,r]\) 区间内所有整数中各个数码出现了多少次. \(1\leq a\leq b\leq 10^{12}\) Solution 数位 \(DP\) . 定义一个函数 \(cal(i)\) 为求 \([1,i)\) 中所有整数各个数码的和.显然答案就是 \(cal(r+1)-cal(l)\) . 考虑如何求 \(cal(x)\) . 先考虑数的位数小于 \(x\) 的情况.假设 \(x\) 的总位数为 \(tot\) .我们可以从 \(1\sim…
Day-1 晚上一直在出自己做的模拟赛的T1,真的快要死掉了. 分类讨论几十种情况. 窝还是找了Bluesky大佬一起来验题,她瞬间就A掉了这一道题目...自闭了.. 诶,我还是太弱了. 之前教练组织一场比赛,开题之后发现是GXOI/GZOI2019的新题,顺手切了两道,打了一个T1的暴力230到手. 感觉自己还是比较垃圾. 滚去睡觉,..(¦3[▓▓] 晚安 Day 0 早上 依旧一个一个非常正常的早晨. 窝背着书包拉着行李箱来到了HG,结果被保安拦下来,看窝比较可疑.毕竟现在还是上学时间,还…
题意 题目链接 Sol 神仙题Orz 首先不难看出如果我们从\(a_i\)向\(i\)连一条边,我们会得到以\(0\)为根的树(因为每个点一定都有一个入度,出现环说明无解),同时在进行排列的时候需要保证父亲节点一定在孩子节点之前出现 接下来考虑直接贪心.对于某些权值很小的点,我们需要让其尽早出现,同时又要满足选择的条件. 那么我们可以从小的点开始,依次向他的父亲合并,并删除该点(也就是如果父亲一但被删除,那么这个点立马被删除) 下面的内容抄袭摘抄自这里 然后直接用set搞一搞 复杂度:\(O(n…
题解 虽然要求一个dfs序,但是不是从根开始贪心 从最小的点开始贪心,最小的点显然是父亲选了之后马上就选它 那么我们每次把最小的点和父亲合并,两个联通块之间也是如此 对于两个联通块,他们合并的顺序应该是平均值较小的更靠前 因为有两个联通块和为\(S_i\)和\(S_j\),大小为\(B_i\)和\(B_j\) 如果\(S_i * B_j < S_j * B_i\)即\(i\)应该放在\(j\)前面,我们可以得到 \(\frac{S_i}{B_i} = \frac{S_j}{B_j}\) 代码 #…
题意 一个\(r\times c\)的棋盘,棋盘上有\(n\)个标记点,每个点有三种类型,类型\(1\)可以传送到本行任意标记点,类型\(2\)可以传送到本列任意标记点,类型\(3\)可以传送到周围八连通任意标记点.求最长路径. \(r,c\leq 10^6,n\leq 10^5\) 题解 这题做法很多,我就把每一行的所有类型\(1\)门缩到一起(直接找一个代表),列也同理,然后暴力连边,类型\(3\)连边用\(\text{map}\),这样每个点的入边中类型\(1\)或\(2\)最多有\(1\…