摘要:
要点 并没问具体方案,说明很可能不是构造。 思考不断读入这个文本串,然后中间不出现某些文法的串。啊,这就是个自动机。 将不合法串使用ac自动机构成一个Trie图,我们需要的字符串就是在这个自动机上无限走路但是却不会撞到危险节点。 这样只要从根开始跑dfs判有环即存在答案。 注意还要加上ac自动机的性 阅读全文
摘要:
要点 非要先来后到暗示多源最短路,求最小的最大值暗示二分 二分内部的check是关键,dp处理一下,$dp[i]$表示第$i$笔订单最早何时送达,如果在ddl之前到不了则$return\ 0$。我觉得其中$time$变量的维护很好地使复杂度降了一维。 第一发WA点:算法看了一遍感觉没有可改的,就把二 阅读全文
摘要:
要点 处于什么位置的题常用一个套路就是搞完$[l,r]$以后处于0(l)或1(r)的状态,即$dp[i][j][0/1]$。 对于此题dp意义为已经搞完$[l,r]$的时最小的已耗电能,转移:以在$i$处为例,只会是$i+1$处直走过来或者$j$处掉头过来两种。写就很好写了。 C++ include 阅读全文
摘要:
每次寻找最大深度的节点,若未被覆盖则将其爷爷设为站点并更新父辈的距离。 其中$d[i]$是该点的深度,$dis[i]$是它到最近的消防站的距离。 阅读全文
摘要:
常规线性dp,需要时就加一维。$dp[i][j][t][s]$表示在点$(i,j)$时瓶子里剩$t$且为$s$走(0代表小a,1代表uim)时的方案数。 de了半天发现是初次尝试的快速取模少写个等号……然鹅改了以后为什么比正常写跑得慢…… C++ include const int mod = 1e 阅读全文
摘要:
要点 因为当前最大字符只有一个且两边是回文的,所以如果答案包含最大字符则一定是重合部分。 若不包含,则用此字符将两个区间分别断为两部分,则共有四种组合,答案一定为其中之一。 C++ include include using namespace std; int l1, l2, r1, r2; in 阅读全文
摘要:
要点 标签是dp但搜索一发就能过了。 因为是对称矩阵所以试填一下就是一个外层都填满了,因此搜索的深度其实不超过5。 显然要预处理有哪些素数。在这个过程中可以顺便再处理出一个$vector:re[len][number]$,表示前面已经填了长度为len的数为number,那么最后会合法的填法应该在后面 阅读全文
摘要:
方法一 设$f_i$为最多使用$i$种颜色的涂色方案,$g_i$为恰好只使用$i$种颜色的涂色方案。可知此题答案为$g_k$。 根据排列组合的知识不难得到$f_k = \sum_{i=0}^k{C_k^i g_i}$。 根据二项式反演的式子 or 容斥原理,有$g_k = \sum_{i = 0}^ 阅读全文
摘要:
我读题有问题呀,题目中到底哪里保证数据一定至少是2倍关系了Orz……然后既然题意就是保证了那贪心一下即可,因为如果当前这个大的不选,那剩下一堆逐渐小于上一代的1/2的,凑起来都不如这个大的,更别说答案了。 Java / @author alphawa / import java.util. ; im 阅读全文
摘要:
要点 $\sum{w_i} rhs.w; } }a[maxn]; int dp[maxw]; int main() { read(n), read(d); rep(i, 1, n) { read(a[i].l); read(a[i].w); read(a[i].h); } sort(a + 1, a 阅读全文