摘要:
传送门 这是一道典型的单调栈。 题意理解 先来理解一下题意(原文翻译得有点问题)。 其实就是求对于序列中的每一个数i,求出i到它右边第一个大于i的数之间的数字个数c[i]。最后求出和。 首先可以暴力求解,时间复杂度o(n^2)显然TLE。 然后就是用单调栈来做。 单调栈 单调栈就是维护一个栈,使得栈 阅读全文
摘要:
传送门 解题思路 不会错排问题的请移步——错排问题 && 洛谷 P1595 信封问题 这一道题其实就是求对于每一行的每一个棋子都放在没有障碍的地方的方案数。 因为障碍是每行、每列只有一个,所以答案不受障碍的影响。 这里障碍就等于是信封,棋子就等于是信,也是求所有的信都放错信封的方案数。 显然是错排问 阅读全文
摘要:
2019-10-19 ——这个注定要被载入史册的日子 作为一名初中生,和lpy大佬一同参加提高组的比赛,而今年普及组和提高组的时间竟然不一样,于是——凌晨六点半,来到了pdyz和高中生一起坐车去。 高中果然和初中不一样——少了许多欢声笑语——一片沉默。 我和lpy两个默默地吃零食、打王者…… 很快, 阅读全文
摘要:
传送门 解题思路 看第一个要求,很显然是求最长下降子序列,和LIS几乎一样,很简单,再看第二个问号,求最长下降子序列的方案数??这怎么求? 注意:当二种方案“看起来一样”时(就是说它们构成的价格队列一样的时候),这2种方案被认为是相同的。 这里就用到了一种基于dp的dp。 我们用a[i]存原来的数, 阅读全文
摘要:
传送门 解题思路 首先看题目问题,求经过的所有城市中最多的一次收取的费用的最小值是多少。一看“最大值最小”就想到了二分答案。 在读一遍题目,就是二分收取的费用,然后对于每一个二分的费用,跑一边最短路,要求不经过>收取费用的城市,最后看一看能否在规定血量内走到终点。 想起来还是比较容易的,写起来要注意 阅读全文
摘要:
传送门 一道裸的错排问题 错排问题 百度百科上这样说 就是对于一个排列,每一个数都不在正确的位置上的方案数。n 个元素的错排数记为 D(n)。 公式 D(n)=(n−1)∗(D(n−2)+D(n−1)) 推出公式(感性) 对于第n个数,放在k位置上。 而第k个数有两种情况: 当第k个数放到n位置时, 阅读全文
摘要:
传送门 解题思路 很长的题,实际上在一个有向图(点有点权)中求一个从起点1到终点n的路径,使得这条路径上点权最大的点与点权最小的点的差值最大(要求必须从点权较小的点能够走到点权较大的点)。 ——最短路?? ——不像呀。 (可是洛谷标签上写着呀) 就是一个写起来像最短路的一个图中的dp。 我们用dis 阅读全文
摘要:
题目传送门(洛谷) 题目传送门(UVA) 解题思路 很显然是一个区间dp,当然记忆化搜索完全可以AC,这里说一下区间dp。 区间dp的重要特征就是需要枚举中间节点k 看一看这道题,用f[i][j]表示从i...j组成合法序列需要添加括号的个数, 很显然,当s[i]==s[j]时,f[i][j]=f[ 阅读全文
摘要:
传送门 解题思路 用并查集f存朋友关系,一个数组e存的是敌人关系,是一个辅助数组,所以叫做种类并查集。 当p和q是朋友时,直接合并,但是当是敌人时,需要一些操作。 当p还没有敌人时(即p的敌人是自己),直接e[p]=q; 否则就把p的敌人和q变成朋友,这也就是变相把p和q变成敌人。 当然,对q也是如 阅读全文
摘要:
题目链接 https://www.luogu.org/problem/P5367 什么是康托展开 百度百科上是这样说的: “康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。” “康托展开是一个全排列到一个 阅读全文
摘要:
Day0 早上八点集合,不算太早,可以睡个懒觉啊,做了两个多小时的车,终于到了。 不得不说,日照可真热啊!(希望里面空调好) 办好手续后,就分了卡,呜呜,没能和大佬们分在一起。 吃完午饭,就回宿舍,我们一起去了310房间显示玩手机,看他们打牌,就和他们一起玩了一下午西游杀,喊得我嗓子哑了! 话说,我 阅读全文
摘要:
题目链接 https://www.luogu.org/problem/P5019 解题思路 一道典型的贪心题。 假设从左往右填坑,如果第i个深与第i+1个,那么第i+1个就不需要额外填; 如果第i+1个大于第i个,就需要填i+1-i的深度,所以就相当于把>0的差分数组加起来就AC了。 AC代码 // 阅读全文
摘要:
题目链接 https://www.luogu.org/problemnew/show/P1168 解题思路 这个题就是求中位数,但是暴力会tle,所以我们用一种O(nlogn)的算法来实现。 这里用到了两个堆,一个是大根堆,一个是小根堆,大根堆中的数总是小于小根堆中的数,且两个堆之间的数量最多差一。 阅读全文
摘要:
一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了。 题目链接 https://www.luogu.org/problemnew/show/P1049 解题思路 一道裸的01背包,注意价值和重量是一个东西,且最后输出剩余的体积。 随随便便二维就AC了,懒得写一维。 AC代码 / 阅读全文
摘要:
众所周知,背包问题很重要。 相信大部分人写的背包都是先枚举的物品,其实部分背包也可以先枚举容积。 例如01背包,在二维未优化时,可以先枚举j,在枚举i,不影响到结果。 还有完全背包(物品有无数个),优化后也可以先枚举j。 其实先枚举i、j本质上都是一样的,需要注意的其实就是在计算这一个状态时,以前的 阅读全文