找人做公司网站,个人网站设计分析,重庆新闻联播回看,苏州保洁公司哪家最好1518: 星星点点 时间限制(普通/Java):1000MS/10000MS 内存限制:65536KByte 描述 输入一个由“*”和“.”组成的字符串#xff0c;然后根据规则生成下一行字符串#xff1a; 如果该行的第i和第i1个位置上的符号不同#xff0c;则下一行的第i个位置上为“*”#xff0c;…1518: 星星点点 时间限制(普通/Java):1000MS/10000MS 内存限制:65536KByte 描述 输入一个由“*”和“.”组成的字符串然后根据规则生成下一行字符串 如果该行的第i和第i1个位置上的符号不同则下一行的第i个位置上为“*”否则为“.”其最后一个位置的字符由上一行的第一个和最后一个字符决定。反复应用上述规则足够多次后某行的字符排列可能在以后的行中再次出现或者不会再次出现。找出最近的相同的两行之间相差的行数。 输入 上述字符串长度2L30。 输出 相差的行数即行号相减。 样例输入 .*.***. 样例输出 31 题目来源 ZJGSU 题目链接tzcoder.cn/acmhome/problemdetail.do?methodshowdetailid1518 模拟题按照题目意思模拟将每一个出现的字符串存入map中判断是否出现重复的但用字符串模拟会TLE题目中只有两种字符所以转换成二进制进行模拟根据题目要求提取出转换式子y(((y1)(n-1))|(y1))^y;。 #include string
#include cstdio
#include iostream
#include vector
#include map
#include algorithm
using namespace std;
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);string s;mapint,intm;while(cins){int k0,ns.length(),y0;for(int i0;in;i){if(s[i]*)y|(1i);}//couty ;m.clear();while(1){k;if(m[y])break;m[y]k;y(((y1)(n-1))|(y1))^y;//coutyendl;}//mp[s]k-m[s];coutk-m[y]endl;}
} 转载于:https://www.cnblogs.com/Anidlebrain/p/10028978.html