首页 > 其他分享 >Codeforces Round 972 (Div. 2) 2005C. Lazy Narek 题解

Codeforces Round 972 (Div. 2) 2005C. Lazy Narek 题解

时间:2024-09-15 10:24:23浏览次数:10  
标签:分数 Lazy ch 972 题解 字母 不选 字符串 narek

原题链接:https://codeforces.com/contest/2005/problem/C

看了教程发现都是用dp做的,在这里分享一个差不多的SPFA的思路(赛场上忘了Dijkstra不能有负边所以炸了)
时间复杂度与dp同样是O(nm)

形式化题意和翻译:
有n个长度为m的字符串,你可以选择或不选择来拼接它们,但是不能更改字符串的顺序。对于得到的最终字符串,在其中依次循环地寻找“narek”,每找到一个字母+1分,找到一个在“narek”中但不是当前要找的字母-1分,其他字母不得分。求最大分数。
先不考虑最后没选完完整的narek的问题。注意到对于每个字符串,我们可以O(nm)预处理出“如果当前要找的字母为ch,则选择了第i个字符串后我能获得多少分数收益”和“如果当前要找的字母为ch,则选择了第i个字符串后我要找的字母变成了什么”。分别设为val[ch][i]和become[ch][i]。

在预处理完这两个数组后,我们注意到对于每一个可能的字符串,都有可能的两种操作,选或不选。而这又与且仅与当前要找的是什么字母有关。于是,我们建立n*5个点来表示状态,每个点表示对于第i个字符串,要找ch时的状态。对于第i个字符串,依据选或不选,向其他点连接两条边,选的话从自身向下一个字符串且要找become[ch][i]时对应的点连边(因为选择后要找的字符改变了),边权为val[ch][i];不选的话从自身向下一个字符串且要找ch时对应的点连边(没有选择新串那么要找的字符不变),边权为0。那么我们最大化分数的过程就是求出一条从起点到终点的最长路,这可以在SPFA里建负边来实现。我们的起点就是第一个字符串要找‘n’时对应的点。

然后考虑最终状态,设5个点表示看完最终字符串后,还要找字母ch的状态。如果我们没有找到完整的一个“narek”那么,我们在看完所有字符串后还要找的字母必然是‘a’、‘r’、‘e’、‘k’中的一个。并且我们在计算分数时会错误的把这些不完整的“narek”加上而不是减去,于是我们根据将对应的结尾状态所对应的点的距离值直接减少2倍的ch-1。然后我们求出最后五个点中距离最大的值,便是整张图的最长路,也就是所求的最大分数。

标签:分数,Lazy,ch,972,题解,字母,不选,字符串,narek
From: https://www.cnblogs.com/Almond/p/18415007

相关文章

  • 食物链题解
    双倍经验:P2024[NOI2001]食物链当问题要求维护一些对立的关系时(朋友、敌人),就可以用种类并查集实现。因为有三种关系所以并查集的数组要开三倍空间,第一倍空间存同类关系,第二倍存捕食关系,第三倍存被捕食关系。注意:一的猎物的猎物就是一的天敌,其他就可以直接并查集维护即可。注......
  • [ABC371D] 1D Country 题解
    这题,怎么说呢,\(STL\)大法好。前置芝士:lower_pound函数在结构体上的使用。那其实这题便是一个二分前缀和的水题了。结构体存储每个村庄的距离\(x\),人口\(d\)。对于每个输入的\([l,r]\)二分查找其对应的村庄,进行一次答案的统计,输出即可。代码:#include<bits/stdc++.......
  • 【LGR-200-Div.4】洛谷入门赛 #27 A-H题解
    A#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;mt19937rnd(time(0));#defineintlonglongtypedeftuple<int,int,int>tp;#definexfirst#defineysecondtypedefpair<int,int>pii;typedefpair<double,double>......
  • 题解 [ABC371G] Lexicographically Smallest Permutation(中文/English)
    本题解提供英文版,位于示例代码之后。Englishversionofthiseditorialisprovidedafterthesamplecode.官方题解竟然用Python来算高精度lcm,我来提供一个可以避免一切大整数运算的方法。考察\(u\getsP_u\)这张图的每个置换环。为了使答案字典序最小,显然需要从前往后......
  • P9891 [ICPC2018 Qingdao R] Repair the Artwork 题解
    所求即为选择的区间恰好包含所有\(a_i=2\)的位置的方案数。设所有\(a_i=2\)的位置\(i\)组成集合\(S\),考虑容斥被选中的位置是\(S\)的子集的方案数\(g(S)\)。设\(T\)为\(S\)的子集,\(T\)的贡献\(f(T)\)为:选中的位置都在\(T\)的子集中的方案数乘容斥系数\(......
  • [题解]CF542A Place Your Ad Here
    思路首先因为电视台比广告多一个信息,所以通常来说枚举电视台是更有前途的。因此枚举每一个电视台,考虑所有广告的贡献。对于一个电视台,\(c_i\)是定值,也就是找到所有广告与电视台所表示区间交得最多的那一个。假设枚举的电视台控制了\([L,R]\)区间,则广告\([l,r]\)会有三种方......
  • Luogu P10179 水影若深蓝 题解 [ 绿 ] [ 并查集 ] [ 构造 ]
    水影若深蓝:挺好的一道并查集构造题。观察不难发现“距离为\(2\)”这个条件我们可以通过黑白染色实现,我们把他们的中转点染成与他们相反的颜色,把这两个距离为\(2\)的点染成相同颜色。这个染色问题就很并查集。于是我们用并查集维护相同的种类。显然,当图上只有一个连通块的......
  • 请求HTTP链接的图片等资源被自动变成HTTPS请求的问题解决(顺便可以解决图片防盗链)
    文章目录问题现象问题根本原因常规问题解决办法非Chrome浏览器:控制CSP协议对HTML页面处理nginx配置中处理Chrome浏览器本地处理方式Chrome浏览器通用解决办法(服务器端无法控制新版Chrome这种行为,只能曲线救国--顺便可以解决图片防盗链)网页的网站使用http域名代理服务......
  • P5985 [PA2019] Muzyka pop 题解
    P5985[PA2019]Muzykapop题解是蛮有意思的一道题。\(n\le200\),第一感觉是区间dp,但是又不好设出状态。考虑\(b\)单调递增的过程中的性质,考虑后得到\(b\)的最高含\(1\)的位一定是单调不降的,于是我们考虑将最高的含\(1\)的位设入状态。第一反应是设\(f_{i,j}\)表示......
  • 力扣494-目标和(Java详细题解)
    题目链接:494.目标和-力扣(LeetCode)前情提要:因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。最近刚学完01背包,所以现在的题解都是以01背包问题为基础再来写的。如果大家不懂01背包的话,建议可以去学一学,01背包问题可以说是背包问题的基础。如果大家感兴趣,......