本周看老师发的搜索的题目,一共看懂了25个题,并根据自己的理解写出一句话题意,感觉其中的很多题都一样,思路解法都差不多,只是在原有的解法中加入该题的条件和限制。另外还有4道题题看了很多遍也看不懂什么意思,于是就标记了下来。另外对于文章,看了关于以前看搜索记下来的不懂的文章和这25道题目中涉及到的一些其他词的含义和这些题答案中涉及到自己看不懂的一段代码的意思比如:n&(1<<i)的含义。
举个例子来体现出搜索算法的用途
P1294 高手去散步
因为起点和终点一样,起点任意,不能走重复路线,如图所示
开始1-2-3-4-1,1-2-3-1,1-2-4-1,1-2-4-3-1 一直循环回溯,找出最大数值。对于其他类搜索题目感觉都差不多,先按照一种方式搜索,让后回溯,也可加入小剪枝,减少代码运行时间。
对于搜索算法我现在只能想到和剪枝还有回溯在一起使用。
搜索对于我的感受就是:对多条绳尾部进行欣赏,满意保存下来,不满意就截取尾部看自己的心情进行处理。
以下内容和搜索无关,只是自己对Codeforces中这周的两场比赛的算是总结吧
第一场A出一道题,这个题让我明白了任意输出一种结果的真正含义,这题答案
#include<bits/stdc++.h>
using namespace std;
int num[40000];
int main()
{
int t,n;
cin>>t;
for(int i=0;i<t;i++)
{
cin>>n;
num[1+4*i]=1;num[2+4*i]=n-3;num[3+4*i]=1;num[4+4*i]=1;
}
for(int i=1;i<=4*t;i++)
{
cout<<num[i]<<" ";
if(i%4==0)
cout<<endl;
}
return 0;
}
输出结果
虽然输出结果和题中的不一样,但这也对。
第二场没做出来一道,虽然结果和答案一样,但是显示测试错误,虽然生气,但感觉还是自己菜。
继续努力吧,别让我逮到下次一道题也没A出来的时候。