10 2023 档案
摘要:这一道题给我们最大的启示就是一定要学会固定数字!下面要求的数组,如果按照数位DP的套路,从小到大考虑数位以及数位上的数字,是很容易想到需要求这些数组的 设 , 表示所有 位数字的所有前缀子串的和
阅读全文
摘要:这个trick是:将所有时间转换为秒,就不用考虑进位了
阅读全文
摘要:首先, 是下界,因为连一条边最多只能减少一个零入度点和一个零出度点,而最终的图不可能有哪怕一个零出度点或者零入度点(最后的图刚好就是一个点) 根据这个下界,我们也很容易可以构造出来一种方法,让零出度点和另一个SCC的零入度点相连即可,就像下面一样(红色边是添加的边)
阅读全文
摘要:具体题解先看这一篇 解释一下是如何合并树的 每次都可以提取出来一个子树 然后把这三棵子树重叠在一起(根对根, 号点对 号点,以此类推),就得到了这个新图 然后解释一下为什么这么做是对的 首先在单次操作中,至少需要把这个新树给遍历完,不然的话就会存在有些点遍历不到,即这是答案下界 然后
阅读全文
摘要:首先我们抽象一下这道题的模型,然后把引理记住 模型:对于一棵树上选定的一些点,把他们连通起来的最小边数 我们先考虑一种朴素做法,对于任何一种方案,任取其中两个点,那么这个方案一定包含这两个点之间的路径 就是说,我们依次添加每个点,对于每一个新添加进来的点,让这个点与其已经添加的点求路径,然后把路径上
阅读全文
摘要:主要是性质的证明,见这篇题解 其他的性质证明都很容易看懂,主要是记住:所有直径的点的交集非空,所有直径的中点相重合 然后来证明一下为什么随便选一条直径就可以了 我们先画出图 由之前的定理的证明,所有直径一定长成这个样子。就是从中点 开始往左右两边走,走到拐点时可以选择走支路也可以选择继续走,
阅读全文
摘要:首先最终的答案一定包含最开始的T条边,不然的话,我们选择这T条边中没被包含的任意一条边,把它加入现有的生成树 由于这T条边连接的是不同的连通块,所以加入这条边后生成树会形成一个环,而且这个环除了这一条边不包含其他任何一条这T条边中的一边 又因为这T条边是最小的T条边,我们选择这个环上从1出发的不是这
阅读全文
摘要:这道题目的意思是是小数部分大于0.5直接进位,小于0.5直接舍弃,等于0.5看整数部分是奇数还是偶数(重点:舍弃直接看小数点后的第一位数字因为保留到整数,而不是从最后一位开始舍弃;有效数字的概念,如0.500就没有有效数字,0.501就有有效数字) 然后这一道题还有非常骚的读入方法 #include
阅读全文
摘要:我觉得这种题目还很神奇。。 溢出的定义:一个整型表示的数据其实是一个环,比如说short它可以表达的范围是-32768~+32767,那么+32767再加1后就会变成-32768 所以说这一道题目,我们假设输入了一个a,由于b是在int范围内的,所以从a走是不可能走满一圈的;如果a是正数,加上b后得
阅读全文
摘要:可以想一下这道题(这里样例的二进制是补码) 我的代码 一些其他思路(特别是思路三,想想为啥) #include <cmath> #include <iostream> using namespace std; int main() { char n = 0; int power = 30, k =
阅读全文
摘要:本来一看数据范围,n为200 就很容易去想以各个区间的序号为状态 但是这样要么顾得了头顾不了尾,要么顾得了尾顾不了头(即以区间左端点排序或者以区间右端点排序) 所以我们以区间的时间为状态,那么这里肯定要离散化,这样枚举的时间既有可能是左端点,也有可能是右端点,就可以推走了 然后可以看看这篇题解 解释
阅读全文
摘要:首先就是不要折磨自己,设状态可以拆成两维别弄成一维 其次是标记后记得还原现场(搜索要求) 最后一个,一定要把搜索函数的每个参数在递归后表示的东西想清楚!!!这个调了好久 比如说: if(j+2>=y||(last&(1<<j+2))==0||(now&1)!=0) 这个now是填的下一排的状态,为1
阅读全文
摘要:什么叫做博弈论DP呢? 这里也是双方采取最佳策略,但是与普通博弈论不同的是,这里问的不是先手必胜or必败,而是问的最优值 因此称作博弈论DP 那么这种DP也是像SG游戏一样,我们想出博弈图然后倒推 同时这题也是轮廓线DP,具体见这篇题解 那么为什么菲菲要max,牛牛要min呢? 我们就考虑dp数组的
阅读全文
摘要:这个题目就当一个见识吧 设f[i][j][k]表示当前的状态是[i,j]并且j后面还有k个与j颜色相同的木块的最大价值 第一种情况,当第j块和第j-1块颜色相同时,f[i][j][k]=f[i][j-1][k+1] 第二种情况,当第j块和第j-1块颜色不同时,考虑最后那一堆颜色相同的怎么消去的 如果
阅读全文
摘要:这一题很显然是需要我们猜一些结论 然后发现无法证明只写1/2 所以我们尝试找填的数的上限 假设最终的数的最大值为x,那么这个节点的周围肯定有1...x-1,一共x-1个节点 对这x-2个节点(除1外),每个节点都可以产生i-1个节点(其中i是节点的权值) 然后以此类推,不难写出一个代码 #inclu
阅读全文
摘要:这道题很长 一读完可以发现不是模拟题,那么这道题还有这么多情况供我们去讨论,则一般都是可以去掉一些情况的 我们发现,对任意一种和牌,如果有杠子,我们把这个杠子换成少一张牌的刻字答案是会变得更优的(很简单的列算式) 所以就不用考虑大于15张牌的情况了 对于国士无双暴力即可 对于七对子,算出每一种雀头的
阅读全文
摘要:这一道题如果直接做是没有什么思路的,所以我们合理猜测应该是有什么结论 看这个数列最开始就只有三个值,所以我们猜测最后也只有这三个值 下面是证明 首先第一个数最小是-1,所以所有数的下界是-1 其次如果存在某一个数大于1,我们找到这个数列最前面的这个数,那他前面的数肯定是1,然后对相同的操作我们把这个
阅读全文
摘要:这种题看起来很难确定如何给出一个简单的判别方法去判断是否符合条件的一般都是证明下界再构造下界 首先给出结论:对于一个数列,某一个数字 的个数有 个,那么此数字可以覆盖一个区间 ,遍历 ~ 每一个数字并更新每个数字被当前区
阅读全文
摘要:这一道题跟NOIP集训模拟赛1的D题非常像,当然D题的递推方程更复杂(磁盘里面有题解pdf) 对于这一道题,我们设 表示铺了 列而且全部用的完整的砖的方案数 表示铺了 列,但是第 列缺了一个而且第 列的唯一的那一块砖头就是1X
阅读全文
摘要:这题我们很容易想出一个状态,设f[i][j]表示前i个长度划分长度为j的块的总方案 然后我们自信的写出 但这其实是错的!这跟背包很想,+f[i][j-a[i]]这一项的本质是说这个长度为j的块的最后一段的长度是a[i],但其实最后一
阅读全文
摘要:首先这道题跟分型城市那道题很像,不难想到分治,设出方程即可 比如设 表示 阶图案,重力方向是从上到下的总灌水方块, 表示重力方向从左到右, 表示重力方向从左到右而且是在图案最下面过去的 于是有\(h[i][0]=2(h[i-1][0
阅读全文
摘要:首先考虑当节点数为n时,有多少个二叉树 设 表示节点为i时二叉树的个数,有 注意这种递推式子也是卡特兰数的一种形式,所以为卡特兰数 其实想到这个式子的话,我们可以借鉴随机树一题,从序列生成的角度去思考,于是我们
阅读全文