随笔分类 - 思维题
摘要:HDU - 5380 感觉又是个脑洞题。 如果没有卖的情况感觉写过很多次了。 这题的关键在于你买糖的消耗只在加入队列的时候计算, 用不完的糖在最后退掉, 卖糖的盈利也包含在最后退糖中了, 我们只要把所有比当前sell值小的全部边成当前的sell值就行了, 相当于卖掉了。 感觉相当巧妙。
阅读全文
摘要:HDU - 5385 先把1加入点集进行扩展, 然后两头分别从2和n开始往里加元素, 使得随着时间dis[ i ] 递增即可。
阅读全文
摘要:Meeting He 感觉对这种题好无力啊, 以后这种感觉没有办法一次性dp完成的可以考虑用类似于bellman的方法来求最优值。
阅读全文
摘要:HDU - 6122 我们能分析出来不可能列和行有连续一样的数字, 所以我们能得出图形是由ABABAB 和 BABABA 这两种形式的东西叠在一起构成的, 要么是一列一列叠出来, 要么一行一行叠出来, 最后减去重复的, 也就是所有相邻数字都不一样的。
阅读全文
摘要:Strongly Connected Tournament 好菜啊, 根本不会写啊。。。 这种一下分成很多块的dp题, 可以考虑最后一部分, 前面的继续往下分的时候再考虑。 题解讲的很清楚啦。 https://codeforces.com/blog/entry/56992 感觉就是每一部分都不难,
阅读全文
摘要:Painting Square 转换一下变成 a 层的完全四叉树, 占领 k 个点有多少种方案, 点能被占当且仅当它的父亲被占。 a <= 30, 所以我们把每层都dp出来, dp[ i ][ j ] 表示 i 层完全四叉树占领 k 个点的方案数。
阅读全文
摘要:Perishable Roads 智商题, 不会啊。。 贴个官方题解 https://codeforces.com/blog/entry/51883
阅读全文
摘要:Eels 感觉想不出来这种东西。。 题解讲的很清楚啦。 我好lj啊。 https://codeforces.com/blog/entry/64331
阅读全文
摘要:Cow Tennis Tournament 感觉这题的难点在于想到求违反条件的三元组。。 为什么在自己想的时候没有想到求反面呢!!!! 违反的三元组肯定存在一个人能打败其他两个人, 扫描的过程中用线段树维护一下就好了。 反思: 计数问题: 正难则反 正难则反 正难则反 !!!!
阅读全文
摘要:NN country 是1175E的加强树上版本, 大致思路是一样的。。 难点在于判断两个点是否被同一条线覆盖。。 居然没想出来。 我们先把所有点对都离线,对于点对(u, v) 我们dfs到 u 的时候 记录一下v子树的和为 t1, 然后把所有在 u 的线段的另一端 + 1, 向子树递归, 回溯的时
阅读全文
摘要:You Are Given a Tree 感觉是个套路。。 怎么好像我没怎么见过啊。 k * t <= n 类似于这种, 对所有 k 求满足条件 t 的最大值, 那么答案不同的数量只有根号个。 如果随 k 的变化单调的话就可以二分优化啦。
阅读全文
摘要:Ultimate Weirdness of an Array 写不出来, 日常好菜啊。。 考虑枚举GCD, 算出一共有多少个对 f(l, r) <= GCD, 我们用fuc[ i ] 表示的是在 l = i 这个位置开始, 最小的合法的 R, 可以发现这个函数随 i 单调不下降, 枚举GCD 的时候
阅读全文
摘要:Ehab and the Expected GCD Problem 首先我们能推出最优的开始一定是2 ^ n 或者 3 * 2 ^ n 的形式, 对于每一种形式我们将所有数字分类, 从后往前用组合数算出答案。
阅读全文
摘要:Erasing Substrings 感觉这种写法想不到啊。。。 dp[ i ][ j ] 表示选了 i 个, 删了的情况为 j 是否为字典序最小的串。 因为如果dp[ i ][ j ] 的字典序比 dp[ i ][ k ]的字典序小, dp[ i ][ k ] 就没有用了。 还需要sos dp 去
阅读全文
摘要:Crisp String 显然我们只要知道每个状态合不合法我们就能解决这个问题。 两两枚举相邻的字符, 去找不合法状态。
阅读全文
摘要:Beautiful Matrix 首先枚举哪一位分出大小, 然后计算比它小的方案数有多少种。 方案数 = 当前行的方案数 * 下面所有行的方案数。 如果下面还有x行, 那么下面所有行的方案数为 g ^ x, g 为全错排的方案数, 当前行的要预处理出f[ i ][ j ] f[ i ][ j ] 表
阅读全文
摘要:Almost Increasing Array 来讲讲自己想到的和没想到的。。 首先要把严格递增变成非严格递增每个元素只要减去所处位置的下标。 然后我们考虑枚举被删除的点, 被删点前面的每个元素减去 i , 被删的每个点后面的元素减去 (i - 1) 然后求LIS, 在所有的LIS里面的最大值, 这
阅读全文
摘要:Game with Tokens 感觉是很好的一道题了。 感觉没有想到两点, 第一个是只想到白点肯定往, 一个方向跑, 所以四个方向肯定有人要拦着它, 所以两个对角线分成四个区域, 白点的四个区域内都得有点(不包括对角线), 没有想到横纵坐标的 奇偶性也要相同才能拦住, 虽然想到了转切比雪夫距离,
阅读全文
摘要:Fetch the Treasure 感觉这题很nb啊, 虽然套了一个一点都不有趣的壳子。 我们注意到 k 的值在 1e4以内, 我们用d[ i ] 表示在模 k == i 能达到的最小的值是谁。 用最短路取更新。。
阅读全文
摘要:Greedy Subsequences 我们先找到每个点的右边第一个比它大的, 然后从大的往它建边, 然后可以发现这是一棵树。 我们令d[ i ] 为 i 号点往上走最多能走几步, 我们能用线段树维护d 的值。 我们加入点 i 的时候, 我们把它的值设为 d[ fa ] + 1, 我们删除 i 的时
阅读全文