摘要:
"atcoder" ~~一道小清新dp题~~ 我们设$f[i][j]$表示当前放了$i$个白球和$j$种其他颜色的球$(j include include include using namespace std; define rg register void read(int &x){ char 阅读全文
摘要:
"codeforces" 由于每个数组可以滑动。 我们对于一个位置,要考虑它是否可以为空,能放的最大值是多少。 每行的每个位置都直接这样做显然会TLE。 我们发现每行可以分为三个部分(有些时候不可以,随便讨论一下啦) 第一个部分是只能放前几个。 第二个部分是所有的都可以放。 第三个部分是只能放后几个 阅读全文
摘要:
"codeforces" 显然发现可以从右往左依次确定。 考虑求出前缀和,每次查询当前位置上的值,然后删掉当前数,动态维护一下前缀和就好了 对于查询值可以树状数组+二分$O(n\log^2n)$,也可以线段树$O(n\log n)$ ~~貌似树状数组+二分比线段树跑的要快~~ 代码: c++ inc 阅读全文
摘要:
"codeforces" 发现矩阵 $$ \begin{align } &0\ 1\ 2\ 3\\ &4\ 5\ 6\ 7\\ &8\ 9\ 10\ 11\\ &12\ 13\ 14\ 15\\ \end{align } $$ 每行和每列的$\rm xor$和为0,发现每个位置加上$16x$也不会改 阅读全文
摘要:
"codeforces" 我们设$f[i]$表示有多少个数的二进制下的子集值为$i$ 显然当$f[i] =2$时,$i$是可以通过$a_j\&a_k$得到的 然后我们枚举$a_i$,从高位到低位考虑,尽量多取$a_i$二进制下没有的位。 然后取最大值就行了,至于满足$i include includ 阅读全文
摘要:
"codeforces" 考虑算出$nxt_i$表示以$i$为左端点,不出现重复的数最远可以到的位置 然后枚举左端点$l$,枚举右端点$r$,如果当前区间内的最大值$mx r l+1$,我们就将右端点移到$mx+l 1$的位置上。 由于答案是$O(n)$的,所以总复杂度就是$O(n\log n)$ 阅读全文
摘要:
"codeforces" 线段树优化建图的裸题 代码: 阅读全文