动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说法对这N
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 19:32:05
![动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说法对这N](/uploads/image/z/13930798-22-8.jpg?t=%E5%8A%A8%E7%89%A9%E7%8E%8B%E5%9B%BD%E4%B8%AD%E6%9C%89%E4%B8%89%E7%B1%BB%E5%8A%A8%E7%89%A9A%2CB%2CC%2C%E8%BF%99%E4%B8%89%E7%B1%BB%E5%8A%A8%E7%89%A9%E7%9A%84%E9%A3%9F%E7%89%A9%E9%93%BE%E6%9E%84%E6%88%90%E4%BA%86%E6%9C%89%E8%B6%A3%E7%9A%84%E7%8E%AF%E5%BD%A2.A%E5%90%83B%2CB%E5%90%83C%2CC%E5%90%83A.%E7%8E%B0%E6%9C%89N%E4%B8%AA%E5%8A%A8%E7%89%A9%2C%E4%BB%A51%EF%BC%8DN%E7%BC%96%E5%8F%B7.%E6%AF%8F%E4%B8%AA%E5%8A%A8%E7%89%A9%E9%83%BD%E6%98%AFA%2CB%2CC%E4%B8%AD%E7%9A%84%E4%B8%80%E7%A7%8D%2C%E4%BD%86%E6%98%AF%E6%88%91%E4%BB%AC%E5%B9%B6%E4%B8%8D%E7%9F%A5%E9%81%93%E5%AE%83%E5%88%B0%E5%BA%95%E6%98%AF%E5%93%AA%E4%B8%80%E7%A7%8D.%E6%9C%89%E4%BA%BA%E7%94%A8%E4%B8%A4%E7%A7%8D%E8%AF%B4%E6%B3%95%E5%AF%B9%E8%BF%99N)
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说法对这N
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A.
现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.
有人用两种说法对这N个动物所构成的食物链关系进行描述:
第一种说法是"1 X Y",表示X和Y是同类.
第二种说法是"2 X Y",表示X吃Y.
此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的.当一句话满足下列三条之一时,这句话就是假话,否则就是真话.
1) 当前的话与前面的某些真的话冲突,就是假话;
2) 当前的话中X或Y比N大,就是假话;
3) 当前的话表示X吃X,就是假话.
你的任务是根据给定的N(1 >x>>y;
\x05\x05 if(x>n || y>n)
\x05\x05 {
\x05\x05\x05 count++;
\x05\x05\x05 continue;
\x05\x05 }
\x05\x05 switch(d)
\x05\x05 {
\x05\x05 case 1:
\x05\x05\x05 if(find(x)==find(y)){
\x05\x05\x05\x05 if(r[x]!=r[y])
\x05\x05\x05\x05\x05 count++;
\x05\x05\x05 }
\x05\x05\x05 else
\x05\x05\x05\x05 merge(x,y,0);
\x05\x05\x05 break;
\x05\x05 case 2:
\x05\x05\x05 if(find(x)==find(y) ){
\x05\x05\x05\x05 if(r[x] = (r[y]+1)%3)
\x05\x05\x05\x05\x05 count++;
\x05\x05\x05 }
\x05\x05\x05 else
\x05\x05\x05\x05 merge(x,y,1);
\x05\x05\x05 break;
\x05\x05 }
\x05 }
\x05 cout
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说法对这N
您的算法写的不对……
并查集:
三个集合{元素|1~3*n}其中对于任意一个集合,集合中元素(1~n)吃(n+1~2*n),(n+1~2*n)吃(2*n+1~3*n),(2*n+1~3*n)吃(1~n).
对于x和y 是同类.并且x和y不再一个结合的情况下,判断(y+n)、(y+2n)是否和x在一个集合,若都不是,那么(x,y)并成一个集合.(x+n,y+n)并成一个集合.(x+2*n,y+2*n)并成一个集合.
对于x 吃 y.如果x 和 (y+n)不再一个结合的情况下,判断 y、(y+2*n) 是否和 x 是在一个集合,若都不是,那么(x,y+n)并成一个集合.(x+n,y+2*n)并成一个集合.(x+2*n,y)并成一个集合.