H. Palindromic Cut(思维,分类暴力)
发布日期:2021-06-30 10:17:57 浏览次数:2 分类:技术文章

本文共 1440 字,大约阅读时间需要 4 分钟。

感觉自己思路还行,分类也很清晰

直接枚举每个回文串最大的长度i,从n枚举到1

设 输 入 的 字 符 为 奇 数 的 有 j i 个 , 命 名 为 设输入的字符为奇数的有ji个,命名为 ji,奇数字符

否则命名为偶数字符

Ⅰ . 显 然 , n % i = = 0 Ⅰ.显然,n\%i==0 .,n%i==0

Ⅱ . 当 i 是 偶 数 , 那 么 每 个 回 文 串 不 允 许 出 现 单 独 的 字 符 , 所 以 如 果 有 某 个 字 符 单 独 出 过 就 不 行 , 否 则 可 以 Ⅱ.当i是偶数,那么每个回文串不允许出现单独的字符,所以如果有某个字符单独出过就不行,否则可以 .i,,,

Ⅲ . 当 i 是 奇 数 , 有 n / i 个 回 文 串 , 所 以 奇 数 字 符 要 小 于 n / i 个 才 行 Ⅲ.当i是奇数,有n/i个回文串,所以奇数字符要小于n/i个才行 .i,n/i,n/i

现 在 还 有 n / i − j i 个 串 没 分 配 到 单 独 的 字 符 , 需 要 那 些 偶 数 字 符 去 拆 成 两 个 填 充 现在还有n/i-ji个串没分配到单独的字符,需要那些偶数字符去拆成两个填充 n/iji,

所 以 此 时 应 该 满 足 ( n / i − j i ) % 2 = = 0 才 行 所以此时应该满足(n/i-ji)\%2==0才行 (n/iji)%2==0

#include 
using namespace std;const int maxn=4e5+10;int n,m,a[maxn],ji;string s;int transfrom(char s){ if(s>='a'&&s<='z') return s-'a';//[0,25] else if(s>='A'&&s<='Z') return s-'A'+26;//[26,51] else return s-'0'+52;}char reist(int s){ if(s>=0&&s<=25) return char('a'+s); else if(s>=26&&s<=51) return char('A'+s-26); else return char(s-52+'0'); }char find(){ for(int i=0;i<=61;i++) if(a[i]>=2) { a[i]-=2; return reist(i); }}string my_reverse(string s){ string now=""; for(int i=s.length()-1;i>=0;i--) now+=s[i]; return now;}void run_even(int x){ cout<
> n >> s; for(int i=0;i
=1;i--)//枚举每个回文串的长度 { if( n%i!=0 ) continue;//一定要整除 if( i%2==0 ) continue;//偶数情况上面已经考虑过了 if( n/i

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/107206411 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:B. Tell Your World(map暴力或思维)
下一篇:A. Fair(多源bfs)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月17日 21时39分05秒