摘要: A:找到两个相邻字符使后者小于前者即可。 B:设(n-11)/2=x,8的出现次数=y。显然x>=y时,后手一直拿8就可以阻止先手取胜。考虑x<y的情况,后手的最优策略仍然是一直拿最靠前的8,而先手应该拿最靠前的非8的数。于是找到第x+1个8的位置check一下。 C:a相邻作差取gcd,看b中是否阅读全文
posted @ 2019-04-23 07:50 Gloid 阅读(33) 评论(3) 编辑
摘要: A:签到。 B:显然可能的划分位置只有一个,找到后检验即可。 C:二进制分组。 D:不考虑范围限制的话显然能到达所有gcd(a,b)的倍数。注意到对于不小于a+b的gcd(a,b)的倍数,该点一定可以为到达该点时所经过的最大值。因为可以考虑每次若能往左走就往左走,否则往右走,显然这样往右走的时候所达阅读全文
posted @ 2019-04-22 00:01 Gloid 阅读(29) 评论(0) 编辑
摘要: C:即要使前一部分为白色后一部分为黑色,枚举分割点前缀和计算答案取min即可。 D:即要求最大的一组和小于总和一半的方案数。容易想到设f[i][j]为前i个数最大一组(不是当前最大的一组,而是我们期望所有数分配完之后其成为最大的一组)和为j时的方案数。为保证第二维中的是最大的一组,做一个补集转化。d阅读全文
posted @ 2019-04-20 22:49 Gloid 阅读(37) 评论(0) 编辑
摘要: 显然可以用可持久化并查集实现。考虑更简单的做法。如果没有撤销操作,用带撤销并查集暴力模拟即可,复杂度显然可以均摊。加上撤销操作,删除操作的复杂度不再能均摊,但注意到我们在删除时就可以知道他会不会被撤销,所以遇到一个要被撤销的删除操作时,直接求出去掉k条边后的MST即可。阅读全文
posted @ 2019-04-19 21:14 Gloid 阅读(9) 评论(0) 编辑
摘要: A:随便怎么暴力。 B:显然选择单字符子串能形成n种不同的串。容易发现其他方案一定是由进位产生的,考虑固定某个9为子串右端点会产生多少种方案。数一下由其往前有多少个连续的9,这一段的每个后缀都会产生一种方案。然后再往前看一个数,若不为0答案再+1;若为0,由于所选串不能有前置0,需要找一下之前有没有阅读全文
posted @ 2019-04-18 21:18 Gloid 阅读(24) 评论(0) 编辑
摘要: https://www.cnblogs.com/Gloid/p/10629779.html 这一场的D。阅读全文
posted @ 2019-04-17 21:47 Gloid 阅读(6) 评论(0) 编辑
摘要: https://www.cnblogs.com/Gloid/p/9412357.html差分一下是一样的问题。感觉几年没写过树剖了。阅读全文
posted @ 2019-04-17 21:39 Gloid 阅读(10) 评论(0) 编辑
摘要: 本以为是个二进制分组傻逼题https://www.cnblogs.com/Gloid/p/9545753.html,实际上有神仙的一个log做法https://www.cnblogs.com/asuldb/p/10721251.html。下面代码是二进制分组的。阅读全文
posted @ 2019-04-17 18:28 Gloid 阅读(23) 评论(0) 编辑
摘要: C:显然每p2个数会有一个0循环,其中22 32 52 72的循环会在200个数中出现,找到p2循环的位置就可以知道首位在模p2意义下是多少,并且循环位置几乎是唯一的(对72不满足但可能的位置也很少)。于是这样枚举范围就直接从1e9变成了1e9/44100。然后考虑暴力求μ验证,求μ可以以O(n1/阅读全文
posted @ 2019-04-16 21:49 Gloid 阅读(27) 评论(0) 编辑
摘要: A:签到。没仔细看数据范围,看到一个O(nt)的差点叉上去了。 B:从大到小考虑每个数,放在所有能放但还没有放的位置上即可。 C:在右括号够的情况下尽量放左括号。 D:这种东西容易想到二分答案,转化成01问题后,设f[i]为要让i号点为1其子树内至少有几个叶子为1,转移显然。dp完之后可以发现压根不阅读全文
posted @ 2019-04-14 12:37 Gloid 阅读(46) 评论(0) 编辑