1.11月4日的贪心记录与总结(见博客) 2.终于结束的起点: 更新fib时若数据过大,只需要记录3个变量来计算某一位fib值 注意fib很容易爆掉,一定开long long,且取模运算见代码,防止溢出(题目要求取模) 3.关于字符串的一些操作: 1.map:做了潜伏者:map一个经常在字符串中的用途就是作为bool的出现,起到和哈希一样的作用。 (然而本人哈希并不熟练,且map操作简便,虽然慢,但考场将优先选择) 注意使用细节:map<string,bool>vis; vis[s]=1; 易错:map<string,bool>vis[maxn]直接定义vis即可,这是一个集合(关联式容器) 2.substr:做了“字串变换”:substr在拼接问题中使用:string kk=str.substr(0,i); 你可以获取字符串str从0位置 到i-1位置的字串,这个字串由kk记录保存。string kk=str.substr(i);你可以获取字符串str从i位置到长度 结尾的子串,并由kk来记录并保存。 Tip:关于具体的字符串拼接问题见该题面: 1.你可以学到字符串若想直接拼接:ans+=str.substr(0,i);其实就是在ans的尾部街上新的构造子串 2.关于如何拼接:(题面)串a,串b。你需要通过下列操作将a变为b 下列将有诸多的操作:对于每个操作,你可以将子串1转化成子串2 所以关键在于如何模拟拼接:即对于a的每一个位置判断,是否可以进行诸多操作中的一种 之后再搜索 3.关于本题的搜索选择 以及 bfs的new剪枝: 本题要求找到最短的转化次数->就是bfs @@@@@@:请仔细思考,这就是最短路问题。你很难用dfs来实现,已经写过实现不了 本题用到了bfs剪枝:如果当前状态的子串已经存在过了就返回上一个状态 4.关于本题一定注意学到了最重要的知识时不定向读入: while(cin>>a[n]>>b[n]) n++; 其他形式会读入不全或读入错误,你可能觉得不可思议: n=0; while(cin>>a[++n]>>b[n]); or while(cin>>a[n++]>>b[n]); 但这样写就是会读入错误 5.在bfs过程中使用了结构体对列,因为我们需要知道某一个子串,变化到这一步所需要的步数。这其实大大帮助我们存储更多的变量与参数 3.要求:复习单词接龙
11月4日学习记录
猜你喜欢
转载自www.cnblogs.com/79707536wc/p/9911429.html
今日推荐
周排行