题目大意:给你一个数组,数组是经过q次区间覆盖后的结果,第i次覆盖是把区间内的值赋值为i,其中有若干个地方数值未知(就是0),让你判断这个数组是否可以经过覆盖后得到的,如果可以,输出任意一种可行数组. 思路:不合法的情况只有2种.1:两个相同的数字中间出现了比它小的数字,比如: 6 5 6 就不合法,因为覆盖6的时候是覆盖连续的一段区间,而5比6先覆盖,所以这种情况不存在.我赛后看AC代码的时候发现有的人只是判断是否出现谷形的情况,这种是不对的. 比如这种样例:3 3 3 1 2 这种判断方法会…
题解 非常容易想到的线段树, 还可以用并查集来. 还有一位大神用了$O(n)$ 就过了Orz 要判断是否能染色出输入给出的序列,必须满足两个条件: 1. 序列中必须存在一个$q$ 2. 两个相同的数$x$的中间不存在比 $ x$ 小的数 首先判断输入的数列中是否存在$q$, 若不存在$q$ 且没有 $a_i = 0$, 表示序列中一定没有$q$, 直接输出NO 若存在某个$a_i = 0$ , 将任意一个染成$q$即可 然后我们再查询两个相同的数$x$ 中是否存在比$x$ 小的数,用线段树来维护…
开始觉得是规律题的,自以为是的推了一个规律,结果测试数据都没过....看了love神的博客才发现只是把式子展开就找到规律了.不过挺6的是我虽然想错了,但是维护的的东西没有错,只是改改(改了进两个小时好吗????)就过了 题意:给你一串数字,然后两种操作: “= l r x” 是把数组第l位置到r位置的值都变为x “? l r k”就是求一个公式的和 ∑(l <= i <= r) ai*(i-l+1)^k 题解:因为k比较小嘛,可以展开式子看一下规律,展开后注意要往 构造常数或者构造递归 迭代 …
题目:codeforces 482B. Interesting Array 题意:给你一个值n和m中操作,每种操作就是三个数 l ,r,val. 就是区间l---r上的与的值为val,最后问你原来的数组是多少?假设不存在输出no 分析:分析发现要满足全部的区间,而一个点上假如有多个区间的话,这个点的值就是全部区间或的值.由于仅仅有这样才干满足全部区间的.把全部位上的1都保存下来了.那么能够发现用线段树来维护,可是那么怎么推断满不满足条件呢?能够也用线段树,更新了之后在整个维护一遍看看满不满足题意…
题目描述: D. Interesting Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output We'll call an array of n non-negative integers a[1], a[2], ..., a[n] interesting, if it meets m constraints. The i-th of t…
题目链接:https://codeforces.com/contest/1263/problem/E 题意:一个编译器,每次输入一些字符,R表示光标右移,L表示光标左移,然后有一些左括号(  和 右括号 ),每次会询问当前输入的数据的括号是否合法,如果不合法输出-1,如果合法输出最大合法的括号对数,合法的括号就是()这种形式的. 思路:大致思路是用线段树维护区间一个区间前缀和,初始化前缀和为0.遇到单点更新,(让管辖区间+1,)就让管辖区间-1,,判断是否是合法括号需要判断区间最小值是否为0,且…
Codeforces 题目传送门 & 洛谷题目传送门 *2800 的 DS,不过还是被我自己想出来了 u1s1 这个 D1C 比某些 D1D 不知道难到什么地方去了 首先碰到这类问题我们肯定考虑枚举什么东西,然后在枚举过程中用个什么东西维护答案,求出其对答案的贡献.此题一个很直观的想法是枚举左端点,但很遗憾此题涉及 gcd,不太好直接维护.故我们换个想法,枚举答案. 我们先预处理出每个数的所有因子--这个显然可以在 \(n\ln n\) 的时间内求出.然后从大到小动态地枚举一个指针 \(i\).…
线段树的区间更新与区间求和...一颗这样的线段树用两次... 先扫描1~k...用线段树统计出每个操作执行的次数... 那么每个操作就变成了 op. l  , op.r , op.c= times* op.c 清空线段树..将初始的a1,a2~~an放入..用每个操作来更新值~~ Program: #include<iostream> #include<stdio.h> #include<string.h> #include<set> #include &l…
传送门 解题思路: 这道题给了我们一个崭新的角度来看线段树. 我们常常使用的线段树是维护区间的函数的. 这里呢,提示我们线段树其实还可以维护递推. 美好的矩阵递推性质支持了这一功能. 或者说,对于递推项求和,可以使用线段树维护矩阵. 区间向前递推可以用懒惰标记记录递推矩阵. 区间的查询可以是子节点矩阵和. 这其实也是满足分配率的. 最后pushup,pushdown搞一搞就好了. 代码(闲来无事卡常码风突变): #include<cstdio> #include<cstring>…
题目链接:https://zhixincode.com/contest/3/problem/J?problem_id=43 样例输入 1 4 1110 11 110 21 210 31 315 415 415 415 415 4 样例输出 1 28 题解: 首先是有个简单的想法,假设wls买完后,$n$ 个居民他们的各自的宝物数目最大不超过 $k$,因此wls手里的宝物数目至少要大于 $k$. 所以暴力枚举 $k$,然后再暴力地对所有宝物数目超过 $k$ 的居民,将他们买到不超过 $k$:然后如…