09 2021 档案
摘要:Lisa 这是个什么玩意 先打个表 然后发现a的取值似乎非常有规律 a的一些段落是连续的,然后这些连续的a对于每一块 a,b,c的值是从 且对于b,如果我们把b在同一块里的值分成四部分的话,会发现首项大小是固定的,这四块的大小关系是固定的,这四块的取值范围是固定
阅读全文
摘要:Jisoo 显然满足单调性,可以用单调队列优化 但是要维护两个值 考虑一下这两个值来说,因为每次疲劳值最多加1,那么无论如何优先选择疲劳值最小的来进行转移, 答案肯定不会更差 如果有两个数疲劳值相同但是高度不一样的话,显然保留高度更高的比较好 #include<iostream> #include<
阅读全文
摘要:Jisoo 首先可以意识到,对于这个数组,他的异或和一定不会超过数值和 所以说 直接挂了 然后意识到,区间和的奇偶性和异或和是一样的,(看第一位),这样也不行 剩下的呢,可以直接构造 (已经保证了分子为偶数
阅读全文
摘要:Jisoo 对于一个等差数列? 直接维护这个区间的首项和公差就可以了 最后的答案反正只有单点查询(区间也差不多) 返回那个小区间的“首项”就可以了 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #d
阅读全文
摘要:jennie 很经典的线段树维护最大子段和 我们只需要维护一下每一个区间的最大前缀,后缀,子段和区间和 对于每一个区间 他的最大前缀可能是左儿子的最大前缀或者左儿子的和加上右儿子最大前缀 后缀,同理 最大子段可能是左儿子最大后缀加上右儿子最大前缀或者说左,右儿子的最大子段 #include<iost
阅读全文
摘要:Lisa 显然对于每一个时刻,可以调到的温度是一个区间 那么这样来做的话,我们只需要算出这个区间,然后去就可以了 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define int long
阅读全文
摘要:Lisa 首先强行选择一个点 然后计算它左边最多长区间,右边也是 就可以了 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int a[600001]; in
阅读全文
摘要:Jennie 从左往右处理骨牌,需要知道什么就可以确定状态了? 需要知道当前的差值,然后dp决定取不取反 怎样知道差值 当然是扔到状态里 然后这就是一个背包了 #include<iostream> #include<cstdio> #include<algorithm> #include<cstri
阅读全文
摘要:Jennie 显然可以模拟,但是谁会喜欢写高精和逆元呢? 需要撤销乘法操作,该怎么做呢 如果说一个个乘法结合起来的话,那么撤销就是把一个数变成1 那么就是一个线段树的问题了 #include<iostream> #include<cstdio> #include<algorithm> #includ
阅读全文
摘要:CSP2021初赛爆炸记 黄色的树林里分出两条路,可惜我不能同时去涉足 今天是2021/9/19,最后一次NOIP 早晨起的很晚,因为昨晚的CF的原因,打了一个小时跟我说不计rate,shit 好吧好吧不上学还是有自己的轻松之处,买个咖啡就走了 在车上应该学习吗,看来是不合适的,于是也只能睡觉 lj
阅读全文
摘要:jisoo 简单的二分 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; int n,m; struct po{ int x;
阅读全文
摘要:jisoo 可以证明,一定只需要考虑需要翻转的边 如果一种合法方案,需要翻转不需要翻转的边,那么就必然有一个过程是把这条边翻转过来, 那么这一条边有两种可能,要不它连着偶数个由需要翻转的边组成的环,要不是有许多同样的此类不翻转边组成的环 对于以上两种可能,可以发现都会出现需要翻转的边连成环的可能。
阅读全文
摘要:jisoo 这是一个拓扑排序,对于一条路线,中间没有走过的节点,一定等级低于路线上经过的节点 然后就可以了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #defin
阅读全文
摘要:Jisoo 首先呢,可以知道,每个数都要去它右边第一个空位置 然后对于,假如是空位的话,那么无论谁去哪里,总距离不变 那么显然让每一个数去它右边的第一空是最有的(拉开距离差距) 然后按照距离分配b #include<iostream> #incl
阅读全文
摘要:Jisoo 表示节点i为头的最长毛毛虫 (我这里i的父节点呗算作腿的一条) 然后就可以不用特判地进行转移 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define int long
阅读全文
摘要:Jisoo 这种背包是不是把一维扔进状态就都能做了啊 表示到了第i个任务的时候A机器工作了j时间,转移显然 有点卡时间,注意常数优化 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring>
阅读全文
摘要:Jisoo 显然找硬币和付钱是两个过程 然而最多给多少钱呢 有应该找最多多多少呢? 方案一 时间绰绰有余,我们开的大一点 证明 找钱的数量不会超过 #include<iostream> #include<cstdio> #include<algorithm> #include<
阅读全文
摘要:jennie 怎样处理呢 肯定不行 不如,二进制拆分一下 这样表示第i位为1的最长长度 对于每一个数,如果他的某一个二进制位为1,那么他可以从之前这一位为1的状态转移过来,然后转移这一位为1的状态 #include<iostream> #include<cstdio> #
阅读全文
摘要:Lisa 情商和智商和,这不就是个背包 怎样保证大于零呢,我们吧一个商作为维度存进去,另外一个商就是我们转移的值了 然后,直接背包 最后检查所有大于零的部分,统计就可以了 注意一下负数要反着转移 然后就可以了 #include<i
阅读全文
摘要:Jennie 一个比较水的动态规划 然后这个玩意可以用有限队列 #include<iostream> #include<cstdio> #include<algorit
阅读全文
摘要:Jennie 很简单的东西 分左右端点讨论 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; int n; int l[20005],r[20005]; int dp[
阅读全文
摘要:Lisa 这个题其实很水 这是什么意思呢,到第i行放j盆花,可能上一个花瓶放的是j-1种花,也可能上一个花瓶(或更久)已经有j-1种花了 #include<iostream> #include<cs
阅读全文
摘要:Lisa 去年考的这东西 今年写写解析 T3 为什么是位,当然就是说一个比特啦 然后×起来就可以了 T15背过呗 然后没啥好说的了 阅读程序 T1 1 1000是必挂好不好 2 如果是个常数列呢 3 没错,例如递增序列和递减序列 4 当然,因为这个i和j互换也是会出现的 5 128的二进制全是1,那
阅读全文
摘要:Lisa 这个序列只需要考虑最大值和次大值的数量 如果最大值数量大于1,那么所有排列都可以,输出全排列 如果最大值为1且不等于次大值加1,那么不可能存在 如果最大值为1且等于次大值加1,那么只要最大值后面有至少一个次大值就可行 然后就是组合数学算一算 #include<iostream> #incl
阅读全文
摘要:jisoo 从只有几个棋子开始考虑 只有一个的话先手必胜 只有两个的话先手如果动前一个棋子,那么后手一定也可以动 那么先手唯一的方案就是动后面的棋子 这样的话如果有三个,先手动中间的那一个是没有意义的,后手一定可以动最后于一个 如果先手动第一个,后手动中间的也是没有意义的,那么后手要不动第一个要不动
阅读全文
摘要:Jennie 一个贪心 首先应该贪心的处理掉所有的的东西,但是对于的怎么办呢 假设这里有,并且只能先干1的话,那么有 \[ \left\{ \begin{aligned} T+b_1>t_2 \\ T+b_2<t_1 \end{align
阅读全文
摘要:一开始写了个傻逼做法 #include<cstdio> #include<algorithm> using namespace std; int n; int a[1000001]; int lim; int ans; int maxx; int po; int main(){ scanf("%d"
阅读全文
摘要:这是个什么玩意 简单一想,就知道可以从左往右数 把相同的数字“摞”到一块 如果当前格比左边小的话,那么显然从小组到大组分就可以了 如果反之,更显然需要出现只有一个人的组 用优先队列实现这个东西就可以了. #include<iostream> #include<cstdio> #include<alg
阅读全文
摘要:Lisa 一个疯狂的双向bfs 压缩一状态,用一个8位int,其中每2位表示一个坐标,这样最差情况下开88888888的int数组,太荒谬了,那就换成一个map,存储状态 这四个球没有区别,所以我们保存状态按照一个固定的顺序保存就可以了 然后就是繁琐的步骤 #include<iostream> #i
阅读全文