摘要:
首先先减下标转换成求最长不下降子序列(是个套路?见了几次还是不是很懂) 然后对于递增的直接取值就可以了,递减就来个中位数 可以构造出一个这样的算法: 每次插入一个新的区间[i,i],使用a[i],表示当前点最好用自己的值就可以了 和前一个区间比较,如果这个点选用的值较小,进行区间合并,这个区间用它的 阅读全文
摘要:
这个题意花里胡哨的zzzzz 其实它是个树啊。。。然后看一下范围很显然是一个树背包啦 设f[i][j]表示以i为根的子树分成j段 对于当前两个子树合并,可以合出max(j1,j2)~j1+j2范围的段数 难点就在于怎么计算方案了(是真的没有想到啊T_T) 方程是这样的:singema f[x][i] 阅读全文
摘要:
首先如果是有向无环图的话就是度数之积了 于是我们需要减去构成环的情况,这个环一定是过新加的边的 那么不合法的情况就是选了yy->xx的一条路径,其他点乱选 进行DP,fi表示选yy->i的路径其他点乱选的方案数,fv= sigema((u,v)属于E) fu / v的度数 阅读全文
摘要:
这是一个结论题。。 要求的序=反图的最大字典序 也就是尽量把大的放在后面。。 阅读全文
摘要:
这个m的范围很有欺骗性啊。。。以为是要枚举C的 不管C的话其实就是要一个min{sigema (Y(i)-X(i+k))^2 } 把Y翻转过来,这样旋转k步的圈就是第n+k位 把它拆开的话其实只要算一个X*Y,就是fft的事儿了 再看看C怎么处理,我们带着C拆开,那么会多一个这个东西:sigema 阅读全文