随笔分类 - 网站->LOJ
摘要:题解 那个限制表示一回头要治完前面的所有病人 我们处理一个g[i][j]表示治疗i到j的病人至少会死多少病人 $g[i][j] = g[i + 1][j] + sum[i + 1,j] + min(sum[i + 1,j],(i j) 3 a[i])$ 每次新加一个i,要么治疗i要么转一圈回来再治 
        阅读全文
                
摘要:题解 写数据结构的时候我代码就会变得非常非常长 一看别人1.5K 2.3K 我6.3K…… orzzzzz 我们很容易想到离线倒着插入,然而,有个小锅叫如果size相同保持原来的重儿子不变 我们需要写个线段树,遇到两个size相同的儿子时看两个儿子下一次插入是什么时候,取下一次插入时间较大的儿子,如
        阅读全文
                
摘要:题解 用所有的方案减去有界的方案 我们规定两个前缀后缀相同时长度最短的,设长度为l,因为长度最短所以他们也是无界单词,可以递推 $f[i] = \sum_{j = 1}^{\lfloor \frac{i}{2} \rfloor} f[j] 2^{i 2 j}$ 计算第k大的时候同理,只需要先对枚举的
        阅读全文
                
摘要:题解 考虑一架飞机飞完自己之后还能飞到哪些航线,用floyd求两点最短路 这个图建出来是个DAG,求最小路径覆盖即可,二分图匹配 注意判断时是航班的起飞时刻+直飞时间+加油时间+最短路时间 代码 cpp include define enter putchar('\n') define space 
        阅读全文
                
摘要:题解 我冷静一下,话说如果去掉建筑和R的限制好像是模拟退火吧 然后开始写模拟退火了,起始点就随机一个敌人作为起始点 没对着数据写了一下获得了70pts,感到美滋滋 然后对着数据卡了很久……发现有个数据点似乎需要从初始温度小一点的情况开始跳,于是就10次从20000降温,10次从2000降温 AC啦 
        阅读全文
                
摘要:题解 01分数规划,二分加树背包…… 代码
        阅读全文
                
摘要:题解 用了一堆迷之复杂的结论结果迷之好写的计算几何???? 好吧,要写立体几何了 如果有名词不懂自己搜吧 首先我们求重心,我们可以求带权重心,也就是x坐标的话是所有分割的小四面体的x坐标 四面体体积的和除以骰子的体积,y,z坐标同理 然后我们把这个骰子四面体剖分,剖分的话就是随便选在骰子内的一个点,
        阅读全文
                
摘要:题解 我一开始还努力想这道题是不是有坑,被SDOI折磨到我觉得不能有那么水的题在…… 就是带权并查集维护一下两点间距离,如果新加一条边两个点在同一集合,看看已有的路径和新加的路径是否相等 乘积可以在模意义下维护,多随机几个模数就行 代码 cpp include define enter putcha
        阅读全文
                
摘要:题解 少考虑了情况,导致我以为是暴力讨论一次角落移动 de了两天才反应过来……简直降智 事实上,我们把移动分三类,一种是在边界跳过一段,一种是在左上角上左上左上左这样撞墙,在右下角下右下右下右这么撞墙,另一种是左右左右左右这么撞墙 如果你说还有上下上下这么撞墙,就把整个图旋转180度再做一遍dp就好
        阅读全文
                
摘要:题解 c一样的就是一个独立的游戏 我们对于2和3的指数 sg[i][j] 表示$c \cdot 2^i \cdot 3^j$的棋子,只有这个硬币是反面,翻转的硬币是正面的sg值 枚举sg函数所有可能的局面,每个后继局面的sg值,就是所有被翻到背面的硬币sg值的异或和 我们忽略了反转当前硬币前面可能不
        阅读全文
                
摘要:题解 我一直也不会网络流……orz 我们分析下这道题,显然和行列没啥关系,就是想给你n + m个串 那么我们对于非回文单词之外的单词,找到两两匹配的反转单词(即使另一个反转单词不会出现也要建出来) 具体就是我们建一个hash表,遇见一个单词读进来,把这个单词反转之后再存进哈希表里 然后我们把一对反转
        阅读全文
                
摘要:题解 按秩合并怎么清数组对我来说真是世纪性难题 我们很熟练地想到点分,如果我们认为某个点到重心是正着读的,由于它的深度固定,它的串也是固定的,我们只要预处理出所有长度正着重复的串,反着重复的串,和它们的哈希值,遍历树的时候只需要记录一下路径字符串的哈希值,比对一下看是否合法就行 为了快一点可以按深度
        阅读全文
                
摘要:题解 做后缀自动机题要一点脑洞,脑洞一开,就过了 我们显然要拿第二个串跑第一个串的后缀自动机 我们可以求出第二个串每个位置匹配到的节点,和匹配的长度L 那么我们统计一个后缀树上的根缀和,表示这样个节点的路径字符串的所有后缀在串中出现过多少次(路径字符串就是根到这个点的路径中等于这个节点len值的串)
        阅读全文
                
摘要:题解 dp[i][j][S]表示区间[i,j]内剩余的数位状压后为S的最大值 这样转移起来不就是$n^3 2^8$了吗 冷静一下,我们可以发现一段区间内剩下的数位的个数是一定的,也就是我们可以在枚举位数上减少一定复杂度 我们转移的时候枚举一个末尾,也就是 $dp[i][j][S] = dp[i][k
        阅读全文
                
摘要:题解 我对莫队真是一无所知 这个东西显然可以用圆方树转成一个dfs序列 然后呢,用莫队计算每个询问区间的每个数出现的次数,从而顺带计算每个数字的奇偶性 但是我们要查的数字也用一个范围,可以直接用分块维护,修改$O(1)$查询$O(n)$ 代码 cpp include define enter put
        阅读全文
                
摘要:题解 水题,可惜要写高精度有点烦 一看障碍物的摆放方式和最后的答案没有关系,于是干脆不读了,直接二项式反演可以得到 设$g_k$为一种摆放方式恰好占了k个障碍物 $f_k = \sum_{i = k}^{n} \binom{i}{k} g_{i}$ 可以得到 $g_0 = \sum_{k = 0}^
        阅读全文
                
摘要:题解 我并不会做,我觉得很像网络流但是毫无建图思路 我猜了个贪心,写了一下……啥过了90分?!这数据是有多水啊。。 哦又是行列拆点 不过要按照‘ ’进行拆点,也就是一段横着的区间只能放一个炸弹,一段竖着的区间只能放一个炸弹,如果两个区间的交点是一个空格的话,那么就把这两个区间拆出来的点连边 最后我们
        阅读全文
                
摘要:题解 这个我们处理出来每一位能变化到的最大值和最小值,包括自身 然后我们发现 $f[i] = max(f[i],f[j] + 1) (mx[j] define enter putchar('\n') define space putchar(' ') define pii pair define f
        阅读全文
                
摘要:题解 看错题了,我以为是询问Q是个数字,问它在哪个位置 我一想这不直接01序列搞一下就好了嘛(事实上是012) 然后呢,我发现样例没过。 啊我看错题了,问的是Q这个位置是啥…… 哦,套用我之前的想法不是直接拿线段树维护01序列然后二分吗……(可以不用012,直接是0表示小于等于mid的值,1表示大于
        阅读全文
                
摘要:题解 一写过一交A的水题 只要求一个dfs序,新加一个标记在子树所在的区间上覆盖上该点,维护深度最大的答案 代码 cpp include define enter putchar('\n') define space putchar(' ') define pii pair define fi fi
        阅读全文
                
 
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号