ACM集训日记-8月5日

来源:互联网 发布:淘宝客 traceid 编辑:程序博客网 时间:2024/05/23 12:25

    今天又是只出了两道题(烦),算了算,接下来每天还要出三道题才能在最后一天完成···加把劲吧

    今天的第一道题是点击打开链接,一开始我还没有意识到这是一个怎么样地题目,以为每个频道字母:后面的字母只要不一样channel就加一,然后这道题第一次wa就轻易地送了出去,然后上网搜了搜资料,发现这种题目是一种类似于涂色的问题(参考博客点击打开链接又学到了新知识~),相邻的颜色不同最多只用花4种颜色,相应的,这道题就是一个模子,最多只用花4种频道,就能满足条件

int judge(int x,int channel)//判断在x处使用频道channel是否满足条件{    for(int i=0;i<n;i++)    {        if(maps[x][i])//用maps来存储        {            if(cha[i]&&cha[i]==channel)return 0;        }    }    return 1;}int dfs(int num,int chan) //判断从第num个点开始,到最后一个点只用chan个频道,正确返回1,否则返回0{    if(num>n)return 1;    for(int i=num-1;i<n;i++)    {        if(!vis[i])        {            vis[i]=1;            for(int j=1;j<=chan;j++)            {                if(judge(i,j))                {                    cha[i]=j;                    if(dfs(num+1,chan))return 1;                }            }            vis[i]=0;        }    }    return 0;}
    今天第二道题点击打开链接,这道题难了我好久,一开始我看到求最少步数,想也没想就广搜了,但是由于地图是会变化的,然后就做不下去了,只好用深搜先弄出所有情况,再将最少步数比较出来,有点比较坑的地方就是输入唱和宽的时候是和行列反着来的,强迫症以前做习惯了先输入行再输入列的习惯,一开始还有点没转过弯来···

   虽然跟那些排名靠前的相比,我还是太菜了,每天一小点进步,也是进步嘛,加油。