「总结」杂题选讲

Bitwise Xor

我们可以发现一个序列中的最小的异或值是两个大小相邻的数的\(xor\)取\(min\)。

那么我们对序列排序。

只需要计算相邻的\(xor\)是大于等于\(k\)的方案。

\(dp[i]\)是以\(i\)结尾最小\(xor\)大于\(K\)的方案。

然后我们可以类似于用树状数组来搞最长升降转移。

这次用\(trie\)来转移。

MOD Problem

大水题

\[\begin{aligned}
ans&=\sum\limits_{i=1}^{n}n\ mod\ I\&=\sum\limits_{i=1}^{n}n-i\lfloor\frac{n}{i}\rfloor\&=n^2-\sum\limits_{i=1}^{n}i\sum\limits_{j|i}^{n}I\&=n^2-\sum\limits_{j=1}^{n}\sum\limits_{i|j}i\&=n^2-\sum\limits_{j=1}^{n}\sigma(i)\\end{aligned}
\]

然后线筛。

平方串

\(dy\)讲过的原题。

貌似是。。

还是用插点法,枚举长度\(len\),每\(len\)个插一个点。

发现每次两个串必然是越过两个插入的点的。

然后就找两个点的\(lcp\)和\(lcs\)就可以了。

这样能够确定经过相邻两个特殊点的平方串左右端点的范围。

然后用类似\(hash\)的方法来统计答案就行了。

Conjugate

联赛原题吧。

分别考虑每一堆和第一堆做贡献。

使得某一堆在第一堆之前做贡献,可以发现此时其他堆是无效的。

那么最终的答案就是:

\[ans=1+\sum\limits_{i=2}^{n}\frac{a_i}{a_1+a_i}
\]

湖人

感觉还是原题。

想不起来是哪里看到的了。

非别考虑每一个点自己终结自己的期望。

那么答案是:

\[ans=\sum\limits_{i=1}^{n}\frac{1}{d(i)}
\]

可以用一个\(min\_25\)筛来做。

虽然我还没想懂怎么做。

Game with Marbles

先求出摸到一个蓝球之前摸到绿球的期望个数。

如果摸到了红的可以扔掉重新膜,所以认为红球其实是不存在的。

那么有:

\[E=\frac{G}{B+G}(E+1)
\]

所以:

\[E=\frac{G}{B}
\]

一个蓝球对应这么多绿球,那总共的绿球就是\(\frac{KG}{B}\)个咯。

对红再单独计算。

可以计算每一个红球。如果这个球没,没有被摸到,概率就是\(\frac{B}{B+1}\)

所以一个球的贡献就是\(1-\left(\frac{B}{B+1}\right)^K\)

游戏

这个就是贝叶斯公式了。

我们把每一个点左右两端确定的情况作为这个点期望的取决标准。

用线段树和两个矩阵来维护这些区间。

每个点的矩阵维护贝叶斯公式划出的分母和。

AGC035D

发现其实是消除掉一个数给两边加上。

那么每一个权值都要乘一个系数上去。

做个区间\(dp\)。

设\(dp[l][r][x][y]\)表示做右端点的系数为\(x,y\),区间\([l+1,r-1]\)已经被消除的最小答案。

枚举中间点合并区间。

\[dp[l][r][x][y]=\min\limits_{mid=l}^{r}dp[l][mid][x][x+y]+dp[mid][r][x+y][y]-(x+y)A_{mid}
\]

operation

联赛原题。

由于除以二的操作并不会进行很多次。

所以我们可以直接按度数轻重点划分。

概率论

听过的,写在某个生成函数里面了。

https://www.cnblogs.com/Lrefrain/p/12274363.html

这篇的最后一个。

Jiry Matchings

经典的方法

如何用\(FFT\)快速求出重链划分情况下的所有贡献。

其实就是从叶子对所有轻儿子分治\(FFT\),然后再从一条重链上分治\(FFT\),把一条重链的贡献分治\(FFT\)出来。

这个时候链顶成为别人的轻儿子,再对这个操作递归即可。

小星星

做过的题。

https://www.cnblogs.com/Lrefrain/p/11644600.html

子集反演嘛。

Ribbons on Tree

考虑容斥。

我们如果去掉一些边集,就相当于一个连通块划分,同时从连通块中选择一个代表点的方案。

这是\(prufer\)序列的结论,详情见数树那个题

这个东西如果用题解写的方法就太麻烦了。

我们可以直接把第二维度压掉

直接设\(dp[x][0/1]\)表示第\(x\)的点的子树中\(x\)所在连通块是否存在代表点的方案数。

原文地址:https://www.cnblogs.com/Lrefrain/p/12656405.html

