Codeforces Round #460 (Div. 2)_D. Substring_[dp][拓扑排序]
2024-08-30 18:47:20
题意:一个有向图,每个结点 被赋予一个小写字母,一条路径的value等与这条路径上出现次数最多的字母的数目,求该图的最大value
比赛时,用dfs超时,看官方题解用的dp和拓扑排序,a--z用0-25表示,用dp[i][j]表示以第i个结点结尾的路径上第j个字母出现的次数
拓扑排序每排到一个点,就用该点的dp去更新与它相邻点的dp,最开始入度为0的点特殊处理了一下,dp过程中同步更新结果res
也复习了一下拓扑排序
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
#define Nnum 300005 char ch[Nnum];
int dp[Nnum][]; vector<int> eage[Nnum];
int deg[Nnum];
int n,m,res;
bool deg0[Nnum]; bool toposort()
{
int cnt=;
queue<int> que;
for(int i=; i<=n; i++)
if(deg[i]==)
{
cnt++;
que.push(i);
deg0[i]=;
}
else
deg0[i]=;
while(!que.empty())
{
int now=que.front();
que.pop();
if(deg0[now]==) //最初入度为0的点,其dp需附上初值,再更新相邻结点
dp[now][ch[now-]-'a']++;
for(int i=; i<eage[now].size(); i++)
{
for(int j=; j<; j++)
{
int tmp=ch[eage[now][i]-]-'a';
if(j==tmp)
dp[eage[now][i]][tmp]=max(dp[eage[now][i]][tmp],dp[now][tmp]+);
else
dp[eage[now][i]][j]=max(dp[eage[now][i]][j],dp[now][j]);
res=max(res,dp[eage[now][i]][j]);
}
//cout<<"*"<<res<<endl;
deg[eage[now][i]]--;
if(deg[eage[now][i]]==)
{
que.push(eage[now][i]);
cnt++;
}
}
}
if(cnt==n)
return ;
else
return ;
} int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<=n;i++)
eage[i].clear();
res=;
memset(deg,,sizeof(deg));
memset(dp,,sizeof(dp));
scanf("%s",ch);
for(int i=; i<m; i++)
{
int a,b;
scanf("%d%d",&a,&b);
deg[b]++;
eage[a].push_back(b);
}
if(toposort())
printf("%d\n",res);
else
printf("-1\n");
}
return ;
}
最新文章
- [BZOJ1014][JSOI2008]火星人prefix
- CentOS 6.5下Redis安装记录
- 最简单的JavaScript模板引擎
- Intellij IDEA中的Mybatis Plugin破解
- contiki-进程
- Memcached启停脚本小结
- sqlserver总结-视图及存储过程
- UVa11054 Gergovia的酒交易 Wine trading in Gergovia-递推
- C#解析.msg文件(outlook文件)
- android中常用的弹出提示框
- 重复数据插入unique列时,锁加在哪?
- JavaScript之数组学习
- windows 2008 开机启动 Docker Toolbox 并运行容器
- 36.QT-解决无边框界面拖动卡屏问题(附带源码)
- iOS进阶之TCP代理鉴权过程
- TensorFlow遇到的问题汇总(持续更新中......)
- ethereumjs/ethereumjs-util
- 红楼梦3d游戏
- Xshell6远程访问linux及Xftp6远程针对linux系统中文件操作(附图文详解)
- JAVA之路(二)
热门文章
- js的location对象
- jQuery - AJAX 级联变动
- java代码实现JDBC连接MySql以及引用驱动程序包
- BZOJ_3998_[TJOI2015]弦论_后缀自动机
- 杂项:IntelliJ IDEA
- bzoj4720
- [转]响应式web设计之CSS3 Media Queries
- Codeforces Round #409(Div.2)
- 洛谷 P3732 [HAOI2017]供给侧改革【trie树】
- CentOS 6.2 X64上64位Oracle11gR2 静默安装,静默设置监听,静默建库经验