随笔分类 - codeforces
1
摘要:A.Median Maximization 比较简单显而易见的贪心,显然前⌊m−12⌋⌊m−12⌋数是00,后面的数尽可能平均分。 #include<cstdio> #include<algorithm> #include<iostream> #include<
阅读全文
摘要:"codeforces" 一般的套路显然转化按位确定 第一行直接算有多少字典序比他小就行了。 对于22到nn行,每行的总方案数就是错排数量。 这就存在一个问题,我们无法确定当前行能放的有多少字典序比它小。 我们发现对于第ii行第jj个,假如第i1i1行前jj个数和第ii行前jj个数一
阅读全文
摘要:"codeforces" 由于每个数组可以滑动。 我们对于一个位置,要考虑它是否可以为空,能放的最大值是多少。 每行的每个位置都直接这样做显然会TLE。 我们发现每行可以分为三个部分(有些时候不可以,随便讨论一下啦) 第一个部分是只能放前几个。 第二个部分是所有的都可以放。 第三个部分是只能放后几个
阅读全文
摘要:"codeforces" 显然发现可以从右往左依次确定。 考虑求出前缀和,每次查询当前位置上的值,然后删掉当前数,动态维护一下前缀和就好了 对于查询值可以树状数组+二分O(nlog2n)O(nlog2n),也可以线段树O(nlogn)O(nlogn) ~~貌似树状数组+二分比线段树跑的要快~~ 代码: c++ inc
阅读全文
摘要:"codeforces" 发现矩阵 \begin{align } &0\ 1\ 2\ 3\\ &4\ 5\ 6\ 7\\ &8\ 9\ 10\ 11\\ &12\ 13\ 14\ 15\\ \end{align }\begin{align } &0\ 1\ 2\ 3\\ &4\ 5\ 6\ 7\\ &8\ 9\ 10\ 11\\ &12\ 13\ 14\ 15\\ \end{align } 每行和每列的xorxor和为0,发现每个位置加上16x16x也不会改
阅读全文
摘要:"codeforces" 我们设f[i]f[i]表示有多少个数的二进制下的子集值为ii 显然当f[i]=2f[i]=2时,ii是可以通过aj&akaj&ak得到的 然后我们枚举aiai,从高位到低位考虑,尽量多取aiai二进制下没有的位。 然后取最大值就行了,至于满足$i include includ
阅读全文
摘要:"codeforces" 考虑算出nxtinxti表示以ii为左端点,不出现重复的数最远可以到的位置 然后枚举左端点ll,枚举右端点rr,如果当前区间内的最大值mxrl+1mxrl+1,我们就将右端点移到mx+l1mx+l1的位置上。 由于答案是O(n)O(n)的,所以总复杂度就是O(nlogn)O(nlogn)
阅读全文
摘要:"codeforces" 线段树优化建图的裸题 代码:
阅读全文
摘要:"codeforces" 很有意思的题。 考虑dp,设fifi表示ii这棵字树的答案。 显然有fi=degx!∏j∈son[i]fjfi=degx!∏j∈son[i]fj 由于根节点是钦定的,所以答案还要乘上一个nn 代码: c++ include include include include us
阅读全文
摘要:"codeforces" 很有意思的构造题,自己并没想到 构造方法就是每次从一列的第一个连向最后一列的最后一个,然后不断交叉去连。 连完这两列后再往内走一个,以此类推 代码: c++ include include include using namespace std; define rg reg
阅读全文
摘要:"codeforces" 简单题 考虑每次都买它能买的最大的,所以他买的一定是价格比他钱低的东西。 我们考虑建立权值线段树,对于aiai将[1,a[i]][1,a[i]]这一段加11,对于bibi将[1,b[i]][1,b[i]]这一段减11。 每次查询就查询最右边的值大于00的,因为这意味着在他后面还有没被购买
阅读全文
摘要:"codeforces" 有一个很显然的O(a+b)O(a+b)的做法可以想到,就是枚举kk,然后O(1)O(1)判断 如何O(1)O(1)判断,我们显然考虑将这个序列每kk个分一个块,只要判断存不存在合法方案就行了 其实这个时候很显然就能想到整除分块了,所以复杂度已经优化到O(√a+b)O(√a+b)了 判
阅读全文
摘要:"codeforces" 考虑只有三个字符,所以每四个必然选出两个来,也就是不存在impossibleimpossible的情况 所以我们简单模拟就好了,从两端往中间扫,不匹配就移动一端,时间复杂度O(n)O(n)。 代码: c++ include include include include using n
阅读全文
摘要:"传送门" 很简单的一个题目 由于向上是无限延伸的,所以我们从上往下考虑,然后对于每个xx坐标,我们只用管它是否出现过。 统计答案就是按每个yy坐标来统计, 如果只有一个点,直接计算当前出现的所有xx的本质不同的区间覆盖的方案数就行了 但是现在有一个问题,对于同一个yy坐标,xx坐标可能不
阅读全文
摘要:"传送门" 读懂题之后发现条件一和条件二并没有什么用 然后对于条件四显然可以将整个图连成一个环 然后考虑条件三怎么满足? 假如点数正好是质数,直接就满足了 否则 此时所有点的度数都是2。 给每个点多连一条边,度数依然是质数 发现这样最多可以连⌊n2⌋⌊n2⌋
阅读全文
摘要:"传送门" 一道小清新题 首先转化一下问题,将题目给出的tt数组sort之后差分一下。 问题就变成了给出一个长度为n1的序列,选出k个不相邻的数使得和最小 很容易发现这是一个下凸的函数,wqs二分去掉k的限制之后那个dp就很简单了 设f[i][0/1]表示前$
阅读全文
摘要:"传送门" 首先应该考虑一下,多加一条边对树上路径的影响是什么 可以发现多加一条边就会出现一颗基环树 我们发现所有经过环的路径都会翻倍 那么假设x是y的父亲,x在环内,那么将y加入环的贡献就是(size[x]size[y])size[y] 然后类似求树的直径做两遍bfs(
阅读全文
摘要:"Codeforces Round 499 (Div. 1)" 这场本来想和同学一起打virtual contest的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解。 "B.Rocket" 极其简单的一道交互题,有些位置会说反的,那么就选一个数来询问直接选出所有的这样的位
阅读全文
摘要:罚时有点小严重,但是div.3确实快乐. "A.Wrong Subtraction" 模拟,暴力模拟. "B.Two gram" O(n2)暴力枚举. "C.Less or Equal" ~~小清新~~的判断题,sort就可以了,判断很小清新的. c++ include include inc
阅读全文
1