摘要:
暂且不说知识储备问题,就我的常见错误给个总结: 1、数组看情况计算着开,也不能盲目的开大,顶着范围开也有一定概率会挂。 2、有些算法不会计算时间复杂度,我经常因为不确定时间复杂度(经常是因为O(玄学)的dfs之类的算法)能否通过题目而一直卡在一道题上。 3、注意题目的特性,善于找性质,不要总是想 阅读全文
摘要:
A.Median Maximization 比较简单显而易见的贪心,显然前⌊m−12⌋数是0,后面的数尽可能平均分。 #include<cstdio> #include<algorithm> #include<iostream> #include< 阅读全文
摘要:
"LOJ" 这个题目挺有意思的,参考了一下题解写的。 设fir[i]表示颜色i第一次出现的位置,ed[i]表示颜色i最后一次出现的位置。 首先肯定可以转化为求区间[l,r]使得fir[i]≥l,ed[i]≤r,i∈[l,r]的个数 然后可以考虑枚举其中 阅读全文
摘要:
"LOJ" 显然可以想到二分答案。现在考虑如何check 容易发现,假设考虑完前i1个位置,对于位置i,我们肯定需要选择经过它的右端点尽量大的区间。 这就可以用一个堆来维护一下。 然后我们还需要知道每个位置被覆盖了多少次。这就再写颗线段树就行了。 代码: 阅读全文
摘要:
题意简述:给你一颗n个点的树,问你至少需要加几条边,可以使得这棵树删去任意一条边后依然联通。并给出一种方案。 很显然可以转化为对于树的任意一颗子树,都需要连一条边到其他子树,显然连叶子节点是最优的。 考虑这样一种连边方案:设一共k个叶子节点,按dfs序排序,第i个叶子节点连向第$i+ 阅读全文
摘要:
"LOJ" 我们发现假如第一步选择位置i,那么系统操作者能把Byteasar限制成经过i的长度为⌈n2⌉的任意一个序列。那么系统操作者肯定会选择价值最小的那个。 现在问题就是求出经过每个位置的长度为$\lceil \frac{n}{2 阅读全文
摘要:
"LOj" 显然题目可以转化为一个二分图。 先找一下是否存在度数为0的点,存在则无解、 然后把度数为1的点拎出来,这些点的选择是唯一的。 这些可以用拓扑排序处理一下。 接下来就剩下了一堆环。 然后因为不能选择相邻的边,一个环内有两种选法,设为A和B。 考虑先选出和比较小的那个,假设是 阅读全文
摘要:
"LOJ" ~~好简单的题。~~ 对美味度排序,然后价格为下标建立主席树,查询时二分就行了 代码: 阅读全文
摘要:
"codeforces" 一般的套路显然转化按位确定 第一行直接算有多少字典序比他小就行了。 对于2到n行,每行的总方案数就是错排数量。 这就存在一个问题,我们无法确定当前行能放的有多少字典序比它小。 我们发现对于第i行第j个,假如第i1行前j个数和第i行前j个数一 阅读全文
摘要:
"atcoder" ~~一道小清新dp题~~ 我们设f[i][j]表示当前放了i个白球和j种其他颜色的球$(j include include include using namespace std; define rg register void read(int &x){ char 阅读全文
摘要:
"codeforces" 由于每个数组可以滑动。 我们对于一个位置,要考虑它是否可以为空,能放的最大值是多少。 每行的每个位置都直接这样做显然会TLE。 我们发现每行可以分为三个部分(有些时候不可以,随便讨论一下啦) 第一个部分是只能放前几个。 第二个部分是所有的都可以放。 第三个部分是只能放后几个 阅读全文