51nod 3188 字符王国

news/2025/5/16 3:05:39/文章来源:https://www.cnblogs.com/sadlin/p/18403814

3188 字符王国

建图,有环输出-1,无环按照拓扑序dp,设状态为 \(dp[i][j]\)\(i\) 个点,\(j\) 的字符的出现的最大次数,最后遍历每个点找到最大答案。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=3e5+10;struct ss{int to,next;
}e[N];int n,m;
int cnt;
int head[N],in[N];
char c[N]; 
queue<int> q;
int dp[N][30];
void add(int u,int v){e[cnt].next=head[u];e[cnt].to=v;head[u]=cnt++;
}int main() { ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=n;i++){head[i]=-1;}cin>>(c+1);for(int i=1;i<=m;i++){int u,v;cin>>u>>v;add(u,v);in[v]++;}for(int i=1;i<=n;i++){if(in[i]==0){q.push(i);}}while(!q.empty()){int x=q.front();q.pop();dp[x][c[x]-'a']++;for(int i=head[x];~i;i=e[i].next){int y=e[i].to;for(int j=0;j<26;j++){dp[y][j]=max(dp[y][j],dp[x][j]);}if(--in[y]==0){q.push(y);}}}for(int i=1;i<=n;i++){if(in[i]){cout<<-1;return 0;}}int ans=0;for(int i=1;i<=n;i++){for(int j=0;j<26;j++){ans=max(ans,dp[i][j]);} }cout<<ans;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794286.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有意思、有趣的文字

苦难既然把我推到了悬崖的边缘,那么就让我在这悬崖边坐下来,顺便看看悬崖下的流岚雾霭,唱支歌给你听。       —— 史铁生《我与地坛》罗翔说:“珍惜你的低谷期,你会看到很多真相。时间能渡的都是愿意自渡的人,没有谁的人生一帆风顺,低谷期的苦难,就是为了积蓄力…

Evolutionary Computing: Notebook assignment - Traveling Salesman Problem 练习随笔

本次练习基于EC算法经典的旅行商TSP问题 练习目标: 在所给的架构下编写并运行一个正确的进化算法,并解决经典的旅行商TSP问题。在该练习条件下,当每一次旅行商的旅行距离均低于13500公里时,则代表所编写之算法有效。 有两点额外要求:(1) 算法中人口规模Population必须 ≤1…

413周赛第四题 - 3277. 查询子数组最大异或值

题目链接 3277. 查询子数组最大异或值思路 区间DP(区间异或值计算)+ 区间DP(区间最大值查询)题解链接 区间 DP 套区间 DP(Python/Java/C++/Go)关键点 1.区间异或值计算:\(\text{xor}_{i,j}=\text{xor}_{i,j-1}\oplus\text{xor}_{i+1,j}\quad\quad\) 2. 区间最大值:\(\t…

413周赛第三题 - 3276. 选择矩阵中单元格的最大得分

题目链接 3276. 选择矩阵中单元格的最大得分思路 动态规划题解链接 枚举值域,状压行号,附费用流做法(Python/Java/C++/Go)关键点 1. 状态定义 - \(i\)为矩阵中的数字,\(j\)为使用的行号 2. 状态压缩 - 枚举行号(位运算)时间复杂度 \(O(mn2^m)\)空间复杂度 \(O(mn + 2^m)…

413周赛第二题 - 3275. 第 K 近障碍物查询

题目链接 3275. 第 K 近障碍物查询思路 大根堆题解链接 最大堆维护前 k 小(Python/Java/C++/Go)关键点 “第k小元素”应转换为“大根堆”时间复杂度 \(O(n \log k)\)空间复杂度 \(O(n)\)代码实现: class Solution:def resultsArray(self, queries: List[List[int]], k: int)…

413周赛第一题 - 3274. 检查棋盘方格颜色是否相同

题目链接 3274. 检查棋盘方格颜色是否相同思路 将颜色检查转换为坐标检查 - 奇偶性题解链接 简洁写法(Python/Java/C++/Go)关键点 如果 \(x\) 和 \(y\) 的 ASCII 值的奇偶性相同,那么格子是黑格,否则是白格时间复杂度 \(O(1)\)空间复杂度 \(O(1)\)代码实现: class Solutio…

宝可梦gba改版教程/口袋妖怪gba改版教程

背景 心血来潮玩了一些改版,感觉不太人性化,于是想要去稍微学学。 过程 劝退 可以说是非常劝退,gba改版非常的不人性化,比如汇编语言asm,改版工具不支持中文之类的。没有成体系的教程 这是口袋资源吧的教程汇总,虽然看上去很详细,但是其实还是蛮零散的,而且由于贴吧的一…

414周赛第四题 - 3283. 吃掉所有兵需要的最多移动次数

题目链接 3283. 吃掉所有兵需要的最多移动次数思路 动态规划题解链接 相邻相关排列型状压 DP(Python/Java/C++/Go)关键点 难-状态压缩DP时间复杂度 \(O(n L^2 + n^2 2^n)\)空间复杂度 \(O(n L^2 + n 2^n)\)代码实现: DIRS = ((2, 1), (1, 2), (-1, 2), (-2, 1), (-2, -1), (…