zoukankan      html  css  js  c++  java
  • 关于BFS+异或(C++)

    今天早上,我们做了场比赛,里面有一个题目是这样的。。

    题目大意:

             随着马场的繁荣,出现了越来越多的新马种。种族之间的沟通不畅严重影响了马场的和谐。这时,科学家发明了马语翻译机器人,正好可以解决这一难题。
              机器人有 M 种,每种机器人能完成 K 个马种之间的语言翻译。问,利用这些机器人,能否实现 1 种群和 N 种群的马语翻译。 若可以,找到翻译过程至少需要用到多少种语言。

    解析:

      其实这道题目用最短路跑一片就可以了,无需任何玩意儿。。。。

      但是我还是桀骜不驯,来吧,召唤白番薯(BFS)!!

      其实BFS与最短路(spfa)差不多,但是对于最短路来说,我还是喜欢BFS(因为我背过板子)

    问题:

      初次看这到题目时,我的心里还是有点懵逼。。。。

      

      所以还是要看看标的。。。。

      但是最重要的就是"卢本伟没有扣标!!!!!!!"

      给大家伙们看看我遇到的问题吧:

      

     1 void bfs() 
     2 {
     3     int head = 0,tail = 1;
     4     q[1] = 1; 
     5         vis[1] = 1;
     6     while (head ^ tail) //蓝色
     7     {
     8         int x = q[++head];
     9         for (int j = lnk[x];j;j = nxt[j]) 
    10             if (!vis[son[j]])
    11             {    
    12                 vis[son[j]] = 1;
    13                 dis[son[j]] = dis[x] + 1;
    14                 q[++tail] = son[j];
    15             }
    16     }
    17 }

    就是那蓝蓝的玩意儿!!!!

    那是啥?????

    于是

    一波询问

    终于

    搞懂了

    "Please start your AK show"

    解决:

      先来普及一下异或:

       1 i xor j 

      看这个玩意儿

     诶!!!

      打住!!!

     这可是c++专场,Pascal怎么进来了(快走!!!);

       1 i ^ j 

      这才对!!

      看:

      a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

      如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

      异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不 带进位,所以异或常被认作不进位加法。
      异或略称为XOR、EOR、EX-OR
      程序中有三种演算子:XOR、xor、⊕。
      使用方法如下
      z = x ⊕ y
      z= x xor y
     
    end.
     

      现在到BFS了

        

    1 void BFS()
    2 {
    3        int head=0;
    4        int tail=1;
    5        while(head^tail)
    6       {
    7           //Lazy to write labels...........
    8        }            
    9 }

      一般循环里都是head<tail的

      可是他不是

      我瞬间懵了。。。

      后来才知道

      如果head==tail

      则为FALSE

      不然为

      TRUE

      这我才知道

      相信你也懂了!!!!

      (一直bb)

    最后

      我只想说,作比赛有好多人都预知未来。。。。

      

    bye~~~

  • 相关阅读:
    bzoj4137[FJOI2015]火星商店问题
    HNOI2019游记
    bzoj4785:[ZJOI2017]树状数组:二维线段树
    快速傅里叶变换(FFT)
    动规大总结
    复习动规(4)
    复习动规(3)
    复习动规(2)
    复习动规(1)
    2019CSP-S游记(真)
  • 原文地址:https://www.cnblogs.com/WestJackson/p/11396693.html
Copyright © 2011-2022 走看看