摘要: 题意: 取一字符串不相交的前缀和后缀(可为空)构成最长回文串。 思路: 先从两边取对称的前后缀,之后再取余下字符串较长的回文前缀或后缀。 #include <bits/stdc++.h> using namespace std; string Manacher(const string &s){ s 阅读全文
posted @ 2020-03-20 10:59 Kanoon 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 题意: 取一字符串不相交的前缀和后缀(可为空)构成最长回文串。 思路: 先从两边取对称的前后缀,之后再取余下字符串较长的回文前缀或后缀。 #include <bits/stdc++.h> using namespace std; bool ok(const string &s,int l,int r 阅读全文
posted @ 2020-03-20 01:30 Kanoon 阅读(526) 评论(3) 推荐(0) 编辑
摘要: 题意: 给你 n 长全排列的一种情况,将其分为 k 份,取每份中的最大值相加,输出和的最大值和有多少种分法等于最大值。 思路: 取前 k 大值,储存下标,每两个 k 大值间有 vi+1 - vi 种分法,相乘即可。 #include <bits/stdc++.h> using namespace s 阅读全文
posted @ 2020-03-20 01:24 Kanoon 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 题意: 有数组 an,定义 xi 为 a 的前 i - 1 位的最大值(x0 = 0),定义 bi 为 ai - xi,给出数组 bn,还原数组 an。 思路: 因为 x0 = 0,所以 b0 = a0,之后维护最大值即可。 #include <bits/stdc++.h> using namesp 阅读全文
posted @ 2020-03-20 01:17 Kanoon 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你一个 n,输出一个 n 位不含 0 且不被任一位整除的正数。 思路: 构造 233 或 899。 #include <bits/stdc++.h> using namespace std; void solve(){ int n;cin>>n; if(n==1) cout<<"-1\n" 阅读全文
posted @ 2020-03-20 01:11 Kanoon 阅读(253) 评论(0) 推荐(0) 编辑