当前位置: 首页>>代码示例>>C++>>正文


C++ multiset::clear方法代码示例

本文整理汇总了C++中multiset::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ multiset::clear方法的具体用法?C++ multiset::clear怎么用?C++ multiset::clear使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在multiset的用法示例。


在下文中一共展示了multiset::clear方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main()
{
    while(~scanf("%d%d%d%d",&w,&h,&n,&m))
    {
        for(int i=1;i<=n;i++)
        {
            int x1,y1,x2,y2;
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);

            square[i].l = min(x1,x2);
            square[i].r = max(x1,x2);
            square[i].b = min(y1,y2);
            square[i].t = max(y1,y2);
        }

        V.clear();

        for(int i=1;i<=n;i++)
        {
            V.push_back(Node(square[i].t,square[i].b,1,square[i].l));
            V.push_back(Node(square[i].t,square[i].b,-1,square[i].r+1));
        }
        V.push_back(Node(1,h,1,w+1));

        sort(V.begin(),V.end());

        int xx = 0,pre = -1;
        long long ans = 0;
        S.clear();
        S.insert(setNode(0,0));
        S.insert(setNode(h+1,h+1));
        int width = h-m+1 > 0 ? h-m+1 : 0;

        while(xx < V.size())
        {
            while(xx+1 < V.size() && V[xx].pos == V[xx+1].pos) xx++;

            ans += (long long)width * (long long)(V[xx].pos - (pre == -1 ? 1 : V[pre].pos));
            for(int i=pre+1;i<=xx;i++)
            {
                if(V[i].kind == 1)
                {
                    multiset<setNode>::iterator It1 = S.upper_bound(setNode(V[i].top,V[i].bot));
                    multiset<setNode>::iterator It2 = --It1;++It1;
                    width -= It1->bot - It2->top - m > 0 ? It1->bot - It2->top - m : 0;
                    width += It1->bot - V[i].top - m > 0 ? It1->bot - V[i].top - m : 0;
                    width += V[i].bot - It2->top - m > 0 ? V[i].bot - It2->top - m : 0;
                    S.insert(setNode(V[i].top,V[i].bot));
                }
                else if(V[i].kind == -1)
                {
                    multiset<setNode>::iterator It1 = S.find(setNode(V[i].top,V[i].bot));if(It1 == S.end())while(1);
                    multiset<setNode>::iterator It2 = --It1;++It1;
                    multiset<setNode>::iterator It3 = ++It1;--It1;
                    width -= It3->bot - It1->top - m > 0 ? It3->bot - It1->top - m : 0;
                    width -= It1->bot - It2->top - m > 0 ? It1->bot - It2->top - m : 0;
                    width += It3->bot - It2->top - m > 0 ? It3->bot - It2->top - m : 0;
                    S.erase(It1);
                }
            }
            pre = xx;
            xx++;
        }
        //-------------------------------------------
        if(m == 1) goto Print;

        V.clear();

        for(int i=1;i<=n;i++)
        {
            V.push_back(Node(square[i].r,square[i].l,1,square[i].b));
            V.push_back(Node(square[i].r,square[i].l,-1,square[i].t+1));
        }
        V.push_back(Node(1,w,1,h+1));

        sort(V.begin(),V.end());

        xx = 0,pre = -1;
        S.clear();
        S.insert(setNode(0,0));
        S.insert(setNode(w+1,w+1));
        width = w-m+1 > 0 ? w-m+1 : 0;

        while(xx < V.size())
        {
            while(xx+1 < V.size() && V[xx].pos == V[xx+1].pos) xx++;

            ans += (long long)width * (long long)(V[xx].pos - (pre == -1 ? 1 : V[pre].pos));
            for(int i=pre+1;i<=xx;i++)
            {
                if(V[i].kind == 1)
                {
                    set<setNode>::iterator It1 = S.upper_bound(setNode(V[i].top,V[i].bot));
                    set<setNode>::iterator It2 = --It1;++It1;
                    width -= It1->bot - It2->top - m > 0 ? It1->bot - It2->top - m : 0;
                    width += It1->bot - V[i].top - m > 0 ? It1->bot - V[i].top - m : 0;
                    width += V[i].bot - It2->top - m > 0 ? V[i].bot - It2->top - m : 0;
                    S.insert(setNode(V[i].top,V[i].bot));
                }
                else if(V[i].kind == -1)
//.........这里部分代码省略.........
开发者ID:Mr-Phoebe,项目名称:ACM-ICPC,代码行数:101,代码来源:B+-+Adding+New+Machine.cpp

示例2: MAIN

void MAIN()
{
    int cases;
    pree();

    scanf("%d",&cases);
    int tn,cct,vct;
    int i,j;

    for(int t=1;t<=cases;++t)
    {
        ansc.clear();
        ansv.clear();
        scanf("%d",&n);
        cct=n/2;
        vct=n-cct;
        tn=n;

        for(i=0;i<v.size();++i)
        {
            for(j=0;j<min(21,vct);++j)
            {
                //printf("%c\n",v[i].second);
                ansv.insert(v[i].second);
            }
            vct-=j;
        }

        for(i=0;i<c.size();++i)
        {
            for(j=0;j<min(5,cct);++j)
            {
                //printf("%c\n",c[i].second);
                ansc.insert(c[i].second);
            }
            cct-=j;
        }

        printf("Case %d: ",t);

        sit1=ansv.begin();
        sit2=ansc.begin();

        //printf("%d\t%d\n",anv.size())

        for(i=0;i<n;++i)
        {
            if(i&1)
            {
                printf("%c",*sit2);
                ++sit2;
            }
            else
            {
                printf("%c",*sit1);
                ++sit1;
            }
        }


        printf("\n");
    }
}
开发者ID:vijaynitrr,项目名称:Spoj,代码行数:63,代码来源:MADN.cpp

示例3: main

int main()
{
	freopen("in", "r", stdin);
	freopen("std", "w", stdout);
	tree.clear();
	while (1)
	{
		int operation;
		scanf("%d", &operation);
		if (operation == -1)
		{
			return 0;
		}
		/*
		else if (operation == 0)
		{
			tree.clear();
		}
		*/
		else if (operation == 0)
		{
			int key;
			scanf("%d", &key);
			tree.insert(key);
		}
		else if (operation == 1)
		{
			int key;
			scanf("%d", &key);
			multiset<int>::iterator it = tree.find(key);
			if (it != tree.end())
			{
				tree.erase(it);
				printf("OK\n");
			}
			else
				printf("Delete Error\n");
		}
		else if (operation == 2)
		{
			int key;
			scanf("%d", &key);
			multiset<int>::iterator it = tree.find(key);
			if (it != tree.end())
				printf("Yes\n");
			else
				printf("No\n");
		}
		/*
		else if (operation == 4)
		{
			int key;
			scanf("%d", &key);
			multiset<int>::iterator it = tree.find(key);
			if (it != tree.end())
			{
				-- it;
				printf("%d\n", *it);
			}
			else
				printf("Prev Error!\n");
		}
		else if (operation == 5)
		{
			int key;
			scanf("%d", &key);
			multiset<int>::iterator it = tree.find(key);
			if (it != tree.end())
			{
				++ it;
				printf("%d\n", *it);
			}
			else
				printf("Succ Error!\n");
		}
		*/
		else if (operation == 3)
		{
			if (tree.empty())
				printf("NULL\n");
			else
			{
				multiset<int>::reverse_iterator it = tree.rbegin();
				printf("%d\n", *it);
			}
		}
		else if (operation == 4)
		{
			if (tree.empty())
				printf("NULL\n");
			else
			{
				multiset<int>::iterator it = tree.begin();
				printf("%d\n", *it);
			}
		}
	}
	return 0;
}
开发者ID:yinyanghu,项目名称:YCL,代码行数:99,代码来源:stl.cpp

示例4: main

int main(){
    powB[0] = powB2[0] = 1;
    
    for(int i = 1;i < MAXL;++i){
        powB[i] = B * powB[i - 1];
        powB2[i] = B * powB2[i - 1] % MOD;
    }
    
    int T,L;
    
    scanf("%d",&T);
    
    while(T--){
        scanf("%s",s);
        
        L = strlen(s);
        
        H[L] = H3[L] = 0;
        
        for(int i = L - 1;i >= 0;--i){
            H[i] = ((s[i] >= 'a' && s[i] <= 'z')? s[i] - 'a' : s[i] - 'A' + 26) + B * H[i + 1];
            H3[i] = (((s[i] >= 'a' && s[i] <= 'z')? s[i] - 'a' : s[i] - 'A' + 26) + B * H3[i + 1]) % MOD;
        }
        
        H2[0] = H4[0] = 0;
        
        for(int i = 0;i < L;++i){
            H2[i + 1] = ((s[i] >= 'a' && s[i] <= 'z')? s[i] - 'a' : s[i] - 'A' + 26) + B * H2[i];
            H4[i + 1] = (((s[i] >= 'a' && s[i] <= 'z')? s[i] - 'a' : s[i] - 'A' + 26) + B * H4[i]) % MOD;
        }
        
        for(int i = 0;i < L;++i){
            int lo = 0,hi = min(i + 1,L - i - 1),mi;
            
            while(lo < hi){
                mi = (lo + hi + 1) >> 1;
                
                if(get_hash3(i - mi + 1,i) != get_hash4(i + 1,i + mi)) hi = mi - 1;
                else lo = mi;
            }
            
            r[i] = lo;
        }
        
        int Q = 0;
        vq.clear();
        in.clear();
        out.clear();
        
        for(int i = 0;i < L;++i){
            if(r[i]){
                int r2 = r[i] / 2;
                
                vq.push_back(make_pair(i,i + 1 - r2));
                in.push_back(make_pair(i + 1,i));
                out.push_back(make_pair(i + r[i] + 1,i));
                ++Q;
            }
        }
        
        sort(vq.begin(),vq.end());
        sort(in.begin(),in.end());
        sort(out.begin(),out.end());
        
        S.clear();
        int ans = 0;
        
        for(int i = 0,p1 = 0,p2 = 0,p3 = 0;i < L;++i){
            while(p3 < Q && out[p3].first == i){
                it = S.find(out[p3].first - r[ out[p3].second ]);
                S.erase(it);
                ++p3;
            }
            
            while(p2 < Q && in[p2].first == i){
                S.insert(in[p2].first);
                ++p2;
            }
            
            while(p1 < Q && vq[p1].first == i){
                it = S.lower_bound( vq[p1].second );
                if(it != S.end()) ans = max(ans,i - *it + 1);
                ++p1;
            }
        }
        
        printf("%d\n",ans * 4);
    }
    
    return 0;
}
开发者ID:1azarus,项目名称:Online-Judge-Solutions,代码行数:91,代码来源:4975+-+Casting+Spells.cpp

示例5: MedianFinder

 /** initialize your data structure here. */
 MedianFinder() 
 {
     Small.clear();
     Large.clear();
 }
开发者ID:SophiaChen23,项目名称:LeetCode,代码行数:6,代码来源:295.Find-Median-from-Data-Stream.cpp

示例6: main

int main(){
    while (~scanf("%d%d",&n,&m)){
        S.clear();
        for (int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            S.insert(a[i]);
        }
        if (n==1){
            printf("1\n%d\n",a[1]);
            continue;
        }
        if (n==2){
            if (a[1]+a[2]>m)
                printf("2\n%d %d\n",a[1],a[2]);
            else
                printf("1\n%d %d\n",a[1],a[2]);
            continue;
        }
        memset(bi,true,sizeof(bi));
        sort(a+1,a+n+1);
        b[2]=a[n];
        multiset<int>::iterator it;
        /*
        it=S.lower_bound(b[2]);
        S.erase(it);

        it=S.upper_bound(m-b[2]);
        if (it==S.end()) --it;
        b[1]=(*it);
        S.erase(it);

        for (int i=2;i<n;++i){
            it=S.upper_bound(m-b[i]);
            if (it==S.end()) --it;
            b[i+1]=(*it);
            S.erase(it);
        }
        */
        bool flag=true;
        for (int i=1;i<=n;i++)
        {
            if (flag)
            {
                if (i<n)
                {
                    it=S.end();it--;
                    b[i+1]=(*it);
                    S.erase(it);
                    it=S.upper_bound(m-b[i+1]);
                    if (it==S.end()) it=S.begin();
                    b[i]=(*it);
                    S.erase(it);
                    i++;
                    if (b[i-1]+b[i]<=m)
                        flag=true;
                    else flag=false;
                }
                else
                {
                    it=S.begin();
                    b[i]=(*it);
                    S.erase(it);
                }
            }
            else
            {
                it=S.upper_bound(m-b[i-1]);
                if (it==S.end())
                {
                    it=S.begin();
                    flag=true;
                }
                else flag=false;
                b[i]=(*it);
                S.erase(it);
            }
        }
        int ans=0;
        b[n+1]=0;
        for (int i=1;i<=n;++i){
            if (b[i]+b[i+1]<=m) i++;
            ans++;
        }
        printf("%d\n",ans);
        for (int i=1;i<=n;++i) printf("%d%c",b[i],i==n?'\n':' ');
    }
    return 0;
}
开发者ID:anjanx44,项目名称:algo-solution,代码行数:88,代码来源:1901.cpp

示例7:

multiset<int> reinit_set(multiset<int> ackset)
{
	ackset.clear();
	return ackset;
}
开发者ID:rbukka,项目名称:Distributed-Systems,代码行数:5,代码来源:Server_backup_seq_same.cpp

示例8: main

int main(){
	bool first = true;
	int i, x;

	scanf("%d", &N);

	while (N--){
		if (!first) putchar('\n');
		first = false;

		G.clear();
		B.clear();

		scanf("%d %d %d", &BT, &SG, &SB);

		for (i = 0; i < SG; i++){
			scanf("%d", &x);
			G.insert(x);
		}

		for (i = 0; i < SB; i++){
			scanf("%d", &x);
			B.insert(x);
		}

		while (G.size() && B.size()){
			auto git = G.begin(), bit = B.begin();

			Ga.clear();
			Ba.clear();

			for (i = 0; i < BT && G.size() && B.size(); i++){
				int g = *git;
				int b = *bit;

				git = G.erase(git);
				bit = B.erase(bit);

				if (b > g)
					Ba.push_back(b - g);
				else if (b < g)
					Ga.push_back(g - b);
			}

			G.insert(Ga.begin(), Ga.end());
			B.insert(Ba.begin(), Ba.end());
		}

		auto &x = G;

		if (!G.size() && !B.size())
			printf("green and blue died\n");
		else if (G.size()){
			printf("green wins\n");
			x = G;
		} else {
			printf("blue wins\n");
			x = B;
		}

		for (auto it = x.begin(); it != x.end(); it++)
			printf("%d\n", *it);
	}
}
开发者ID:erilyth,项目名称:Contest-Archive,代码行数:64,代码来源:978+-+Lemmings+Battle!.cpp

示例9: main

int main(){

    int i,j,k,l,test,t=1;

    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);

    scanf("%d",&test);

    while(test--){

        scanf("%d",&n);

        set1.clear();

        printf("Case #%d:\n",t++);

        int li,ci;
        for(i=1;i<=n;i++){
            scanf("%d %d",&li,&ci);
            pii now=mp(li,ci);

            if(set1.find(now)!=set1.end()){
                set1.insert(now);
                printf("%d\n",set1.size());
                continue;
            }

            //printf("\n%d %d\n",li,ci);

            while(set1.size()){
                it=set1.upper_bound(now);
                //printf("it= %d-%d\n ",(*it).uu,(*it).vv);
                if(it==set1.end()){
                    break;
                }
                else if((*it).vv>=ci){
                    set1.erase(it);
                }
                else break;
            }


			it=set1.upper_bound(now);

			if(it==set1.begin()){
				set1.insert(now);
			}
			else{
				it--;
				if((*it).vv>ci){
					set1.insert(now);
				}
			}

            for(it=set1.begin();it!=set1.end();it++){
            //    printf("%d-%d  ",(*it).uu,(*it).vv);
            }
            //puts("");
            printf("%d\n",set1.size());
            continue;
        }

        if(test) puts("");
    }

    return 0;
}
开发者ID:JohnXinhua,项目名称:Algorithm_ACM,代码行数:68,代码来源:uva+11020-Efficient+Solutions.cpp

示例10: solve

void solve() {
	scanf("%d", &n);
	axis_cnt = 0;
	memset(cntA, 0, sizeof(cntA));
	memset(cntB, 0, sizeof(cntB));
	int totA = 0, totB = 0;
	for ( int i = 1; i <= n; i ++ ) {
		scanf("%d", &x[i]);
		axis[axis_cnt ++] = x[i];
	}
	sort(axis, axis + axis_cnt);
	axis_cnt = unique(axis, axis + axis_cnt) - axis;
	for ( int i = 1; i <= n; i ++ )
		x[i] = lower_bound(axis, axis + axis_cnt, x[i]) - axis;
	scanf("%d%d", &A, &B);

	for ( int st = 1; st + A - 1 <= n; st ++ ) {
		static multiset<int> S;
		S.clear();
		for ( int i = st; i <= st + A - 1; i ++ ) 
			S.insert(x[i]);
		int mx = *(-- S.end());
		cntA[mx] ++;
		totA ++;
		for ( int en = st + A; en <= n; en ++ ) {
			if ( x[en] < mx ) {
				S.erase(-- S.end());
				S.insert(x[en]);
				mx = *(-- S.end());
			}
			cntA[mx] ++;
			totA ++;
		}
	}
	for ( int st = 1; st + B - 1 <= n; st ++ ) {
		static multiset<int> S;
		S.clear();
		for ( int i = st; i <= st + B - 1; i ++ ) 
			S.insert(x[i]);
		int mx = *(-- S.end());
		cntB[mx] ++;
		totB ++;
		for ( int en = st + B; en <= n; en ++ ) {
			if ( x[en] < mx ) {
				S.erase(-- S.end());
				S.insert(x[en]);
				mx = *(-- S.end());
			}
			cntB[mx] ++;
			totB ++;
		}
	}

	double res = 0;
	for ( int i = 0; i < axis_cnt; i ++ )
		for ( int j = 0; j < axis_cnt; j ++ ) {
			double prob = ((double)cntA[i] / totA) * ((double)cntB[j] / totB);
			if ( i > j )
				res += prob;
			else if ( i == j )
				res += 0.5 * prob;
		}
	printf("%.6lf\n", res);
}
开发者ID:alxsoares,项目名称:OI,代码行数:64,代码来源:G_TLE.cpp


注:本文中的multiset::clear方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。