![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
洛谷
罚时大师月色
努力让更多小白和我一起共同进步
展开
-
CF41D Pawn (线性dp)
题目链接题意这道题是很简单的线性dp , 绿题 , 首先我们肯定要做二维的dp , 表示横坐标和纵坐标 , 但是题目又给了一个只有整除(k + 1) 的才能作为方案数 , (洛谷上的题解都是求总和为多少[没有意义的时间复杂度]),我的思路是横坐标为i, 纵坐标为j , 和 模 (k + 1) 为 z 的最大和 。时间复杂度一个完美的时间复杂度(n * m * k ) 。代码// Problem: CF41D Pawn// Contest: Luogu// URL: https://www.l原创 2021-10-27 19:31:07 · 223 阅读 · 0 评论 -
CF296B Yaroslav and Two Strings
题目链接题意这是一道经典的状态机dp , 刚开始我就打算分成四个状态 。第一个状态为 , 前 i 个数的状态是只包含 s[i] == w[i] ,第二个状态为 , 前 i 个数的状态中包含s[i] > w[i]的关系但不包含s[i] < w[i]第三个状态为 , 前 i 个数的状态中包含s[i] < w[i]的关系但不包含s[i] > w[i]第四个状态为 , 前 i 个数的状态为题目要求的合法状态。初始值 : f[0][0] = 1 。目标值 : f[n][3]原创 2021-10-26 23:51:22 · 194 阅读 · 0 评论 -
组合数学 - 错排公式
例题原创 2021-10-26 22:04:44 · 142 阅读 · 0 评论 -
P3302 [SDOI2013]森林 主席树 + 并查集 + 离散化 + lca + 启发式合并 简短代码(y总代码风)
题目链接这道题花费了我两小时 , 我快速写完代码 , debug了一个小时40分钟的故事, 最后一气呵成终于AC,故写题解纪念一下 。这道题其实是一个树上求第k大树的问题。首先我们去想想怎么求一维数组[l , r]的第k小树, 这时候我们考虑到这是主席树的模板题。这是算法提高课的可持久化数据结构中的求第k小数这是主席树的模板题,我当时写的丑代码。(请不要见笑,也是y总的代码风格)#include<iostream>#include<algorithm>#include原创 2021-10-03 12:10:16 · 127 阅读 · 0 评论 -
主席树模板 区间第k大数
题目入口首先看到n的个数很小,但是数据范围很大的情况下,我们一般优先会选择离散化然后再建树 。故第一步我们要先对其进行一个离散化 。第二步是关键思想 - 可持久化数据结构,这是一个保存历史数据然后解决问题的方法, 在这里,我们保留每添加一个数的数据作为历史线段树 , 然后对其进行一个类似于前缀和的路子进行查找答案。思路很简单,但是具体的细节仍需代码实现去完善逻辑思维。#include <iostream>#include <cmath>#include <cstr原创 2021-09-22 07:21:37 · 80 阅读 · 0 评论 -
P1975 [国家集训队]排队 分块的伪代码
题目链接该题是由分块做的,蒟蒻也只能用分块去做了,树套树代码太长了啊呜呜呜。首先我们先对逆序对做一个分析,课本(线性代数工程学,同济大学) 说,对于n个不同的元素,先规定个元素之间有以一个标准次序(例如n个不同的自然数,可规定由小到大为标准次序), 于是在这n个元素的任意排列中,当某一对元素的先后次序与标准次序不同时,就说它构成1个逆序,一个排列中所有逆序的总数叫做这个排列的逆序数。然后我们进行的在线操作时交换任意两个元素,首先我们进行分析, 这两个元素的下标如果为x , y的话,我们其实对于[1 ,原创 2021-09-21 11:34:30 · 195 阅读 · 0 评论 -
洛谷写题笔记
P3863 序列思路:第一步先利用差分思想去构成每个数标记每个差分,从左向右逐步生成每个数的时间线(分块的范围)由于差分是从左向右,故遍历每个数的位置生成的时间线都是相对应的时间线。然后转换了一个经典问题,对一个数进行几个操作在某一时刻加上x问这时间段有多少时刻是大于某数的。方法 , 我们对时间分块 , 对每个分块进行排序 , 由小到大排序 ,然后如果查询是覆盖当前的块区间,我们采取的块区间操作是二分 , 而不在块区间我们则采取一个暴力求个数的策略。故该题思路明确然后对每个数进行时间原创 2021-09-21 09:03:34 · 469 阅读 · 0 评论 -
P4198 楼房重建 线段树的合并考察
题目入口这道题其实一开始有点不是很容易去看出来这是线段树的问题,但是一看到带修改,十有八九是在考察线段树,看到题面要求的能否看到楼层,我们就想到线段树维护的是斜率, (因为只有与原点斜率大而且高的楼层才能被看到), 本题的难点在于怎么去维护这个线段树,本题中主要的限制因素在于离原点最近的点 , 也就是左半区间 , 我们每个点维护的是只存在[ l , r]区间的楼层,能看到多少个楼, 也就是除了这些区间外所有的楼层都不存在, 最难的在于怎么去合并这些楼层。我先引入一下大佬的思路(蒟蒻太累了,不想写)源自原创 2021-09-20 11:33:06 · 127 阅读 · 0 评论 -
P3612 [USACO17JAN]Secret Cow Code S 分治 (清楚思路 + 代码简洁)
题目链接 :P3612 [USACO17JAN]Secret Cow Code S这道题的思路是给你一个字符串,这个字符串变长的规律是先加尾结点,然后再把前面的部分平移到后面a+b反转后a+b+b+aa + b 反转后 a + b +b + aa+b反转后a+b+b+ab是原字符串的最后一个字符,变换规律如上所示,这道题给你第n个字符,让你输出相应的字符思路 : 我们先把字符串扩展到第一次出现大于等于n的长度 , 然后根据最后一次扩展的位置,返回上一个扩展字符所在的位置首先我们观察一下现在的扩原创 2021-09-14 18:45:59 · 2162 阅读 · 1 评论 -
P1083 [NOIP2012 提高组] 借教室 差分 + 二分
题目链接[https://www.luogu.com.cn/problem/P1083]题意:给定一定数目的教室,每个教室都会有固定的位子数量。每天都会有同学去借教室(l - r区间的教室借一定数量的位置),什么时候第一次出现某个教室的位置不能满足同学的需求。思路,第一次出现,很容易想到二分,我们如何进行二分,首先教室不能满足需求,说明某个教室的板凳数目已经出现了负数,所以我们先把所有的方案全部加上去,再暴力枚举是否出现了负数。每个方案都是一个区间修改操作,所以我们可以采用前缀和+差分的方式去进行修原创 2021-09-14 09:54:16 · 137 阅读 · 0 评论