亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cftree.c~

?? 數據挖掘算法BIRCH源碼 c語言版本。
?? C~
?? 第 1 頁 / 共 2 頁
字號:
tmpent.Init(Stats->Dimension);int i1,j1,imin,jmin;double d, dmin;if (actsize<2) 	print_error("Leaf::ClosestDiffTwo","Less than 2 entries");if (actsize==2) 	{d=distance(Stats->GDtype,entry[0],entry[1]);	 if (d<=0) 	 print_error("Leaf::ClosestDiffTwo",		"Same 2 entries in a leaf: should not happen");	 }dmin = HUGE_DOUBLE;imin=0; jmin=1;for (i1=0;i1<actsize-1;i1++)   for (j1=i1+1;j1<actsize;j1++) {		d = distance(Stats->GDtype,entry[i1],entry[j1]);		if (d>0 && d<dmin) { 			imin = i1; 			jmin = j1; 			dmin = d;			}	}i=imin; j=jmin;tmpent.Add(entry[i],entry[j]);return tmpent.Fitness(Stats->Ftype);}void Leaf::FarthestTwo(Stat *Stats, int &i, int &j) const {int i1,j1,imax,jmax;double d, dmax;if (actsize<2) 	print_error("Leaf::FarthestTwo","Less than 2 entries");if (actsize==2) 	{i=0; j=1; return;}imax = 0; jmax = 1;dmax = distance(Stats->BDtype,entry[0],entry[1]);for (i1=0;i1<actsize-1;i1++)   for (j1=i1+1;j1<actsize;j1++) {		d = distance(Stats->BDtype,entry[i1],entry[j1]);		if (d>dmax) { 			imax = i1; 			jmax = j1; 			dmax = d;}	}i=imax; j=jmax;}double Nonleaf::ClosestTwo(Stat *Stats, int &i, int &j) const {int i1,j1,imin,jmin;double d, dmin;if (actsize<2) 	print_error("Nonleaf::ClosestTwo","Less than 2 entries");if (actsize==2) {	i=0; j=1; 	return distance(Stats->BDtype,entry[0],entry[1]);	}imin = 0; jmin = 1;dmin = distance(Stats->BDtype,entry[0],entry[1]);for (i1=0;i1<actsize-1;i1++)   for (j1=i1+1;j1<actsize;j1++) {		d = distance(Stats->BDtype,entry[i1],entry[j1]);		if (d<dmin) { 			imin = i1; 			jmin = j1; 			dmin = d;			}	}i=imin; j=jmin;return dmin;}double Nonleaf::ClosestDiffTwo(Stat *Stats, int &i, int &j) const {Entry tmpent;tmpent.Init(Stats->Dimension);int i1,j1,imin,jmin;double d, dmin;if (actsize<2) 	print_error("Nonleaf::ClosestDiffTwo","Less than 2 entries");if (actsize==2) {	d=distance(Stats->GDtype,entry[0],entry[1]);	if (d==0) 	print_error("Nonleaf::ClosestDiffTwo",		    "Same 2 entries in a nonleaf: should not happen");	}dmin=HUGE_DOUBLE;imin=0;jmin=1;for (i1=0;i1<actsize-1;i1++)   for (j1=i1+1;j1<actsize;j1++) {		d = distance(Stats->GDtype,entry[i1],entry[j1]);		if (d>0 && d<dmin) { 			imin = i1; 			jmin = j1; 			dmin = d;}	}i=imin; j=jmin;tmpent.Add(entry[i],entry[j]);return tmpent.Fitness(Stats->Ftype);}void Nonleaf::FarthestTwo(Stat *Stats, int &i, int &j) const {int i1,j1,imax,jmax;double d, dmax;if (actsize<2) 	print_error("Nonleaf::FarthestTwo","Less than 2 entries");if (actsize==2) 	{i=0; j=1; return;}imax = 0; jmax = 1;dmax = distance(Stats->BDtype,entry[0],entry[1]);for (i1=0;i1<actsize-1;i1++)   for (j1=i1+1;j1<actsize;j1++) {		d = distance(Stats->BDtype,entry[i1],entry[j1]);		if (d>dmax) { 			imax = i1; 			jmax = j1; 			dmax = d;}	}i=imax; j=jmax;}// follow chain of leavesint Leaf::count_leaf_nodes() const {int num=1;if (this->next!=NULL) num+=this->next->count_leaf_nodes();return num;}int Leaf::count_leaf_entries() const {int num=actsize;if (this->next!=NULL) num+=this->next->count_leaf_entries();return num;}int Leaf::count_leaf_tuples() const {int num=0;for (int i=0; i<actsize; i++) num += entry[i].n;if (this->next!=NULL) num+=this->next->count_leaf_tuples();return num;}void Nonleaf::Print_Tree(short ind, ostream &fo) const {for (int i=0; i<actsize; i++) {	indent(ind,fo); fo<<entry[i]<<endl;	child[i]->Print_Tree(ind+5,fo);	}}void Nonleaf::Print_Tree(short ind, ofstream &fo) const {for (int i=0; i<actsize; i++) {	indent(ind,fo); fo<<entry[i]<<endl;	child[i]->Print_Tree(ind+5,fo);	}}void Leaf::Print_Tree(short ind, ostream &fo) const {for (int i=0; i<actsize; i++) {	indent(ind,fo); fo<<entry[i]<< endl;	}}void Leaf::Print_Tree(short ind, ofstream &fo) const {for (int i=0; i<actsize; i++) {	indent(ind,fo); fo<<entry[i]<<endl;	}}	void Leaf::visualize_leaf_entries(Stat *Stats, ostream &fo) const {if (Stats->Dimension>2) print_error("Nonleaf::Visualize",	    "can't visualize higher than 2 dimensions");int i;Leaf *tmp;tmp=this;while (tmp!=NULL) {    for (i=0; i<tmp->actsize; i++) 	tmp->entry[i].Visualize_Rectangle(fo);    tmp=tmp->next;    }tmp=this;while (tmp!=NULL) {    for (i=0; i<tmp->actsize; i++) 	tmp->entry[i].Visualize_Circle(fo);    tmp=tmp->next;    }}void Leaf::visualize_leaf_entries(Stat *Stats, ofstream &fo) const {if (Stats->Dimension>2) print_error("Nonleaf::Visualize",	    "can't visualize higher than 2 dimensions");int i;Leaf *tmp;tmp=this;while (tmp!=NULL) {    for (i=0; i<tmp->actsize; i++) 	tmp->entry[i].Visualize_Rectangle(fo);    tmp=tmp->next;    }tmp=this;while (tmp!=NULL) {    for (i=0; i<tmp->actsize; i++) 	tmp->entry[i].Visualize_Circle(fo);    tmp=tmp->next;    }}// follow chain of leavesvoid Leaf::print_leaf_entries_bychain(ofstream &fo) const {fo<<"#"<<actsize<<endl;for (int i=0; i<actsize; i++) 	fo<<entry[i]<<endl;if (this->next!=NULL) 	this->next->print_leaf_entries_bychain(fo);}// follow chain of leavesvoid Leaf::print_leaf_entries_bychain(ostream &fo) const {for (int i=0; i<actsize; i++) 	fo<<entry[i]<<endl;if (this->next!=NULL) 	this->next->print_leaf_entries_bychain(fo);}// topdown search for leavesvoid Leaf::print_leaf_entries_topdown(ofstream &fo) const {fo<<"#"<<actsize<<endl;for (int i=0; i<actsize; i++) 	fo<<entry[i]<<endl;}// topdown search for leavesvoid Nonleaf::print_leaf_entries_topdown(ofstream &fo) const {for (int i=0; i<actsize; i++) 	child[i]->print_leaf_entries_topdown(fo);}Node* Leaf::InsertMightSplit(Stat *Stats, const Entry &Ent, Node *ptr) {short 	samegroup;Leaf 	*NewNode;int 	i1,i2,n1,n2,head1,head2;double 	d1, d2;Entry 	ent1,ent2;ent1.Init(Stats->Dimension);ent2.Init(Stats->Dimension);if (NotFull(Stats)) {	entry[actsize]=Ent;	actsize++; 	Stats->CurrEntryCnt++;	return NULL;	}NewNode = new Leaf(Stats); Stats->MemUsed++; Stats->TreeSize++;NewNode->entry[NewNode->actsize]=Ent;NewNode->actsize++; Stats->CurrEntryCnt++;// chain leaf nodesif (this->next!=NULL) {	this->next->prev=NewNode;	}NewNode->next=this->next;NewNode->prev=this;this->next=NewNode;this->FarthestTwoOut(Stats,this,NewNode,samegroup,i1,i2);switch (samegroup) {case 0: this->swap(this,0, this,i1);        NewNode->swap(NewNode,0, NewNode,i2);        break;case 1: this->swap(this,0, this,i1);        NewNode->swap(NewNode,0, this,i2);        break;default: print_error("Leaf::InsertMightSplit","Invalid group flag");}n1 = MaxSize(Stats);n2 = 1;head1 = 1; head2 = 1;ent1 = this->entry[0];ent2 = NewNode->entry[0];while (head1<n1) {	d1 = distance(Stats->BDtype,ent1,this->entry[head1]);	d2 = distance(Stats->BDtype,ent2,this->entry[head1]);	if (d1<d2) {		ent1+=this->entry[head1];		head1++;		}	else {  this->assign(NewNode,head2,this,head1);		this->assign(this,head1,this,n1-1);		ent2+=NewNode->entry[head2];		head2++;		n1--;		n2++;		}	}this->actsize=n1;NewNode->actsize=n2;return(NewNode);}Node* Nonleaf::InsertMightSplit(Stat *Stats, const Entry &Ent, Node *Ptr) {short 	samegroup;Nonleaf *NewNode;int 	i1,i2,n1,n2,head1,head2;double 	d1, d2;Entry 	ent1,ent2;ent1.Init(Stats->Dimension);ent2.Init(Stats->Dimension);if (NotFull(Stats)) {	entry[actsize]=Ent;	child[actsize]=Ptr;	actsize++;	return NULL;	}NewNode=new Nonleaf(Stats); Stats->MemUsed++; Stats->TreeSize++;NewNode->entry[NewNode->actsize]=Ent;NewNode->child[NewNode->actsize]=Ptr;NewNode->actsize++;this->FarthestTwoOut(Stats,this,NewNode,samegroup,i1,i2);switch (samegroup) {case 0: this->swap(this,0, this,i1);	NewNode->swap(NewNode,0, NewNode,i2);	break;case 1: this->swap(this,0, this,i1);	NewNode->swap(NewNode,0, this,i2);	break;default: print_error("Nonleaf::InsertMightSplit","Invalid group flag");}n1=MaxSize(Stats);n2=1;head1=1; head2=1;ent1 = this->entry[0];ent2 = NewNode->entry[0];while (head1<n1) {	d1 = distance(Stats->BDtype,ent1,this->entry[head1]);	d2 = distance(Stats->BDtype,ent2,this->entry[head1]);	if (d1<d2) {		ent1+=this->entry[head1];		head1++;		}	else {  this->assign(NewNode,head2,this,head1);		this->assign(this,head1,this,n1-1);		ent2+=NewNode->entry[head2];		head2++;		n1--;		n2++;		}	}this->actsize=n1; NewNode->actsize=n2;return(NewNode);}void Nonleaf::MergeMightResplit(Stat *Stats, int i, int j) {int 	head1,head2,k,j1,j2,n1,n2,total;short 	samegroup;double 	d1, d2;Entry 	ent1,ent2;ent1.Init(Stats->Dimension);ent2.Init(Stats->Dimension);n1 = child[i]->ActSize();n2 = child[j]->ActSize();total = n1+n2;// Merge: no overflowif (total<child[i]->MaxSize(Stats)) {	child[i]->AssignActSize(total);	entry[i]+=entry[j];	for (k=0;k<n2;k++) 		child[i]->assign(child[i],n1+k, child[j],k);	child[j]->AssignNextPrev(Stats);	delete child[j]; 	Stats->MemUsed--; 	Stats->TreeSize--;	this->assign(this,j, this,actsize-1);	actsize--;	}// ReSplit: overflowelse {//farthest pair in tmpentrychild[i]->FarthestTwoOut(Stats, child[i],child[j],samegroup,j1,j2);switch (samegroup) {case 0: child[i]->swap(child[i],0, child[i],j1);	child[j]->swap(child[j],0, child[j],j2);	break;case 1: child[i]->swap(child[i],0, child[i],j1);	child[j]->swap(child[j],0, child[i],j2);	break;case 2: child[i]->swap(child[i],0, child[j],j1);	child[j]->swap(child[j],0, child[j],j2);	break;default: print_error("Nonleaf::MergeMightResplit","Invalid group flag");}head1=1; head2=1;ent1 = *(child[i]->TheEntry(0));ent2 = *(child[j]->TheEntry(0));while (head1<n1 && head2<n2) {   d1 = distance(Stats->BDtype,ent1,*(child[i]->TheEntry(head1)));   d2 = distance(Stats->BDtype,ent2,*(child[i]->TheEntry(head1)));   if (d1<d2) {	ent1+=*(child[i]->TheEntry(head1));        head1++;	}   else { 	child[i]->swap(child[i],head1,child[j],head2);	ent2 += *(child[j]->TheEntry(head2));	head2++;	}    }// child[j] has left overif (head1>=n1 && head2<n2) {  while (head2<n2 && n1<child[i]->MaxSize(Stats)) {   d1 = distance(Stats->BDtype,ent1,*(child[j]->TheEntry(head2)));   d2 = distance(Stats->BDtype,ent2,*(child[j]->TheEntry(head2)));   if (d2<d1) {      	ent2 += *(child[j]->TheEntry(head2));	head2++;	}   else {	child[i]->assign(child[i],head1,child[j],head2);	child[j]->assign(child[j],head2,child[j],n2-1);	ent1+=*(child[i]->TheEntry(head1));	head1++;	n1++;	n2--;	}   }}// child[i] has left overelse if (head1<n1 && head2>=n2) {   while (head1<n1 && n2<child[j]->MaxSize(Stats)) {    d1 = distance(Stats->BDtype,ent1,*(child[i]->TheEntry(head1)));    d2 = distance(Stats->BDtype,ent2,*(child[i]->TheEntry(head1)));    if (d1<d2) {   	ent1 += *(child[i]->TheEntry(head1));	head1++;	}    else {	child[j]->assign(child[j],head2,child[i],head1);	child[i]->assign(child[i],head1,child[i],n1-1);	ent2+=*(child[j]->TheEntry(head2));	head2++;	n1--;	n2++;	}    }}child[i]->AssignActSize(n1);child[j]->AssignActSize(n2);	child[i]->CF(entry[i]);child[j]->CF(entry[j]);}}void Leaf::FarthestTwoOut(Stat *Stats, Node *node1, Node *node2, 	                  short &samegroup, int &i, int &j) const {int 	i1, i2, j1, j2, n1, n2;double 	d, dmax;Leaf 	*leaf1, *leaf2;leaf1 = (Leaf *)node1;leaf2 = (Leaf *)node2;n1 = leaf1->ActSize();n2 = leaf2->ActSize();if (n1==0 || n2==0)        print_error("Leaf::FarthestTwoOut","empty node");samegroup = 0;i=0; j=0;dmax = distance(Stats->BDtype,leaf1->entry[i],leaf2->entry[j]);for (i1=0; i1<n1; i1++)        for (i2=0; i2<n2; i2++) {           d = distance(Stats->BDtype,leaf1->entry[i1],leaf2->entry[i2]);           if (d>dmax) {                i=i1;                j=i2;                dmax=d;                }        }for (i1=0; i1<n1-1; i1++)        for (j1=i1+1; j1<n1; j1++) {           d = distance(Stats->BDtype,leaf1->entry[i1],leaf1->entry[j1]);           if (d>dmax) {                i=i1;                j=j1;                dmax=d;                samegroup=1;                }        }for (i2=0; i2<n2-1; i2++)        for (j2=i2+1; j2<n2; j2++) {           d = distance(Stats->BDtype,leaf2->entry[i2],leaf2->entry[j2]);           if (d>dmax) {                i=i2;                j=j2;                dmax=d;                samegroup=2;                }	}}void Nonleaf::FarthestTwoOut(Stat *Stats, Node *node1, Node *node2, 	                     short &samegroup, int &i, int &j) const {int 	i1, i2, j1, j2, n1, n2;double 	d, dmax;Nonleaf *nleaf1, *nleaf2;nleaf1 = (Nonleaf *)node1;nleaf2 = (Nonleaf *)node2;n1 = nleaf1->ActSize();n2 = nleaf2->ActSize();if (n1==0 || n2==0)        print_error("Nonleaf::FarthestTwoOut","empty node");samegroup = 0;i=0; j=0;dmax=distance(Stats->BDtype,nleaf1->entry[i],nleaf2->entry[j]);for (i1=0; i1<n1; i1++)   for (i2=0; i2<n2; i2++) {        d = distance(Stats->BDtype,nleaf1->entry[i1],nleaf2->entry[i2]);        if (d>dmax) {                i=i1;                j=i2;                dmax=d;                }        }for (i1=0; i1<n1-1; i1++)    for (j1=i1+1; j1<n1; j1++) {        d = distance(Stats->BDtype,nleaf1->entry[i1],nleaf1->entry[j1]);        if (d>dmax) {                i=i1;                j=j1;                dmax=d;                samegroup=1;                }        }for (i2=0; i2<n2-1; i2++)    for (j2=i2+1; j2<n2; j2++) {        d = distance(Stats->BDtype,nleaf2->entry[i2],nleaf2->entry[j2]);        if (d>dmax) {                i=i2;                j=j2;                dmax=d;                samegroup=2;                }	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人在线观看| 97国产精品videossex| 国产精品综合二区| 欧美在线观看禁18| 国产婷婷色一区二区三区在线| 亚洲欧美激情小说另类| 国产乱码精品一区二区三区忘忧草| 欧美亚洲丝袜传媒另类| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲黄色免费网站| 成人在线一区二区三区| 日韩情涩欧美日韩视频| 亚洲综合精品久久| 99久久精品99国产精品| 国产亚洲成aⅴ人片在线观看| 日韩二区三区四区| 91久久精品国产91性色tv| 国产精品你懂的在线欣赏| 精品亚洲国内自在自线福利| 欧美日韩成人综合在线一区二区| 国产精品高清亚洲| 成人午夜免费av| 国产人成一区二区三区影院| 国产一区二区电影| 精品女同一区二区| 久久99国产精品免费| 日韩一级二级三级精品视频| 亚洲成人综合在线| 欧美色大人视频| 一区二区三区在线高清| 色偷偷成人一区二区三区91 | 国产色婷婷亚洲99精品小说| 久久精品噜噜噜成人av农村| 欧美一级爆毛片| 美腿丝袜在线亚洲一区| 日韩免费观看高清完整版在线观看| 狠狠色丁香婷婷综合| 欧美日韩综合在线| 亚洲午夜电影在线| 制服丝袜亚洲网站| 精品一区二区av| 久久精品视频在线看| 国产经典欧美精品| 自拍偷拍国产亚洲| 一本色道久久综合狠狠躁的推荐 | 亚洲欧美福利一区二区| 色婷婷久久久亚洲一区二区三区 | 国产日产欧产精品推荐色| 国产精品91xxx| 中文字幕在线免费不卡| 色婷婷综合久久久中文字幕| 亚洲国产成人tv| 91精品国产欧美一区二区成人| 蜜桃视频免费观看一区| 国产亚洲欧美日韩日本| 97久久超碰国产精品电影| 亚洲女同女同女同女同女同69| 欧美体内she精高潮| 日本午夜一区二区| 久久精品无码一区二区三区| 91丨porny丨首页| 日韩成人免费在线| 国产午夜精品一区二区 | 中文字幕日本乱码精品影院| 色综合久久中文综合久久牛| 日韩国产一二三区| 久久精品一区二区三区av| 91亚洲精品一区二区乱码| 午夜精品一区二区三区免费视频| 久久婷婷成人综合色| 日本精品裸体写真集在线观看| 琪琪一区二区三区| 国产精品国产自产拍高清av王其| 欧美午夜寂寞影院| 国产精品亚洲人在线观看| 亚洲愉拍自拍另类高清精品| 久久婷婷久久一区二区三区| 欧美伊人久久大香线蕉综合69 | 欧美不卡123| 色婷婷狠狠综合| 裸体歌舞表演一区二区| 亚洲欧美偷拍另类a∨色屁股| 日韩一区二区麻豆国产| 色综合色综合色综合 | xvideos.蜜桃一区二区| 在线中文字幕不卡| 国产精品乡下勾搭老头1| 五月天一区二区| 18成人在线视频| 久久亚洲精品小早川怜子| 欧美精品精品一区| 色综合久久99| www.日韩av| 国产成人在线免费| 久久精品国产色蜜蜜麻豆| 亚洲综合成人在线| 亚洲视频1区2区| 中文字幕欧美三区| 欧美tk—视频vk| 5566中文字幕一区二区电影| 在线影院国内精品| 99九九99九九九视频精品| 国产精品一二一区| 激情成人午夜视频| 麻豆一区二区三区| 国产99久久久久久免费看农村| 日韩成人一区二区三区在线观看| 中文字幕一区二区不卡| 国产女人aaa级久久久级| 精品播放一区二区| 精品国产亚洲在线| 欧美大片一区二区| 日韩亚洲欧美成人一区| 91麻豆精品国产91久久久久久| 欧美日韩一卡二卡| 欧美日韩一区中文字幕| 欧美日韩午夜影院| 在线播放国产精品二区一二区四区| 色美美综合视频| 欧美系列日韩一区| 欧美日韩视频第一区| 69精品人人人人| 91精品国产丝袜白色高跟鞋| 在线不卡免费欧美| 精品国产一区二区三区av性色 | 欧美色视频在线观看| 在线观看日韩av先锋影音电影院| 欧美一区二区性放荡片| 欧美顶级少妇做爰| 精品日产卡一卡二卡麻豆| 亚洲精品一区二区三区精华液| 久久久亚洲精品石原莉奈| 国产欧美日韩视频在线观看| 国产精品女上位| 一区二区三区美女视频| 五月综合激情网| 久久精品国产在热久久| 国产精品456| 色呦呦日韩精品| 欧美精品一级二级| 26uuu精品一区二区| 国产精品久久免费看| 亚洲一区二区三区国产| 轻轻草成人在线| 国产凹凸在线观看一区二区| 色综合网色综合| 欧美一卡二卡三卡| 国产欧美精品国产国产专区| 亚洲一区av在线| 国产一区二区不卡在线| 99re8在线精品视频免费播放| 欧美日韩亚洲综合| 久久精品亚洲一区二区三区浴池| 亚洲欧美国产毛片在线| 蜜桃一区二区三区在线| 成人永久看片免费视频天堂| 欧美日韩免费一区二区三区| 久久―日本道色综合久久| 亚洲欧美aⅴ...| 韩国女主播成人在线| 欧洲一区在线观看| 欧美xxxxx牲另类人与| 中文字幕亚洲一区二区va在线| 亚洲3atv精品一区二区三区| 福利一区福利二区| 欧美精三区欧美精三区| 国产精品伦理在线| 美女任你摸久久| 在线观看av一区二区| 国产欧美精品一区二区色综合朱莉| 亚洲18女电影在线观看| 本田岬高潮一区二区三区| 91精品国产综合久久婷婷香蕉 | 欧美日韩国产另类一区| 欧美国产国产综合| 美女诱惑一区二区| 欧美丝袜丝交足nylons| 国产精品嫩草影院av蜜臀| 精品一区二区影视| 欧美另类高清zo欧美| 亚洲日穴在线视频| 成人美女视频在线看| 亚洲精品在线网站| 男男视频亚洲欧美| 欧美日韩一区二区三区在线| 亚洲色图欧美偷拍| 盗摄精品av一区二区三区| 精品少妇一区二区三区日产乱码| 亚洲第一主播视频| 在线观看网站黄不卡| 国产精品短视频| 北条麻妃国产九九精品视频| 国产欧美日产一区| 国产在线精品一区在线观看麻豆| 欧美一级电影网站| 美女视频免费一区| 精品国产一区二区三区久久久蜜月| 肉色丝袜一区二区| 在线播放欧美女士性生活| 日韩va欧美va亚洲va久久|