09 2018 档案

摘要:传送门 分析 我们可以用dp[i][j][k][0/1]表示A串考虑到第i个,B串考虑到第j个,一共取了k个子串,现在的A[i]是否被选的方案数。我们需要将第一维滚动一下。具体转移见代码。 代码 阅读全文
posted @ 2018-09-29 09:13 水题收割者 阅读(87) 评论(0) 推荐(0)
摘要:传送门 分析 快排的原理是以任意一个数为标准,然后把所有小于它的数换到它的左边,所有大于它的数换到它的右边。我们就使用快排的思路,分治整个区间。对于每个区间以排好序的这个数列的中间位置的值为标准,然后继续分治这个区间,将这个区间左子区间中大于标准的移到左子区间的最右边,将右子区间中小于标准的移到右子 阅读全文
posted @ 2018-09-29 08:50 水题收割者 阅读(155) 评论(0) 推荐(0)
摘要:传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上。我们用这种方式优化了建边,然后跑个最短路就行了。 代码 阅读全文
posted @ 2018-09-25 15:47 水题收割者 阅读(237) 评论(0) 推荐(0)
摘要:传送门 分析 我们先二分一下最终的平均值mid,然后让序列中的每一个数都减去这个mid,之后用新序列的前缀和建一棵线段树,枚举起点i,然后求出此时在i+L-1~i+R-1范围内的前缀和的最大值,用这个数减去pre[i],这就是以i为起点的长度为L~R范围内的序列最大值。如果这个值大于0则表示这个mi 阅读全文
posted @ 2018-09-25 15:33 水题收割者 阅读(246) 评论(0) 推荐(0)
摘要:传送门 分析我们可以根据性质将这个序列构造成一个环:0,a[1~n],0,a[n~1] 这中间的0是为了起间隔作用的。 我们又知道b[i]=a[i-1]^a[i+1] c[i]=b[i-1]^b[i+1]=a[i-2]^a[i]^a[i]^a[i+2]=a[i-2]^a[i+2] 所以如果这个环进化 阅读全文
posted @ 2018-09-25 15:13 水题收割者 阅读(132) 评论(0) 推荐(0)
摘要:传送门 分析 考场上傻了,写了个树剖还莫名weila...... 实际就是按顺序考虑每个点,然后从他往上找,一边走一边将走过的边染色,如果走到以前染过色的边就停下。对于每一个a[i]的答案就是之前走过的所有边的数量*2-它自己的深度。 代码 阅读全文
posted @ 2018-09-25 14:03 水题收割者 阅读(112) 评论(0) 推荐(0)
摘要:传送门 分析 我们不难将条件转换为前缀和的形式,即 pre[i]>=pre[i-1]*2,pre[i]>0,pre[k]=n。 所以我们用dp[i][j]表示考虑到第i个数且pre[i]=j的情况下的方案数。我们发现一一转移的复杂度并不行,于是我们考虑只让dp[i-1][j]转移到dp[i][j*2 阅读全文
posted @ 2018-09-25 13:56 水题收割者 阅读(120) 评论(0) 推荐(0)
摘要:传送门 分析 我们知道如果设A,B分别为将两家店从大到小排序之后各自的前缀和,则 Ans=Max{Min{A[i],B[j]}-W*(i+j)}。 为了得到这个Ans我们可以枚举两个数的Min,然后剩下那一个则使用二分求出在另一数列中大于Min的中最小的,这样的原因是为了使得W*(i+j)更小,从而 阅读全文
posted @ 2018-09-24 21:55 水题收割者 阅读(154) 评论(0) 推荐(0)
摘要:传送门 题目大意 现在有n个k面的骰子,问在i=2~2*k的情况下,任意两个骰子向上那一面的和不等于i的方案数是多少。 分析 这道题具体做法见这个博客。 至于k2的值为啥是那个自己画画图就明白了。 代码 阅读全文
posted @ 2018-09-24 18:35 水题收割者 阅读(163) 评论(0) 推荐(0)
摘要:传送门 题目大意 让你构造一个有向图,使得从1到n有L条不同路径且长度分别是0~L-1。 分析 我们不难想到每一对相邻点之间连一条权值为0的边,之后二进制分解,将每一对点之间连一个权值为2^i的边,但是我们会发现这样在一些情况下还会剩下一些值不能覆盖。如果将剩下的值一一连边肯定会炸。于是我们还是利用 阅读全文
posted @ 2018-09-24 09:33 水题收割者 阅读(288) 评论(0) 推荐(0)
摘要:传送门 分析 此题关键在于想出dp[i][j][k]代表考虑到第i行,还能放1的的共有j列,还能放2的共有k行。之后就枚举每一行是没有还是1个1还是2个1还是1个2,然后转移即可。 代码 阅读全文
posted @ 2018-09-23 18:29 水题收割者 阅读(167) 评论(0) 推荐(0)
摘要:传送门 分析 一眼看去我们自然会想到dp[i][j][k]表示区间[i,j]中选k个子段的最大值。然后我们考虑降去一维。我们设dp[i][j]表示考虑了前i个数,在选了a[i]的情况下共有j个子段的最大值,于是可以列出转移方程式dp[i][j]=Max{dp[i-1][j],Max{dp[k][j- 阅读全文
posted @ 2018-09-23 15:21 水题收割者 阅读(272) 评论(0) 推荐(0)
摘要:传送门 分析 我们假设如果一个点是0则它的值为-1,如果一个点是1则值为1,则一个区间的答案便是max(pre[i]+sur[i]),这里的pre[i]表示此区间i点和它之前的的前缀的最大值,sur[i]表示i点之后的后缀最大值。所以为了维护每个区间的答案我们可以用线段树进行维护。而对于一个由两个区 阅读全文
posted @ 2018-09-21 21:36 水题收割者 阅读(139) 评论(0) 推荐(0)
摘要:传送门 分析 我们二分球的直径,然后就像奶酪那道题一样,将所有距离相遇直径的点用并查集连在一起,然后枚举所有与上边的顶距离小于直径的点和所有与下边的距离小于直径的点,如果它们被并查集连在一起则代表这个球无法通过。于是可以得到答案。 代码 阅读全文
posted @ 2018-09-21 21:14 水题收割者 阅读(196) 评论(0) 推荐(0)
摘要:传送门 分析 一道贪心题,我们用两个优先队列分别维护卖出的物品的价格和买入但没有卖出的物品的价格,然后逐一考虑每一个物品。对于每一个物品如果他比卖出的物品中的最低个价格,则改将现在考虑的物品卖出,将之前价格最低的物品拿出重新考虑,否则继续考虑现在的物品。然后我们进行第二步考虑,考虑现在买入但没卖出的 阅读全文
posted @ 2018-09-21 21:02 水题收割者 阅读(130) 评论(0) 推荐(0)
摘要:传送门 分析 考场上暴力水过好评... 然后我的st表查询似乎是log的,然后log三方跑的比log方快,qwq。 我们发现如果一个区间的最小值就是这个区间的gcd,则这个区间合法。所以我们二分区间长度然后枚举起点检验是否合法即可。 代码 阅读全文
posted @ 2018-09-21 20:44 水题收割者 阅读(123) 评论(0) 推荐(0)
摘要:传送门 分析 我们发现2R+C实际就相当于R行C列的子集的个数。因此我们可以将所有集合的子集个数转换为每个集合属于的集合的个数。所以我们可以求出: 这个式子的意义为对于选i行j列的情况的所有方案乘上i行j列的情况出现的概率(这个就是算了它被几个集合包含,因为剩下k-x个数也可能构成一些整行整列)。 阅读全文
posted @ 2018-09-21 20:34 水题收割者 阅读(272) 评论(0) 推荐(0)
摘要:传送门 分析 我们通过仔细研究不难发现对于一次交换(i,i+1)的操作之后,在i之前的点就不可能跑到i之后,i+1之后的的点也不可能跑到i+1之前,所以这个序列在一次交换之后就相当于被分成了两个部分。于是我们设dp[n][low]表示对于一个长度为n的最小值为low的序列的构成方案数。于是我们可以求 阅读全文
posted @ 2018-09-21 19:23 水题收割者 阅读(238) 评论(0) 推荐(0)
摘要:传送门 分析 考试的时候sb了......我们发现可以按照先序遍历将一棵树变成一个序列,而不需要删的数的数量便是最长上升子序列的长度,但是还有一个问题就是如果在5和7之间有3个空的位置就无法填入合法的数,但是按照此方法会将5和7划归为合法的。所以我们考虑将第i个数的权值变为原来的权值减去i,然后求一 阅读全文
posted @ 2018-09-16 22:41 水题收割者 阅读(235) 评论(0) 推荐(0)
摘要:传送门 分析 我们对于每一个可以匹配的字符都将其从栈中弹出,然后他的哈希值就是现在栈中的字符哈希一下。然后我们便可以求出对于哪些位置它们的哈希值是一样的,即它们的状态是一致的。而这些点可以求出它们的贡献(这个式子见代码)。而这个式子的意义是对于左括号自然表示哪几个括号组成一个合法序列,而对于右括号则 阅读全文
posted @ 2018-09-15 09:54 水题收割者 阅读(123) 评论(0) 推荐(0)
摘要:传送门 分析 我们设A[i]表示点i有几个矿,B[i]表示这之中有几个矿是第一次出现,所以点i的贡献即为 (2^B[i]-1)*(2^(A[i]-B[i])) 注意减一的原因是第一次出现的矿应至少有一个。然后我们用set维护一下就可以了。 代码 阅读全文
posted @ 2018-09-15 09:18 水题收割者 阅读(119) 评论(0) 推荐(0)
摘要:传送门 分析 我们可以用贪心的思想。对于所有并没有指明关系的数一定是将小的放在前面。于是我们按顺序在每一个已经指明大小顺序的数前面插入所有比它小且没有指明关系的数。详见代码。 代码 阅读全文
posted @ 2018-09-15 09:10 水题收割者 阅读(122) 评论(0) 推荐(0)
摘要:传送门 分析 考场上写了前20分和|a[i]|<=1的情况,但是因为没开long long爆零了。实际考场上差不多想到正解了,至少当时不会凸壳... 我们发现对于ax2+bx的大小关系我们可以将其转换成ax+b,所以我们可以将这些直线求一个上凸壳和一个下凸壳,然后离线处理所有x,对于小于0的x找到下 阅读全文
posted @ 2018-09-05 22:42 水题收割者 阅读(187) 评论(0) 推荐(0)
摘要:传送门 分析 考场上想到了先枚举p的长度,在枚举这个长度的所有子串,期望得分40~50pts,但是最终只得了20pts,这是因为我写的代码在验证中总是不断删除s'中的第一个p,而这种方式不能解决形如ababaa的字符串。于是我们考虑满分做法。设dp[i][j]表示在当前的p的情况下s的[i,j]位置 阅读全文
posted @ 2018-09-01 13:31 水题收割者 阅读(140) 评论(0) 推荐(0)