首页 > 其他分享 >CF506E Mr. Kitayuta's Gift

CF506E Mr. Kitayuta's Gift

时间:2023-05-19 15:45:22浏览次数:61  
标签:矩乘 Gift 绿点 路径 CF506E Kitayuta 自动机 dp log

太神了,感觉比任何一道我做过的 *3000 都难啊!

首先考虑一个很蠢的 dp,大概设 \(f_{k,i,j}\) 表示从前往后定了字符串的前 \(k\) 位,同时也定了后 \(k\) 位,在原串上从前往后匹配到 \(i\),从后往前匹配到 \(j\) 的方案数,直接硬上矩乘是 \(O(|s|^6\log n)\) 的。/fad

肯定要找一点性质优化,一个观察是有用的步数只有 \(O(|s|)\) 步,其它都在走自环,不过不太能用。另一个性质就是只有两种本质不同的转移:\(s_i=s_j\) 和 \(s_i\not=s_j\)。

然后就不会了,就去瞄了眼题解,发现是把这个 dp 看成一个自动机转移,很厉害啊!先鸣谢xht然后抠张图:

其中红点代表 \(s_i\not=s_j\),绿点代表 \(s_i=s_j\)。

有了这个自动机我们能干什么呢?大概看一看就可以发现,每条路径对答案的贡献只和绿点的个数以及红点的个数有关,而红点的个数与两倍绿点的个数之和只能是 \(|s|\) 或者 \(|s|+1\),也就是说我们只有 \(O(|s|)\) 种本质不同的路径。因此我们可以先跑一个 \(O(|s|^3)\) 的 dp 把每种路径的条数算出来,然后如果我们对每种路径矩乘可以做到 \(O(|s|^4\log n)\)。

但是这还不够,还不够怎么办?并行!我们尝试用一次矩乘并行这 \(O(|s|)\) 种不同的路径。我们规定绿点先转移,红点后转移,那么设 \(f_i\) 表示绿点走了 \(i\) 个,设 \(g_i\) 表示红点还剩 \(i\) 个,则 \(f,g\) 之间可以通过预处理的路径条数转移,直接矩乘就行,可以做到 \(O(|s|^3\log n)\)。

实际上仍然使用自动机会更好理解,先鸣谢 xht,再抠张图:

上面是没有压缩过的,对 \(O(|s|)\) 条链分开跑的,下面是压缩以后的自动机。

你写完高高兴兴一测样例二发现挂掉了,原因是奇数长度中间那个位置会同时跳两个,这是不行的,减去就行。

这个自动机挺特殊的应该可以去矩乘,大概可以做到 \(O(|s|^3)\) 但是纯口胡没写过。

submission

标签:矩乘,Gift,绿点,路径,CF506E,Kitayuta,自动机,dp,log
From: https://www.cnblogs.com/275307894a/p/17415330.html

相关文章

  • codeforces 505B B. Mr. Kitayuta's Colorful Graph(bfs)
    题目链接:codeforces505B题目大意:给出一个有向图,边有不同的颜色,任意给出查询,查询两点能够只通过一种颜色连通的颜色的种类数。题目分析:根据不同颜色建边,bfs即可,队列维护可用的点。AC代码:#include<iostream>#include<cstring>#include<cstdio>#include<vector>#include<alg......
  • HackVM:Gift
    上次编辑时间:April18,20233:07PM创建时间:April18,20232:53PM所有者:twsec标签:靶机渗透靶机地址主机发现80端口访问web端无发现22端口爆破成功直接登录获取flag......
  • Codeforces Round #286 (Div. 2) C题 Mr. Kitayuta, the Treasure Hunter (DFS+记忆化D
    题目地址:http://codeforces.com/contest/505/problem/C从d点开始,每个点都有三个方向,形成了一棵树,那么就从跟结点开始进行dfs查找,dp数组记录当前的点和长度,当这两个条件相同的时候,显然,后面的子树是完全相同的,于是用记忆化来优化。代码如下:#include<iostream>#include<string.h>#......
  • Codeforces Round #286 (Div. 1) B. Mr. Kitayuta's Technology (强连通分量)
    题目地址:http://codeforces.com/contest/506/problem/B先用强连通判环,然后转化成无向图,找无向图连通块,若一个有n个点的块内有强连通环,那么需要n条边,即正好首尾相连形成一条环,那么有了这个环之后,在这个块内的所有要求都能实现。如果没有强连通环,那么就是一棵树,那么只需要n-1条边即......
  • Go编写一个小网站--复制粘贴--GiftsForYou
    修修改改成为自己想要的七米老师的:https://github.com/Q1mi/bubblegifts_for_you就是送的礼物的记录字段包括时间、礼物、文字先运行起来1、创建数据库配置连接数据的用户密码CREATEDATABASEbubbleDEFAULTCHARSET=utf8mb4;conf/config.iniport=9000release=......
  • D. Buying gifts
    D.BuyinggiftsLittleSashahastwofriends,whomhewantstopleasewithgiftsontheEighthofMarch.Todothis,hewenttothelargestshoppingcenterin......
  • 爱奇迹 Heaven Gifts-电子雾化行业领军品牌
    深圳市爱奇迹科技有限公司(简称​​爱奇迹​​,HeavenGifts)成立于2007年,是一家集设计、制造、销售营运于一体的电子雾化生产企业。爱奇迹坚持践行“以科技的力量为人类健康社......
  • 2558. Take Gifts From the Richest Pile
    packageLeetCode_2558importjava.util.*/***2558.TakeGiftsFromtheRichestPile*https://leetcode.com/problems/take-gifts-from-the-richest-pile/*......
  • CF C. Mr. Kitayuta, the Treasure Hunter
    题目链接https://codeforces.com/problemset/problem/505/C题目描述首先这样的题目可以想到搜索和普通线性dp但是搜索的话时间复杂度到了1e12了(应该没错)而正常dp[......
  • java.nio.file.AccessDeniedException: /home/jenkins/agent/workspace/gift/target/a
    企业级持续集成  自动化框架:java+testng+httpclient+allure  持续集成:git+gitlab+jenkins+pipeline+maven+harbor+docker+k8s 持续集成环......