上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 38 下一页
摘要: 首先,如果这个图本身就不存在欧拉回路,那么显然无解。 对于每个子串: 1.如果里面有不存在的边,那么显然无解。 2.如果里面有一条边重复出现,那么显然也无解。 3.对于每条边,维护其前驱与后继,若前驱或后继超过$1$个,那么显然也无解。 如此所有边将形成一条条链或者环的结构,如果存在环,那么显然也无 阅读全文
posted @ 2017-02-09 18:03 Claris 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 将选手和询问按照年龄排序,即可去掉年龄的限制。 将所有选手按水平排序后维护线段树,显然最优解一定是从大到小贪心选择。 线段树上每个节点维护: $g[0/1]:r+1$不选/选的时候,$l$选不选。 $c[0/1]:r+1$不选/选的时候,中间选了几个。 $s[0/1]:r+1$不选/选的时候,中间选 阅读全文
posted @ 2017-02-09 16:45 Claris 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 将图黑白染色,每个点拆成两个点,分别表示水平和竖直方向,再增加一个点以控制流量,那么每个格子都需要找两个方向去连接。 $S$到每个黑点的控制点连边,流量$2$,费用$0$; 控制点向两个方向的点各连两条边,第一条流量$1$,费用$0$,第二条流量$1$,费用$w$; 然后两个方向的点分别向对应白点连 阅读全文
posted @ 2017-02-07 19:04 Claris 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 设$f[i][j][k]$表示前$i$个物品买了$j$个,消耗$k$个钻石,最少花多少钱,可以通过简单的DP求出。 枚举拥有的钻石数以及最多能购买的物品数的下界,那么钱数的下界是定值。 将$n$个箱子折半搜索,按钻石数分组并排序,枚举左半边每种方案,在右半边双指针求出总概率即可。 时间复杂度$O(n 阅读全文
posted @ 2017-02-06 20:42 Claris 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 首先预处理出$f[i][j][k]$表示长度为$i$的序列,第一个位置是$j$,最后一个位置是$k$时合法的方案数。 从后往前枚举LCP以及那个位置应该改成什么。 用线段树维护区间内最左最右的已经确定的位置,以及区间内的合法方案数。 合并的时候只需要将左右儿子的答案乘起来,然后再乘以左儿子最右到右儿 阅读全文
posted @ 2017-02-06 18:17 Claris 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 首先预处理出$f[i][j]$表示第$i$位是字符$j$的字符串集合。 考虑枚举答案$n$,那么模式串中模$n$相同的字符都要按顺序在同一行出现。 设$g[i][j]$表示第$i$列开始出现模$n$为$j$的那些字符是否有可能,可以通过bitset取交实现。 然后枚举模式串出现的列$x$进行贪心匹配 阅读全文
posted @ 2017-02-06 17:04 Claris 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 考虑二分答案,转化为求有多少$\leq lim$的数满足条件。 从两侧往中间进行数位DP,设$f[l][r][j][x][y][z][pre][suf]$表示当前准备填的两个位置是$l$和$r$,已经有$j$对相邻的数不同,$l-1$填的是$x$,$r+1$填的是$y$,正序串和逆序串的大小关系为$ 阅读全文
posted @ 2017-02-02 21:21 Claris 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 将每条双向边拆成两条单向边,若两条边中至少存在一条边使得删掉它之后图中SCC个数不变,则这条边可以定向。 将边中间加上点,变成删点问题。 对于每个SCC单独考虑,随便选择一个不是拆点出来的点S作为源。 则在正图或者反图的Dominator Tree上的所有非叶子节点均会影响连通性。 用Lengaue 阅读全文
posted @ 2017-02-02 16:08 Claris 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 不妨设$R$是唯一可以看到的颜色,考虑一维序列的情况。 设$f[i][j][k][x][y]$表示考虑了前$i$个位置,第$i$个位置的高度是$j$,最高高度是$k$,已经用了$x$个$R$,$y$个非$R$的方案数,转移则是要么使自己的高度$+1$,要么考虑下一个位置。 由此可以在$O(n^5)$ 阅读全文
posted @ 2017-02-01 14:37 Claris 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 对于每个$k$,问题等价于求有多少置换满足: 1.存在一个循环长度为$k$ 2.任意一个循环长度$\geq 2$ 枚举这种环的个数$t$: 设$g_t$表示至少有$kt$个人分成$t$个长度为$k$的循环的方案数,考虑枚举第一个人和哪些人分在了一起,同时有$(k-1)!$种可能的环,有$g_t=C( 阅读全文
posted @ 2017-01-31 02:23 Claris 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 建立新图,原图中每条边在新图中是点,新图中每个点的点权为$-e[i].c+e[i].b$,边权为$0$。 若$e[i].d\leq e[j].a$,则连一条$i$到$j$的单向边。 对于原图中每个点,将所有入边和出边分别排序,然后建立一排虚点表示后缀,通过双指针将边数优化至$O(m)$。 在新图中求 阅读全文
posted @ 2017-01-30 16:55 Claris 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 将袋鼠大小和口袋大小分别从小到大排序。 枚举从左往右第一只没有被放入任何口袋的袋鼠$x$,那么$x$之前的所有袋鼠、以及$x$能装入的所有口袋都应该在匹配边上。 按这只袋鼠将上下两个序列分为两部分,设$f[i]$表示左边内部有$i$条匹配边的方案数,$g[i]$表示右边内部有$i$条匹配边的方案数。 阅读全文
posted @ 2017-01-30 00:58 Claris 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 求出每个点向上下左右能延伸的最大长度$left$、$right$、$up$、$down$。 枚举每一条对角线,如果$j$可以作为左上角,$i$可以作为右下角,那么有: $j+\min(down[j],right[j])-1\geq i$ $i-\min(left[i],up[i])+1\leq j$ 阅读全文
posted @ 2017-01-28 17:28 Claris 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 建立二分图,首先如果存在度数为$0$的点,那么显然无解。 如果存在度数为$1$的点,那么这个点的匹配方案固定,可以通过拓扑排序去掉所有这种点。 那么现在剩下的点度数都至少为$2$,因为左右点数相等,且左边每个点度数都是$2$,所以右边只能是每个点的度数都是$2$。 在这种情况下每个连通块是一个环,相 阅读全文
posted @ 2017-01-24 17:56 Claris 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 对于在$o$点的某个询问,有两种情况: 情况1:走到任意一个点$x$然后超链接跳到$o$的某个祖先$y$再走到$o$。 枚举所有$y$看看是否存在$x$即可。 时间复杂度$O(nm)$。 情况2:走到$o$的某个祖先$x$,然后走到$x$子树内某个点$y$,在$x$和$y$之间不断通过超链接来回走, 阅读全文
posted @ 2017-01-24 00:31 Claris 阅读(185) 评论(0) 推荐(1) 编辑
摘要: 把集合看成左边的点,图中的点看成右边的点,若集合$i$不包含$j$,则连边$i->j$,得到一个二分图,等价于求这个二分图的完备匹配个数。 设$f[i][j]$表示考虑了前$i$个集合,匹配了$j$个集合的方案数。 转移则是枚举当前集合是否匹配,然后设$g[i][j]$表示考虑了前$i$个内部点,匹 阅读全文
posted @ 2017-01-21 00:59 Claris 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 注意到答案不超过$5$,因此可以考虑BFS求出距离起始态或者终止态不超过$2$的所有状态。 设它们到起始态、终止态的距离分别为$f[S],g[S]$,则$ans=\min(5,f[S]+g[S])$。 时间复杂度$O(n^6\log(n!))$。 阅读全文
posted @ 2017-01-20 03:46 Claris 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 建立AC自动机,因为不存在某个串是另一个串的后缀,因此匹配到任意位置都只可能匹配一个串。 预处理出每个串出现的所有位置,总的出现次数为$O(m)$。 设$f[i][j]$表示考虑了前$i$个串,最后一个串匹配位置是$j$的方案数,DP即可。 转移则是枚举$f[i-1][k]$,$j$和$k$显然可以 阅读全文
posted @ 2017-01-18 19:30 Claris 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 如果Jan先手,那么可以放入一个对Petra来说价值$inf$的物品,就变成了Petra先手。 对于Petra来说,拿物品的顺序是固定的,按这个顺序排序。 那么如果把Petra的选择看成$($,Jan的选择看成$)$,一个合法的方案对应了一个合法括号序列。 因此贪心选取$\lfloor\frac{n 阅读全文
posted @ 2017-01-17 23:02 Claris 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 通过BFS可以求出到每个站点的最小花费。 每次从队首取出一个点,枚举所有它能花费1块钱就到达的线路,通过两遍递推求出最大时间。 注意到每个点和每条线路只有第一次使用时有用,所以总时间复杂度为$O(n+m)$。 阅读全文
posted @ 2017-01-16 23:25 Claris 阅读(441) 评论(0) 推荐(1) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 38 下一页