CF1208】的更多相关文章

CF1208 打的话貌似能够涨分的样子? A 水题 B 枚举左端点,看看右端点的最近位置 开一个类似于桶的东西维护一下上一次出现位置 左端点左边就删掉,否则就要将上一次出现的位置删掉 时间复杂度\(O(n^2)\)或者\(O(n^2logn)\)取决于是否离散化 貌似一个log就是二分答案 然后\(O(n)\)check一遍 #include<cstdio> #include<iostream> #include<queue> #include<algorithm…
题目 大意:构造一个n行n列的矩阵,使得每一行,每一列的异或和都相等,n是4的倍数. 先看4*4的矩阵,我们很容易构造出符合要求的矩阵,比如 0    1    2    3 4    5    6    7 8    9   10  11 12 13  14  15 这个矩阵每行每列的异或和都为0 对于一个n*n的矩阵,我们可以写成多个4*4的矩阵,为了保证数字不重复,可以对于其他的小矩阵都加上16,32等等 #include<iostream> #include<cstdio>…
C \(\begin{aligned}\ 0 0 1 1\\ 0 0 1 1\\ 2 2 3 3\\ 2 2 3 3\\ \end{aligned}\)将每个四方格分别加上\(0,4,8,12\) D \(O(nlog^2n)\)从末尾开始计算,二分出结果,然后动态删掉,在处理倒数第二,可以用\(BIT\)做 \(O(nlogn)\)找出最右边的\(0\),填\(1\),然后把右边的位置全部减\(1\):再找最右边的,为\(2\),依此类推 E \(n\)行\(w\)列的方格,每行有一可滑动矩阵…
题目链接 问题分析 这是蒟蒻第一道3500!不过话说luogu上两个题解的程序都是假的可还行(2019.11.1)-- 为了方便叙述,下面我们约定 : \([c]\) 的值为 \(1\) 当且仅当 \(c\) 为真,反之为 \(0\) . \(0\) 表示白色, \(1\) 表示黑色. \(son_u\) 表示 \(u\) 的所有儿子, \(ls_u\) 表示 \(u\) 的所有轻儿子, \(hs_u\) 表示 \(u\) 的重儿子. \(m\) 表示 \(u\) 的子节点个数. 那么实际上对于…
题意 如题目的图所示,每行都可以左右移动,但是数字不允许断开,且不许越界(宽度为w). 单独求每一列的最大的和为多少. 思路 对于每一列来说,在每一行上都有一个可以取到的区间, 所以,对于一列来说,答案就是每行的区间最大值的和.区间最大值可以用RMQ或者单调队列求. 一开始题目看错了,以为是w*n<=1e6,其实是w<=1e6,n<=1e6,Σleni<=1e6(leni为第i行的长度),直接上w*n*log,果断T了. 显然,当leni 比w小很多时,中间会有很多列都可以取到整行…
题意 让你构造一个长度为n的序列,记为p1……pn,(这个序列是1~n的全排列的一种) 给你n个数,记为s1……sn,si的值为p1……pi-1中小于pi的数的和. 思路 显然,应该倒着来,也就是从pn 开始构造,这样的话,当要填pi 的时候,p1到pi-1就是所有的还未填的数,那么我们只需要去找哪个前缀和符合就可以了. 比如:现在还没填进去的数是 1,2,3,4,5 而我现在的si 是6,那么,对应的pi 就是4,因为这样无论1,2,3,5怎么排,都符合si 为6 (才学疏浅,不怎么会讲) 那…