精华内容
下载资源
问答
  • 【算法与数据结构】—— 并

    万次阅读 多人点赞 2020-03-26 20:29:47
    集 概念: 并集由一个整型数组pre[]和两个函数find()、join()构成 数组pre[]记录了每个点的前导点是什么,函数find()用于查找,函数join(x,y)用于合并 作用: 并集的主要作用是求连通分支数(如果一个图中...

    并查集



    1. 概论

    定义:
    并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。

    主要构成:
    并查集主要由一个整型数组pre[ ]和两个函数find( )、join( )构成。
    数组 pre[ ] 记录了每个点的前驱节点是谁,函数 find(x) 用于查找指定节点 x 属于哪个集合,函数 join(x,y) 用于合并两个节点 x 和 y 。

    作用:
    并查集的主要作用是求连通分支数(如果一个图中所有点都存在可达关系(直接或间接相连),则此图的连通分支数为1;如果此图有两大子图各自全部可达,则此图的连通分支数为2……)




    2. 并查集的现实意义

    故事引入:
    话说在江湖中散落着各式各样的大侠,他们怀揣着各自的理想和信仰在江湖中奔波。或是追求武林至尊,或是远离红尘,或是居庙堂之高,或是处江湖之远。尽管大多数人都安分地在做自己,但总有些人会因为彼此的信仰不同而聚众斗殴。因此,江湖上常年乱作一团,纷纷扰扰。
    这样长期的混战,难免会打错人,说不定一刀就把拥有和自己相同信仰的队友给杀了。这该如何是好呢?于是,那些有着相同信仰的人们便聚在一起,进而形成了各种各样的门派,比如我们所熟知的“华山派”、“峨嵋派”、“,崆峒派”、“少林寺”、“明教”……这样一来,那些有着相同信仰的人们便聚在一起成为了朋友。以后再遇到要打架的事时,就不会打错人了。
    江湖门派
    但是新的问题又来了,原本互不相识的两个人如何辨别是否共属同一门派呢?
    这好办!我们可以先在门派中选举一个“大哥”作为话事人(也就是掌门人,或称教主等)。这样一来,每当要打架的时候,决斗双方先自报家门,说出自己所在门派的教主名称,如果名称相同,就说明是自己人,就不必自相残杀了,否则才能进行决斗。于是,教主下令将整个门派划分为三六九等,使得整个门派内部形成一个严格的等级制度(即树形结构)。教主就是根节点,下面分别是二级、三级、……、N级队员。每个人只需要记住自己的上级名称,以后遇到需要辨别敌友的情况时,只需要一层层往上询问(网上询问)就能知道是否是同道中人了。
    等级划分
    数据结构的角度来看:
    由于我们的重点是在关注两个人是否连通,因此他们具体是如何连通的,内部结构是怎样的,甚至根节点是哪个(即教主是谁),都不重要。所以并查集在初始化时,教主可以随意选择(就不必再搞什么武林大会了),只要能分清敌友关系就行。

    备注:上面所说的“教主”在教材中被称为“代表元”。
    即:用集合中的某个元素来代表这个集合,则该元素称为此集合的代表元。




    3. find( )函数的定义与实现

    故事引入:
    子夜,小昭于骊山下快马送信,发现一头戴竹笠之人立于前方,其形似黑蝠,倒挂于树前,甚惧,正系拔剑之时,只听四周悠悠传来:“如此夜深,姑凉竟敢擅闯明教,何不下坐陪我喝上一盅?”。小昭听闻,后觉此人乃明教四大护法之一的青翼蝠王韦一笑,答道:“在下小昭,乃紫衫龙王之女”。蝠王轻惕,急问道:“尔等既为龙王之女,故同为明教中人。敢问阁下教主大名,若非本教中人,于明教之地肆意走动那可是死罪!”。小昭吓得赶紧打了个电话问龙王:“龙王啊,咱教主叫啥名字来着?”,龙王答道:“吾教主乃张无忌也!”,小昭遂答蝠王:“张无忌!”。蝠王听后,抱拳请礼以让之。
    在上面的情境中,小昭向他的上级(紫衫龙王)请示教主名称,龙王在得到申请后也向他的上级(张无忌)请示教主名称,此时由于张无忌就是教主,因此他直接反馈给龙王教主名称是“张无忌”。同理,青翼蝠王也经历了这一请示过程。
    在并查集中,用于查询各自的教主名字的函数就是我们的find()函数。find(x)的作用是用于查找某个人所在门派的教主,换言之就是用于对某个给定的点x,返回其所属集合的代表。

    实现:
    首先我们需要定义一个数组:int pre[1000]; (数组长度依题意而定)。这个数组记录了每个人的上级是谁。这些人从0或1开始编号(依题意而定)。比如说pre[16]=6就表示16号的上级是6号。如果一个人的上级就是他自己,那说明他就是教主了,查找到此结束。也有孤家寡人自成一派的,比如欧阳锋,那么他的上级就是他自己。
    每个人都只认自己的上级。比如小昭只知道自己的上级是紫衫龙王。教主是谁?不认识!要想知道自己教主的名称,只能一级级查上去。因此你可以视find(x)这个函数就是找教主用的。
    下面给出这个函数的具体实现:

    int find(int x)					//查找x的教主
    {
    	while(pre[x] != x)			//如果x的上级不是自己(则说明找到的人不是教主)
    		x = pre[x];				//x继续找他的上级,直到找到教主为止
    	return x;					//教主驾到~~~
    }
    



    4. join( )函数的定义与实现

    故事引入:
    虚竹和周芷若是我个人非常喜欢的两个人物,他们的教主分别是玄慈方丈和灭绝师太,但是显然这两个人属于不同门派,但是我又不想看到他们打架。于是,我就去问了下玄慈和灭绝:“你看你们俩都没头发,要不就做朋友吧”。他们俩看在我的面子上同意了,这一同意非同小可,它直接换来了少林和峨眉的永世和平。

    实现:
    在上面的情景中,两个已存的不同门派就这样完成了合并。这么重大的变化,要如何实现?要改动多少地方?其实很简单,我对玄慈方丈说:“大师,麻烦你把你的上级改为灭绝师太吧。这样一来,两派原先所有人员的教主就都变成了师太,于是下面的人们也就不会打起来了!反正我们关心的只是连通性,门派内部的结构不要紧的”。玄慈听后立刻就不乐意了:“我靠,凭什么是我变成她手下呀,怎么不反过来?我抗议!”。抗议无效,我安排的,最大。反正谁加入谁效果是一样的,我就随手指定了一个,join()函数的作用就是用来实现这个的。

    join(x,y)的执行逻辑如下:
    1、寻找 x 的代表元(即教主);
    2、寻找 y 的代表元(即教主);
    3、如果 x 和 y 不相等,则随便选一个人作为另一个人的上级,如此一来就完成了 x 和 y 的合并。
    下面给出这个函数的具体实现:

    void join(int x,int y)                     //我想让虚竹和周芷若做朋友
    {
        int fx=find(x), fy=find(y);            //虚竹的老大是玄慈,芷若MM的老大是灭绝
        if(fx != fy)                           //玄慈和灭绝显然不是同一个人
            pre[fx]=fy;                        //方丈只好委委屈屈地当了师太的手下啦
    }
    



    5. 路径压缩算法之一(优化find( )函数)

    问题引入:
    前面介绍的 join(x,y) 实际上为我们提供了一个将不同节点进行合并的方法。通常情况下,我们可以结合着循环来将给定的大量数据合并成为若干个更大的集合(即并查集)。但是问题也随之产生,我们来看这段代码:

    if(fx != fy)  
    	pre[fx]=fy;
    

    这里并没有明确谁是谁的前驱(上级)的规则,而是我直接指定后面的数据作为前面数据的前驱(上级)。那么这样就导致了最终的树状结构无法预计,即有可能是良好的 n 叉树,也有可能是单支树结构(一字长蛇形)。试想,如果最后真的形成单支树结构,那么它的效率就会及其低下(树的深度过深,那么查询过程就必然耗时)。
    而我们最理想的情况就是所有人的直接上级都是教主,这样一来整个树的结构就只有两级,此时查询教主只需要一次。因此,这就产生了路径压缩算法。
    设想这样一个场景:两个互不相识的大将夏侯惇和许褚碰面了,他们都互相看不惯,想揍对方。于是按照江湖规矩,先打电话问自己的上级:“你是不是教主?” 上级说:“我不是呀,我的上级是***,我帮你问一下。” 就这样两个人一路问下去,直到最终发现他们的教主都是曹操。具体结构如下:
    找掌门人
    “失礼失礼,原来是自己人,在下军机处前将军夏侯惇!”
    “幸会幸会,不打不相识嘛,在下军情处上将许褚!”
    紧接着,两人便高高兴兴地手拉手喝酒去了。
    “等等等等,两位同学请留步,还有事情没完成呢!”我叫住他俩:“还要做路径压缩!”
    两人醒悟,夏侯惇赶紧打电话给他的上级郭嘉:“军师啊,我查过了,我们的教主都是曹丞相。不如我们直接拜在丞相手下吧,省得级别太低,以后找起来太麻烦。”郭嘉答道:“所言甚是” 。
    许褚接着也打电话给刚才拜访过的荀彧,做了同样的事。于是此时,整个曹操阵营的结构如下所示:
    路径压缩
    这样一来,在刚才查询过程中涉及到的人物就都聚集在了曹操的直接领导下,以后再需要查询教主名称的时候,就只需要询问一级便可得到。所以,在经过一次查询后,整个门派树的高度都将大大降低,路径压缩所实现的功能就是这么个意思。

    实现:
    从上面的查询过程中不难看出,当从某个节点出发去寻找它的根节点时,我们会途径一系列的节点(比如上面的例子中,从夏侯惇→郭嘉→曹植→曹操),在这些节点中,除了根节点外(即曹操),其余所有节点(即夏侯惇、郭嘉、曹植)都需要更改直接前驱为曹操。
    因此,基于这样的思路,我们可以通过递归的方法来逐层修改返回时的某个节点的直接前驱(即pre[x]的值)。简单说来就是将x到根节点路径上的所有点的pre(上级)都设为根节点。下面给出具体的实现代码:

    int find(int x)     				//查找结点 x的根结点 
    {
        if(pre[x] == x) return x;		//递归出口:x的上级为 x本身,即 x为根结点        
        return pre[x] = find(pre[x]);	//此代码相当于先找到根结点 rootx,然后pre[x]=rootx 
    }
    

    该算法存在一个缺陷:只有当查找了某个节点的代表元(教主)后,才能对该查找路径上的各节点进行路径压缩。换言之,第一次执行查找操作的时候是实现没有压缩效果的,只有在之后才有效。




    6. 路径压缩算法之二(加权标记法)

    备注:
    不要一看到“加权标记”这种比较高大上的名词就害怕,其实他也是属于路径压缩算法,不同的是其思想更加高级(更不容易想到)罢了。不过我还是说一下,掌握了前面几点内容就能应对绝大多数ACM问题,下面的“加权标记法”供有兴趣的同学学习交流。

    主要思路:
    加权标记法需要将树中所有节点都增设一个权值,用以表示该节点所在树中的高度(比如用rank[x]=3表示 x 节点所在树的高度为3)。这样一来,在合并操作的时候就能通过这个权值的大小来决定谁当谁的上级(玄慈哭了:“正义终会来到,但永不会缺席”)。
    在合并操作的时候,假设需要合并的两个集合的代表元(教主)分别为 x 和 y,则只需要令pre[x] = y 或者pre[y] = x 即可。但我们为了使合并后的树不产生退化(即:使树中左右子树的深度差尽可能小),那么对于每一个元素 x ,增设一个rank[x]数组,用以表达子树 x 的高度。在合并时,如果rank[x] < rank[y],则令pre[x] = y;否则令pre[y] = x。
    举个例子,我们对以A,F为代表元的集合进行合并操作(如下图所示):
    路径压缩
    由于rank(A) > rank(F) ,因此令pre[F]= A。合并后的图形如下图所示:
    路径压缩
    可以看出,合并前两个树的最大高度为3,合并后依然是3,这也就达到了我们的目的。但如果令pre[A]= F,那么就会使得合并后的树的总高度增加,这里我就不上图了,同学们不信可以自己画出来看看。
    我们常说,鱼和熊掌不可兼得,同理,时间复杂度和空间复杂度也很难兼得。由于给每个节点都增加了一个权值来标记其在树中的高度,这也就意味着需要额外的数据结构来存放权重信息,所以这将导致额外的空间开销。

    实现:
    加权标记法的核心在于对rank数组的逻辑控制,其主要的情况有:
    1、如果rank[x] < rank[y],则令pre[x] = y;
    2、如果rank[x] == rank[y],则可任意指定上级;
    3、如果rank[x] > rank[y],则令pre[y] = x;
    在实际写代码时,为了使代码尽可能简洁,我们可以将第1点单独作为一个逻辑选择,然后将2、3点作为另一个选择(反正第2点任意指定上级嘛),所以具体的代码如下:

    void union(int x,int y)
    {
        x=find(x);							//寻找 x的代表元
        y=find(y);							//寻找 y的代表元
        if(x==y) return ;					//如果 x和 y的代表元一致,说明他们共属同一集合,则不需要合并,直接返回;否则,执行下面的逻辑
        if(rank[x]>rank[y]) pre[y]=x;		//如果 x的高度大于 y,则令 y的上级为 x
        else								//否则
        {
            if(rank[x]==rank[y]) rank[y]++;	//如果 x的高度和 y的高度相同,则令 y的高度加1
            pre[x]=y;						//让 x的上级为 y
        }
    }
    



    7. 总结

    1、用集合中的某个元素来代表这个集合,则该元素称为此集合的代表元;
    2 、一个集合内的所有元素组织成以代表元为根的树形结构;
    3 、对于每一个元素 x,pre[x] 存放 x 在树形结构中的父亲节点(如果 x 是根节点,则令pre[x] = x);
    4 、对于查找操作,假设需要确定 x 所在的的集合,也就是确定集合的代表元。可以沿着pre[x]不断在树形结构中向上移动,直到到达根节点。
    因此,基于这样的特性,并查集的主要用途有以下两点:
    1、维护无向图的连通性(判断两个点是否在同一连通块内,或增加一条边后是否会产生环);
    2、用在求解最小生成树的Kruskal算法里。


    一般来说,一个并查集对应三个操作:
    1、初始化( Init()函数 )
    2、查找函数( Find()函数 )
    3、合并集合函数( Join()函数 )


    下面给出上述所有内容的代码汇总:

    const int  N=1005					//指定并查集所能包含元素的个数(由题意决定)
    int pre[N];     					//存储每个结点的前驱结点 
    int rank[N];    					//树的高度 
    void init(int n)     				//初始化函数,对录入的 n个结点进行初始化 
    {
        for(int i = 0; i < n; i++){
            pre[i] = i;     			//每个结点的上级都是自己 
            rank[i] = 1;    			//每个结点构成的树的高度为 1 
        } 
    }
    int find(int x)     	 		    //查找结点 x的根结点 
    {
        if(pre[x] == x) return x;  		//递归出口:x的上级为 x本身,则 x为根结点 
        return find(pre[x]); 			//递归查找 
    } 
     
    int find(int x)     				//改进查找算法:完成路径压缩,将 x的上级直接变为根结点,那么树的高度就会大大降低 
    {
        if(pre[x] == x) return x;		//递归出口:x的上级为 x本身,即 x为根结点 
        return pre[x] = find(pre[x]);   //此代码相当于先找到根结点 rootx,然后 pre[x]=rootx 
    } 
    
    bool isSame(int x, int y)      		//判断两个结点是否连通 
    {
        return find(x) == find(y);  	//判断两个结点的根结点(即代表元)是否相同 
    }
    
    bool join(int x,int y)
    {
        x = find(x);						//寻找 x的代表元
        y = find(y);						//寻找 y的代表元
        if(x == y) return false;			//如果 x和 y的代表元一致,说明他们共属同一集合,则不需要合并,返回 false,表示合并失败;否则,执行下面的逻辑
        if(rank[x] > rank[y]) pre[y]=x;		//如果 x的高度大于 y,则令 y的上级为 x
        else								//否则
        {
            if(rank[x]==rank[y]) rank[y]++;	//如果 x的高度和 y的高度相同,则令 y的高度加1
            pre[x]=y;						//让 x的上级为 y
    	}
    	return true;						//返回 true,表示合并成功
    }
    



    趁热打铁!!!
    下面给出两道涉及到并查集知识的典型例题(含题解),请同学们务必练习下:
    蓝桥杯 历届试题 合根植物
    蓝桥杯 历届试题 国王的烦恼




    展开全文
  • 在线Q绑在线查询源码带接口

    万次阅读 2021-04-15 16:11:46
    介绍: QQ绑定手机号查询源码 在线Q绑在线查询源码带接口 网盘下载地址: http://kekewl.cc/9vayoxPNGUg 图片:

    介绍:

    QQ绑定手机号查询源码 在线Q绑在线查询源码带接口


    网盘下载地址:

    http://kekewl.cc/9vayoxPNGUg


    图片:


    展开全文
  • SQL查询最大值,返回整行数据

    万次阅读 多人点赞 2019-06-21 20:05:09
    SQL查询最大值,返回整行数据 1、问题 部分数据如下,未完整展示。如何从 table_a 表中查询 p_postions 列的最大值对应的一行数据? 在这里插入图片描述 2、解答 ...方法2:先最大值,再找到对应行

    SQL查询最大值,返回整行数据

    1、问题

    部分数据如下,未完整展示。如何从 table_a 表中查询 p_postions 列的最大值对应的一行数据?
    在这里插入图片描述

    2、解答

    方法1:先排序,再取第一条

    SELECT * FROM table_a order by p_postions desc limit 1;
    

    查询结果如下:
    在这里插入图片描述
    经过评论区小伙伴的提醒,这种先排序的方式虽然语法简单,但时间复杂度较高,是 O(n*logn)。所以我们来看第二种方法。

    方法2:先查最大值,再找到对应行(推荐)

    参考:https://stackoverflow.com/questions/8387587/selecting-a-record-with-max-value

    这是一种时间复杂度为 O(n) 的方法:

    SELECT 
        *
    FROM
        table_a
    WHERE
        p_postions = (SELECT MAX(p_postions) FROM table_a)
    LIMIT 1;
    
    展开全文
  • 没有团员证,怎么查询入团时间?

    万次阅读 2020-05-28 18:25:54
    1. 打开网上共青团官网,https://zhtj.youth.cn/zhtj/signin; 2. 登录账号为身份证号,默认密码为身份证后8位; 3. 登录后,点击左侧【我的首页】,而后点击如下图所示的【查看】... ...4. 而后方可查询入团时间。......

    1. 打开网上共青团官网,https://zhtj.youth.cn/zhtj/signin

    2. 登录账号为身份证号,默认密码为身份证后8位

    3. 登录后,点击左侧【我的首页】,而后点击如下图所示的【查看】;

    4. 如下图所示,可查询入团时间。

     

    展开全文
  • C#类库查询手册

    千次下载 热门讨论 2013-04-14 13:00:04
    C#类库查询手册 PDF格式,带目录,800页,很全。
  • 注释:输入姓名或shen/份证号就可以到一个人的失信记录,借钱之前查看是否是老赖! 全国标准信息公共服务平台 访问网址:http://www.std.gov.cn 注释:我们生活中各行各业的行业标准,包括行业标准、团体标准、...
  • 这篇文章主要讲解后端对数据库的增删改,大致实现所需要提供的接口。
  • IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以...你有没有发现,你每次使用ipconfig到的地址,要么就是172....
  • 集基础

    万次阅读 多人点赞 2018-06-09 17:21:56
    集 是一种树型的数据结构,用于处理一些不相加集合的合并和查询问题。在使用中常常以森林来表示。 并集也是用来维护集合的,和前面学习的set不同之处在于,并集能很方便地同时维护很多集合。如果用set来维护会...
  • 集——你一看就明白就会用

    万次阅读 2021-01-09 20:12:11
    针对于并集,我选的是力扣547——省份数量。这里先给大家一个截图: 针对于这种相连与否的问题,应该想到并集的方法。 相信这个时候的你已经看完我给你的CSDN博文链接,这样的话,看下面的模板应该会很...
  • Mysql实现查询5分钟之前的数据

    万次阅读 热门讨论 2019-09-24 14:18:24
    在做交易项目的时候需要一个定时补偿来把交易异常失败但是能继续跑的交易继续跑下去,要求是5分钟跑一次程序,逻辑比较简单,就贴一个查询语句吧 SELECT * FROM 表名 t WHERE 条件一 AND 条件二 ...
  • 在实现简单网页上对数据内容进行增删改,需要用到三个部分,分别是jsp网页部分+java后台部分+数据库表 我用一个新闻的例子来实现,首先编写java后台程序 java后台程序: 我们用三层的模式进行设计:分别是...
  • 7个必备网站,征信、三无产品、老赖、犯罪记录! 网站介绍 1、全国企业信用信息公示系统:http://www.gsxt.gov.cn/index.html 介绍:毕业学生找工作不知道公司靠不靠谱,可以上这里查询面试公司是不是正规...
  • int find (int x) { return x == pre[x] ? x : find(pre[x]); } void merge(int x, int y) { int rx = find(x), ry = find(y); pre[ry] = rx; }
  • 准率与全率

    万次阅读 多人点赞 2018-07-16 16:27:58
    一、理解准率(precision)& 全率(recall) 我们在平时常用到的模型评估指标是精度(accuracy)和错误率(error rate),错误率是:分类错误的样本数站样本总数的比例,即E=n/m(如果在m个样本中有n个样本...
  • 带权并

    万次阅读 多人点赞 2018-09-02 16:03:09
    带权并集需要先理解一般的并集,不明白的可自行先搜索有关内容 一般的并集主要记录节点之间的链接关系,而没有其他的具体的信息,仅仅代表某个节点与其父节点之间存在联系,它多用来判断图的连通性,如下图所...
  • 在科研过程中,我们经常需要查看本篇文章被其他文章如何引用和介绍的,下面做一个详细的教程。 下面第一个例子是在SCI数据库中查询的方法,第二个例子是在谷歌学术中查询的例子。 SCI中查询 ...
  • SQL查询语句、联合查询

    千次阅读 2018-09-12 10:09:13
    第一个表字段)as first left join (第二个表字段) as second on first.一表字段名=second.二表字段名 ) where 条件 举个栗子: select a.name,count(*) as Num from ( (select top 6 name...
  • 比如如图里面的id值,到es去查询第一个查询的出来,第二个查询不出来 !... 请大神帮帮忙,java代码确保没问题,这个两个查询生成es sql除两个id值不一样其他都是是一样的,下面时es索引的配置!... es版本用的时6.4.2
  • 集详解 ——图文解说,简单易懂(转)

    万次阅读 多人点赞 2016-03-10 17:38:08
    集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?) 来看一个...
  • 但是复制执行的sql到数据库查询,却能得到。 这是因为我用手动录入到数据库里,有些字段没有值,是空的。导致hql查询不到数据,手动补上空字段的数据,再次查询就有了。 具体原理还没去研究 ...
  • 扫描二维码成绩查询网址:https://query.ruankao.org.cn/score有两种方式可以成绩PC端口1、按准考证号查询选考试时间(2021年上半年)---输入准考证号-...
  • 集(Union-Find)算法介绍

    万次阅读 多人点赞 2012-06-12 13:57:16
    本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并集的数据结构,称为Union-Find。 更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。 原文中更...
  • spring boot+layui实现增删改实战

    千次阅读 多人点赞 2019-12-24 01:43:23
    我知道很多人都有这个需求,为了使大家快速上手,我把自己写的最实用的增删改案例完整的展示出来。 需要源码的请留下邮箱! Layui官网:https://www.layui.com/doc/ 后台:spring boot2.0,数据的话用的...
  • mysql查询50-100条数据如何查询mysql查询50-100条数据如何查询mysql查询50-100条数据如何查询
  • detail disk查询,出来的是磁盘ID,不是序列号! 其实查询磁盘序列号方式很简单: 1.Win + R打开 “运行” ,在 运行 中输入“cmd”,然后按电脑的回车进入命令行 2.输入命令:wmic diskdrive get serial...
  • iphone IMEI查询完整ID

    千次下载 热门讨论 2014-08-24 14:25:11
    IMEI快速查询苹果完整邮箱ID

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,818,765
精华内容 2,327,506
关键字: