10 2018 档案

摘要:~~~题面~~~ 题解: 可以发现,每走完一圈付的钱和买的数量是有周期性的,即如果没有因为缺钱而买不起某家店的东西,那么这一圈的所以决策将会和上一圈相同,这个应该是很好理解的,想想就好了。 因为钱数固定时,决策固定,所以每次都O(n)扫一遍看当前情况下走一圈会花多少钱。 然后直接一直取这么多钱,直到 阅读全文
posted @ 2018-10-31 00:16 ww3113306 阅读(212) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 首先我们要观察到一个性质,因为在固定的起始距离下,经过固定的操作,最后所在的位置是固定的,我们设经过操作1 ~ i之后所在的地方距离终点为d[i]. 那么如果女巫可以修改第i个操作,那么就相当于已经经过了1 ~ i - 1的操作,所以这个时候Alice已经在d[i - 1] 阅读全文
posted @ 2018-10-29 21:42 ww3113306 阅读(339) 评论(3) 推荐(0)
摘要:~~~题面~~~ 题解: 一开始翻网上题解看了好久都没看懂,感觉很多人都讲得不太详细,所以导致一些细节的地方看不懂,所以这里就写详细一点吧,如果有不对的or不懂的可以发评论在下面。 首先有一个比较明显的50分贪心: 先把d排好序,然后按从小到大的顺序贪心的给每个点选值,同等条件下优先编号大的,于是越 阅读全文
posted @ 2018-10-28 22:04 ww3113306 阅读(673) 评论(2) 推荐(1)
摘要:~~~题面~~~ 题解: 首先有一个比较明显的策略,肯定先要把能带给自己受益的先选完,然后再以最佳状态去打那些会给自己带来损失的怪。 对于前一部分(可以带来受益的怪),显然我们需要先从代价小的打起,因为这样可以把生命值越积越多,打代价大的怪也更容易成功。 那么对于后一部分怎么办呢?我们需要从受益大的 阅读全文
posted @ 2018-10-28 20:44 ww3113306 阅读(137) 评论(0) 推荐(0)
摘要:题意:求节点数为n的,高度大于等于h的二叉树的个数。 题解: 一开始没看到二叉树的限制,,,想了好久。因为数据范围很小,所以可以考虑一些很暴力的做法。 有2种DP方式都可以过。 1,f[i][j]表示节点数为i,高度恰好为j的方案数,那么$ans = \sum_{i = h}^{i <= n}{f[ 阅读全文
posted @ 2018-10-27 22:52 ww3113306 阅读(268) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 观察到拼接后的数据范围过大,无法O(n)解决,但是大区间是由很多小区间组成,而小区间是固定的,不会变化,所以可以考虑预处理出每个小区间的信息,然后根据给定序列按顺序一步一步合并区间信息。 跟线段树维护区间最大子段和类似,要合并2个区间我们只需要知道如下信息: 前缀最大子段和 阅读全文
posted @ 2018-10-25 01:03 ww3113306 阅读(428) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 观察到字母只有26个,因此考虑对这26个字母分别维护,每个线段树维护一个字母,如果一个线段树的某个叶节点有值,表示当前叶节点所在位置的字母是现在这个线段树代表的字母。 那么对于每一个操作,我们已经知道最后排好序之后肯定是按aaaabbbbccccddd……这样的序列排下去的 阅读全文
posted @ 2018-10-25 00:54 ww3113306 阅读(476) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 感觉还是比较妙的,复杂度看上去很高(其实也很高),但是因为n只有100,所以还是可以过的。 考虑一个很暴力的状态f[i][j][x][y]表示考虑取区间i ~ j的方格,左右端点颜色分别是x, y.的最大值。 那么有如下转移 1,直接继承子区间的答案 f[i][j][x][ 阅读全文
posted @ 2018-10-23 22:35 ww3113306 阅读(391) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 做这道题的时候zz了,,,, 写了个很复杂的式子,然而后面重新想就发现很简单了。 考虑用总的情况减去重复的。 假设唯一重复的两个数的位置分别是l和r,那么唯一会导致重复的方案就是中间不取,只取l和r中的一个和两边的数。 那么$ans =\binom{k}{n} - \bin 阅读全文
posted @ 2018-10-22 00:22 ww3113306 阅读(245) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 貌似一般c题都是递推。。。 观察到最后一个插入的数一定在第一个,倒数第二个插入的数一定在倒数第一个,倒数第三个插入的数一定在第2个,倒数第四个插入的数一定在倒数第2个…… O(n) 的把数填进数组即可。 要证明的话想一想构造方式就知道了。 1 #include<bits/s 阅读全文
posted @ 2018-10-21 23:57 ww3113306 阅读(448) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 偶然翻到这道题,,,就写了。 观察到一个数被插在哪里只受前一个数的影响,如果明确了前一个数是哪个,那么我们就可以确定大小关系,就可以知道当前这个数插在哪里,而上一个插入的数就是上一个数,所以根据这个来设DP状态。 f[i][j]表示满足理想数列的i ~ j,且i是最后一个插 阅读全文
posted @ 2018-10-21 23:53 ww3113306 阅读(134) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 首先题目要求删除一些颜色,换个说法就是要求保留一些颜色,那么观察到,如果我们设ll[i]和rr[i]分别表示颜色i出现的最左边的那个点和最右边的那个点,那么题目就是在要求我们选出的区间要满足区间[l, r]内所有颜色的max(rr[i]) <= r,并且min(ll[i]) 阅读全文
posted @ 2018-10-20 14:57 ww3113306 阅读(277) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 题目大意:有2堆石子数分别为x, y的石子,你每次可以从中间的某一堆中取出2i个石子,扔掉i个,并把剩下的i个放到另一堆,无法操作的人就输了。 现在给定x,y,判断先手必赢还是先手必输。 表示这题推出了一个性质,,,然后,,,就没有然后了。 看题解还是比较妙的。 结论:如果 阅读全文
posted @ 2018-10-19 22:16 ww3113306 阅读(399) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 观察到以决策点为分界线,以点数大的赢为比较方式的游戏都是它的前缀,反之以点数小的赢为比较方式的都是它的后缀,也就是答案是由两段答案拼凑起来的。 如果不考虑判断胜负的条件的变化,则有一个比较容易发现的贪心: 设f[i]为从1开始到i位, 比较方式为点数大的获胜,最多能赢几局。 阅读全文
posted @ 2018-10-17 22:36 ww3113306 阅读(225) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 神奇的贪心题,,,感觉每次做贪心题都无从下手。。。 我们首先按照a对所有卡片从小到大排序,然后从1开始,从连续的两张牌中取b最大的,最后一张单出来的也取了。 可以证明,这样的方案一定是合法的。 为什么呢? 假设我们将排序后的牌按照(1, 2) (3, 4) ……这样的方式两 阅读全文
posted @ 2018-10-17 20:48 ww3113306 阅读(261) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 这题想法简单,,,写起来真的是失智,找了几个小时的错误结果是inf没开到LL范围。。。。 首先我们需要找到任意两点之间能够携带黄金的上限值,因为是在经过的道路权值中取min,我们要使得这个min值最大,就应该要在最大生成树上寻找正确的边。求出最大生成树后我们需要在上面倍增寻 阅读全文
posted @ 2018-10-17 19:17 ww3113306 阅读(331) 评论(1) 推荐(0)
摘要:~~~题面~~~ 题解: 此题可以用可持久化并查集暴力水过,但正解是kruskal重构树。 不会kruskal重构树请戳:kruskal重构树 观察到车可以通过哪些边跟边的长度并没有关系,所以考虑用边的海拔排序建出重构树,这样我们就得到了一个只跟海拔相关的关系。 于是对于任意水位线,我们都可以得知, 阅读全文
posted @ 2018-10-17 11:37 ww3113306 阅读(335) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 挺好的一道题。 首先我们将所有边反向,跑出n到每个点的最短路,然后f[i][j]表示从i号节点出发,路径长比最短路大j的方案数。 观察到,如果图中出现了0环,那么我们可以通过在环上走无数次来获得无数条不同路径,因此这就无解了。 如果没有0环,当且仅当这张图的最短路图是一个D 阅读全文
posted @ 2018-10-17 11:15 ww3113306 阅读(267) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 考场上看的这道题,,,当时70分算法打挂了,今天才知道这个也是原题。。。。 首先,对于不跟1相邻的边,肯定不会经过两次,因为经过两次就回来了,除了增加路径长度之外没有任何意义。 但是跟1相邻的边是可能会经过2次的,因为虽然增加了路径长度,但这次回来就直接到终点了,所以完全可 阅读全文
posted @ 2018-10-17 11:00 ww3113306 阅读(318) 评论(0) 推荐(0)
摘要:[TOC] 在提高组的考试中要求使用noi linux,因此了解一下如何在linux环境下编程是很有必要的。 linux环境下的基础操作 命令行操作 1,使用Ctrl + Alt + T召唤出终端。 2,基础指令: 1,cd 使用方法:cd + 文件目录 效果:使终端所在的目录切换到指定文件目录,但 阅读全文
posted @ 2018-10-15 23:42 ww3113306 阅读(5654) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 表示今天做题一点都不顺。。。。 这题也是看了题解思路然后自己想转移的。 看的题解其实不是这道题,但是是这道题的加强版,因为那道题允许交换k对数。 因为我们选出的是连续的一段,所以假设我们选了某一段,那么原序列将会被分为3段,我们设这3段分别是第0段,第1段和第2段,我们假设 阅读全文
posted @ 2018-10-14 22:28 ww3113306 阅读(299) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 因为数据范围不大,而且题目要求的是正方形,所以这道题有2种解法。 1,st表。 这种解法暴力好写好理解,但是较慢。我们设st[i][j][k]表示以(i, j)为左端点,向下/向右分别扩展$2^k$格的最大值,最小值同理,处理完后$n^2$枚举左端点取最优值即可。 (此为早 阅读全文
posted @ 2018-10-13 01:22 ww3113306 阅读(263) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 观察数据范围,这应该是一个复杂度O(n)的题。以最大值为例,考虑单调队列,维护一个单调递减的队列。从前向后扫,每次答案取队首,如果后面进入的比前面大,那么就弹出前面的数,因为是从前向后扫,所以后面进入的如果比前面的大,那么一定更优,因为要淘汰肯定先淘汰前面的。如果队首已经不 阅读全文
posted @ 2018-10-12 20:05 ww3113306 阅读(199) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 首先我们需要发现一个性质,在括号序列不变的情况下,括号匹配是不会变的,因此不论子串怎么取,括号匹配的关系是不会变化的。这是一个很容易发现的性质,然而我太弱,没发现。 于是可以据此进行DP,我们记录下每个右括号与哪个左括号进行匹配,记为pos[i], 设f[i]表示DP到i位 阅读全文
posted @ 2018-10-12 16:09 ww3113306 阅读(195) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 首先观察到题目要求的是合法回文串的个数,而回文串要求从前往后和从后往前是一样的,因此我们假设有两只猪,分别从左上和右下开始走,走相同的步数最后相遇,那么它们走的路能拼在一起构成一个回文串,当且仅当它们走字符串是完全相同的。 那么我们可以根据这个性质进行DP,设f[i][j] 阅读全文
posted @ 2018-10-12 15:30 ww3113306 阅读(216) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 感到此题非常的神奇。。。看了大佬的题解才懂的。 首先建模: 先把所有队伍的出去回来时间都放在一个数组里,然后排序,从左到右扫一边,给每个队伍都建一个带权点,进行如下操作: (s表示出发,t表示回家, len表示两个点之间的时间差) 1,对于s > t的情况,如果两者属于一个 阅读全文
posted @ 2018-10-12 14:54 ww3113306 阅读(192) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 可以发现这是一道单调栈的题目,首先来考虑数字没有重复时如何统计贡献。 因为这是一个环,而如果我们从最高的点把环断开,并把最高点放在链的最后面(顺时针移动),那么因为在最高点两侧的点无法互相看见,相当于就把环转化为链的问题了。 因此维护递减的单调栈,如果进来的点比栈顶高就弹出 阅读全文
posted @ 2018-10-11 14:25 ww3113306 阅读(239) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 之前写的splay,,,然而一直没调出来,我感觉是某个细节想错了,,然而已经重构4次代码不想再写splay了。于是今天尝试了线段树的解法。 首先因为每次出列之后的变化都是将当前行左移,然后将最后一列上移,所以最后一列不适合和其他的行放在一起处理。 因此对于每行的前m - 1 阅读全文
posted @ 2018-10-09 15:33 ww3113306 阅读(362) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 首先观察数据范围,n <= 18,很明显是状压DP。所以设f[i]表示状态为i时的最小代价。然后考虑转移。 注意到出发点(0, 0)已经被固定,因此只需要2点就可以确定一条抛物线,所以每次转移时枚举是哪两只猪确定了这条抛物线,然后由于一条抛物线可能会恰好打中别的猪,所以再枚 阅读全文
posted @ 2018-10-09 15:19 ww3113306 阅读(215) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: ,,,考场上看到这题,没想到竟然是省选原题QAQ,考场上把它当数学题想了好久,因为不知道怎么处理有些数没有逆元的问题。。。。知道这是线段树后恍然大悟。 首先可以一开始就建出一个长度为n的操作序列,初始值都是1,表示一开始默认是1乘上n个1,因为乘1也就相当于没乘。 对于操作 阅读全文
posted @ 2018-10-08 09:24 ww3113306 阅读(141) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 首先,有一个不太直观的状态,f[i][j][k][l]表示DP到i位,三种颜色最后出现的位置分别是j, k, l的方案数。因为知道了三种颜色最后出现的位置,因此也可以得知以当前点为右端点的区间内有几种颜色了,因为左端点不断向左扩张的时候,颜色数不会减少。 然后考虑优化这个状 阅读全文
posted @ 2018-10-07 21:50 ww3113306 阅读(222) 评论(0) 推荐(0)
摘要:kruskal重构树是一个比较冷门的数据结构。 其实可以看做一种最小生成树的表现形式。 在普通的kruskal中,如果一条边连接了在2个不同集合中的点的话,我们将合并这2个点所在集合。 而在kruskal重构树中,如果一条边连接了在2个不同集合中的点,我们将新建一个节点出来,并用这个新节点作为一个中 阅读全文
posted @ 2018-10-06 01:39 ww3113306 阅读(1923) 评论(0) 推荐(0)
摘要:$$(x + y) ^ k = \sum_{i = 0}^{k}C_{k}^{i} \cdot x^i \cdot y^{k - i}$$ 一个很容易理解的推导方式是:$(x + y) ^ k = (x + y)(x + y)(x + y)...$,化简之后的每一个数都是分别从每个括号中取一个数出来 阅读全文
posted @ 2018-10-03 21:16 ww3113306 阅读(550) 评论(0) 推荐(0)

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。