【开源社区openEuler实践】 C. Cyclic Substrings

开源社区openEuler实践之循环子串题解

题目

题解

#include<bits/stdc++.h>
using namespace std;
// #define int long long
#define ll long long
const int maxn = 6e6 + 5;
const int mod = 998244353;
int fail[maxn];//fail[i]表示i结点代表的回文串的最大回文后缀的编号 
int len[maxn]; //len[i]表示结点i代表的回文串的长度 
int trie[maxn][26], tot = 1;//tot初始为1!!!! 
int cnt[maxn];//结点i代表的回文串出现了多少次
int ind[maxn];
string s;
int get(int x, int i){//x是以s[i-1]结尾的回文串,返回以s[i-1]结尾且s[i-len[x]-1]==s[i]的回文串的对应结点编号 
	while(i - len[x] - 1 < 0 || s[i - len[x] - 1] != s[i
给定的参考引用中未提及解决 'Invalid tasks tree. Cyclic reference has been detected on task null' 错误的方法,无法直接从参考引用中获取相关信息。不过一般来说,该错误提示表明任务树中存在循环引用问题,以下是一些可能的解决思路: 1. **检查任务依赖关系**:仔细检查任务之间的依赖设置,确保没有形成循环依赖。例如,任务A依赖任务B,任务B又依赖任务A,这就会形成循环引用。可以使用代码对任务依赖关系进行检查,以下是一个简单的Python示例: ```python def has_cycle(tasks, dependencies): graph = {task: [] for task in tasks} for dep in dependencies: graph[dep[0]].append(dep[1]) visited = {task: 0 for task in tasks} def dfs(task): if visited[task] == -1: return True if visited[task] == 1: return False visited[task] = -1 for neighbor in graph[task]: if dfs(neighbor): return True visited[task] = 1 return False for task in tasks: if dfs(task): return True return False tasks = ["task1", "task2", "task3"] dependencies = [("task1", "task2"), ("task2", "task3"), ("task3", "task1")] if has_cycle(tasks, dependencies): print("存在循环引用") else: print("不存在循环引用") ``` 2. **验证任务数据完整性**:确保任务数据没有缺失或错误,特别是任务ID等关键信息。如果任务ID为空或重复,可能会导致循环引用的误判。 3. **使用工具进行调试**:可以使用调试工具来跟踪任务树的构建过程,找出具体是哪个任务导致了循环引用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__night_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值