首页 > TAG信息列表 > Kitayuta
CodeForces-505D Mr. Kitayuta's Technology
Mr. Kitayuta's Technology tarjan + 思维 先缩点,然后考虑如何建边 如果其中一个 \(DAG\) 图中出现一个缩点后大小大于 \(2\) 的连通块(环),则考虑直接将这个 \(DAG\) 图变成一个环,代价显然都是相同的,即点的数量 因此延伸,考虑多个缩点前都有环的 \(DAG\) 图,我们不妨将他们全部变成一[CF506E] Mr. Kitayuta's Gift 题解
下面先处理 n+m 为偶 计数,考虑 DP 一般的字符串dp的套路:一位一位的放字符来进行决策 即枚举下一位放什么,这样dp有一个相当棒的好处就是我们永远不会重复数同一个串 考虑设 \(f(I,l,r)\) 表示在能够匹配原串的时候不会放着比配的前提下,处理了最终形成的串的前 I 个和后 I 个,原串剩CF506E Mr. Kitayuta's Gift
一、题目 点此看题 二、解法 使我深受洗礼的一道题,是既有思维难度又有代码难度不可多得的好题! 先考虑偶回文串吧!首先考虑如何计数,题目都告诉你只关心最终状态,我们直接对最终状态计数。考虑枚举法确定原来字符在最终序列的位置,那么可以简单计数来确定方案。 用 \(dp\) 优化这个过程Mr. Kitayuta‘s Technology(dfs,连通块)
链接:https://codeforces.com/problemset/problem/505/D 发现一道有趣的题目 大意:就是连城市的每个点要用最少的路来满足m个条件 给出的条件会把n个点分块 所以可以利用并查集来记录连通在一起的点 可是并查集是体现不了单向边的惹 ->利用vector来记录嘛,就像最小生成树的板子CF506D Mr. Kitayuta's Colorful Graph
题面传送门 看到数颜色就可以想到要用分块。 然后把正解想出来然后复杂度算错 然后发现我们有两种方法: 第一种,将每个颜色都建成并查集然后直接查询,这个是\(O(nq)\)的。 第二种,将每种颜色内的暴力匹配扔到map里,然后对于每个询问查询。这个是\(O(n^2logn+qlogn)\)的。 然后想到将两「CF505E」 Mr. Kitayuta vs. Bamboos
「CF505E」 Mr. Kitayuta vs. Bamboos 传送门 如果没有每轮只能进行 \(k\) 次修改的限制或者没有竹子长度必须大于 \(0\) 的限制那么直接贪心就完事了。 但是很遗憾。 首先看到最小化最大值可以想到用二分将最优化问题转化为判定性问题。 设当前二分的值为 \(H\)。 但是有这个必须CF505E Mr. Kitayuta vs. Bamboos
题目链接 最小化最大值就是二分答案,我们现在二分最后最大值为 \(H\),希望知道能否让最终的值都不超过 \(H\)。 发现正着做很不可做,考虑时光倒流: 一开始所有的竹子都是 \(H\) 这么高,每天会自己降低 \(a_i\),然后我们有权用 \(k\) 次“拔高”的机会,每次可以拔高 \(p\)。要求:每时每刻都CF506E Mr. Kitayuta's Gift
Link 记\(m=|S|,p=\lfloor\frac{n+m}2\rfloor\),我们可以得到一个比较trivial的\(O(m^2n)\)的dp算法。 设\(f_{l,r,x}\)表示能够匹配\(S_l\cdots,S_r\)的长度为\(x\)的回文串的个数。我们认为\(l>r\)时并不存在限制,但是\(l\le r+2\)必须被满足。 先考虑边界情况:\(f_{l,r,0}=[l>r],f