时间: 2024-11-08 16:31:03

「总结」杂题选讲的相关文章

正睿OI DAY3 杂题选讲

正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n\leq k^2\) 暴力 \(n\geq k^2\),找点x,求直线l经过x,且点数最多,点数\(\geq k+1\),递归,否则再找一个 One Point Nine Nine 现在平面上有\(n\)个点,已知有一个常数\(D\). 任意两点的距离要么\(\leq D\),要么\(\geq 1.

洛谷 P1595 信封问题(周五杂题选讲)(错排公式)

题目描述 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有信都装错信封共有多少种不同情况. 输入输出格式 输入格式: 一个信封数n(n<=20) 输出格式: 一个整数,代表有多少种情况. 题解 本题即为伯努利信封问题 360百科:错排公式 STD 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int b(int n) 5 { 6 if (n==1) return 0; 7 else if (n==2) r

5.30杂题选讲

前三题为水题,后面两题更有意思. 然而代码全都咕咕咕了,也许以后会补. Hdu1520 Anniversary party 简单树形DP. Hdu6386 Age of Moyu 简单最短路. bzoj3679 数字之积 简单数位DP. CF Gym 101482G Gathering 首先对于每个点,可行的区域显然是个矩形,那么可以先对这些矩形求交,得到合法区域. 如果不考虑限制,那么最优点显然是\(x,y\)的中位数. 考虑限制之后,只要定下\(x\),那么最优的\(y\)也是确定的. 而且

ZROI 19.08.02 杂题选讲

给出\(n\)个数,用最少的\(2^k\)或\(-2^{k}\),使得能拼出所有数,输出方案.\(n,|a_i|\leq 10^5\). 显然一个绝对值最多选一次.这个性质非常强. 如果所有都是偶数,可以直接除以\(2\). 否则\(1\)或\(-1\)必须选,暴力枚举选哪个然后递归,每层去重,发现最多只会递归\(\log a\)次.总复杂度\(O((n+a)\log n)\),等价于线段树上区间长度总和. \(n\)个数,每次可以花费\(1\)的代价给某个数\(+1\)或\(-1\),问变成不

20190915杂题选讲

T1 设\(b_1=p_1^{a_1}p_2^{a_2}-p_n^{a_n}\),显然答案最大为\(\sum a_i\) 考虑让\(\sum a_i\)最大,那\(b_1\)不能有有超过5的质因子,因为\(2^2<5\).3的个数最多也只有一个,因为\(2^3<3^2\) 于是就可以dp,设\(f[i][j][k]\)表示填到第i个数,gcd可以表示为\(2^j3^k\)的答案,分类讨论转移一下,最后答案为\(f[n][0][0]\) code: #include <bits/stdc+

「android」as过滤svn文件

环境 ubuntu android studio 2.2 「问题现象」 使用as的svn插件,本地与SVN的差异文件过多,其中包括了大量的临时文件,很不利于排查实际差异文件,需要临时文件排除. 备注:该问题查了好久才摸索出. 「问题解决」 VCS-->Commit Changes-->右击选中项,选择Move to Another ChangeList,移到自建的列表中,这样就不会影响到实际文件的差异比较.

「CQOI2015」选数

「CQOI2015」选数 题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究.然而他很快发现工作量太大了,于是向你寻求帮助.你的任务很简单,小z会告诉你一个整数K,你需要回答他最大公约数刚好为K的选取方案有多少个.由于方案数较大,你只需要输出其除以1000000007的余数即可. 输入输出格式 输入格式: 输入一行,包含4个空格分开的正整数,

【sql: 联系题26 ,27】查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩,查询课程名称为「数学」,且分数低于 60 的学生姓名和分数

题目:26:查询平均成绩大于等于 85 的所有学生的学号.姓名和平均成绩 分析:这个应该是根据student 进行分组 group by 再根据 having >= 85 进行过滤,然后在关联student 信息表,拿到学生的基本信息 SELECT student.id, student.stdentname,AVG(student_score.score) AS a FROM student_score, studentWHERE student.id = student_score.stud

大数据和「数据挖掘」是何关系?---来自知乎

知乎用户,互联网 244 人赞同 在我读数据挖掘方向研究生的时候:如果要描述数据量非常大,我们用Massive Data(海量数据)如果要描述数据非常多样,我们用Heterogeneous Data(异构数据)如果要描述数据既多样,又量大,我们用Massive Heterogeneous Data(海量异构数据)--如果要申请基金忽悠一笔钱,我们用Big Data(大数据) 编辑于 2014-02-2817 条评论感谢 收藏没有帮助举报作者保留权利 刘知远,NLPer 4 人赞同 我觉得 大数据