ACM集训日记-8月5日

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

    今天的第一道题是点击打开链接,一开始我还没有意识到这是一个怎么样地题目,以为每个频道字母:后面的字母只要不一样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;
}

    今天第二道题点击打开链接,这道题难了我好久,一开始我看到求最少步数,想也没想就广搜了,但是由于地图是会变化的,然后就做不下去了,只好用深搜先弄出所有情况,再将最少步数比较出来,有点比较坑的地方就是输入唱和宽的时候是和行列反着来的,强迫症以前做习惯了先输入行再输入列的习惯,一开始还有点没转过弯来···

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值