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


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

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


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

示例1: sol

int sol(){

    for (int i=1;i<=n;i++)
        d[i]=i,
        S.insert(w[i]);

    int a,b;

    while (m--)
    {
        scanf("%d%d",&a,&b);
        a=dsu(a);
        b=dsu(b);
        if (a!=b)
        {
            S.erase(S.find(w[a]));
            S.erase(S.find(w[b]));
            w[a]+=w[b];
            w[b]=0;
            S.insert(w[a]);
            d[b]=a;
        }
        for (int i=1;i<=n;i++)
            cout<<d[i]<<" ";
        printf("%d\n",*S.begin());
    }

    return 0;
}
开发者ID:sanu11,项目名称:Algos,代码行数:29,代码来源:dsucode.cpp

示例2: main

int main() {
    file_r("laundro_matt.txt");
    file_w("out.out");
    int cas = 0;
    cin >> T;
    while (T--) {
        cin >> l >> n >> m >> d;
        s.clear();
        rep (i, n) {
            cin >> w[i];
            s.insert(mp(w[i], w[i]));
        }
        q.clear();
        m = min(l, m);
        rep (i, m) q.insert(0);
        ans = 0;
        rep (i, l) {
            iter = s.begin();
            a[i] = iter->X;
            s.erase(iter);
            s.insert(mp(iter->X + iter->Y, iter->Y));

            it = q.begin();
            q.erase(it);
            if (*it <= a[i]) {
                ans = max(ans, a[i] + d);
                q.insert(a[i] + d);
            } else {
                ans = max(ans, *it + d);
                q.insert(*it + d);
            }
        }
开发者ID:liangsheng,项目名称:normal,代码行数:32,代码来源:B.cpp

示例3: main

int main()
{
    int n,d,r;
    while(scanf("%d%d%d",&n,&d,&r)!=EOF&&n||d||r)
    {
        int k;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&k);
            s1.insert(k);
        }
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&k);
            s2.insert(k);
        }
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            int num=*s1.begin();
            int index=d-num;
            __typeof(s2.begin()) it=s2.lower_bound(index);
            if(it==s2.end())it--;
            ans+=r*max(0,num+*it-d);
            s1.erase(s1.begin());
            s2.erase(it);
        }
        printf("%d\n",ans);
    }
    return 0;
}
开发者ID:EternalZEROm,项目名称:ZEROm,代码行数:31,代码来源:11389.cpp

示例4: main

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%I64d",&sum[i]);
        num[i]=sum[i];
        sum[i]+=sum[i-1];
    }
    sum[n+1]+=sum[n];
    s.insert(0);
    s.insert(n+1);
    ms.insert(-(sum[n+1]-sum[0]));
    for(int i=0;i<n;i++)
    {
        int x;
        scanf("%d",&x);
        int r=*s.lower_bound(x);
        int l=*(--s.lower_bound(x));
        s.insert(x);
        ms.erase(ms.find(-(sum[r-1]-sum[l])));
        ms.insert(-(sum[r-1]-sum[x]));
        ms.insert(-(sum[x-1]-sum[l]));
        printf("%I64d\n",-(*ms.begin()));
    }
    return 0;
}
开发者ID:Liuchenlong,项目名称:acm,代码行数:28,代码来源:C.cpp

示例5: main

int main() {
  int n, q;
  scanf("%d %d", &n, &q);
  for (int i = 0; i < n; ++i) {
    scanf("%d", a+i);
    b[i] = a[i];
  }
  sort(a, a+n);
  for (int i = 0; i < n; ++i) {
    val.insert(a[i]);
    if (i)
      dif.insert(a[i] - a[i-1]);
  }
  while (q--) {
    int t;
    scanf("%d", &t);
    if (t == 2) {
      long long ans = *val.rbegin() - *val.begin();
      ans -= *dif.begin();
      printf("%lld\n", ans);
    }
    else {
      int x, y;
      scanf("%d %d", &x, &y);
      --x;
      if (b[x] != y) {
        del(b[x]);
        add(b[x] = y);
      }
    }
  }
  return 0;
}
开发者ID:wifai,项目名称:competitive-programming,代码行数:33,代码来源:f.cpp

示例6: solve

void solve(){
  for( int i = 1 ; i <= min( n , m ) ; i ++ ){
    done[ i ] = ti[ i ];
    S.insert( ti[ i ] );
  }
  for( int i = m + 1 ; i <= n ; i ++ ){
    done[ i ] = *S.begin() + ti[ i ];
    S.erase( S.find( *S.begin() ) );
    S.insert( done[ i ] );
  }
  for( int i = 1 ; i <= n ; i ++ )
    pmax[ i ] = max( pmax[ i - 1 ] , done[ i ] );
  D ans = good[ n ] * pmax[ n ];
  for( int i = 1 ; i <= n ; i ++ )
    ans += ( good[ i - 1 ] * ( 1.0 - p[ i ] ) ) * pmax[ i ];
  // D ans = pmax[ n ];
  // for( int i = 1 ; i <= n ; i ++ )
    // if( ans > eps )
      // ans *= p[ i ];
    // else break;
  // for( int i = 1 ; i <= n ; i ++ ){
    // D tans = pmax[ i ] * ( 1.0 - p[ i ] );
    // for( int j = 1 ; j < i ; j ++ )
      // if( tans > eps )
        // tans *= p[ j ];
      // else break;
    // ans += tans;
  // }
  printf( "%.12f\n" , (double)ans );
}
开发者ID:tzupengwang,项目名称:PECaveros,代码行数:30,代码来源:f.cpp

示例7: main

int main(int argc, char const *argv[])
{
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        scanf("%I64d", A + i);
        s += A[i];
        ps[i + 1] = ps[i] + A[i];
    }
    sum.insert(s);
    qu.insert(Pii(n, 0));
    for (int i = 0, p; i < n; ++i) {
        scanf("%d", &p); --p;
        auto it = qu.upper_bound(Pii(p, 0));
        // cout << it->second << " " << it->first << endl;
        ll tmp = ps[it->first] - ps[it->second];
        // cout << "tmp " << tmp << endl;
        sum.erase(sum.lower_bound(tmp));

        tmp = ps[p] - ps[it->second];
        // cout << "tmp " << tmp << endl;
        sum.insert(tmp); qu.insert(Pii(p, it->second));

        tmp = ps[it->first] - ps[p + 1];
        // cout << "tmp " << tmp << endl;
        sum.insert(tmp); qu.insert(Pii(it->first, p + 1));

        qu.erase(it);
        printf("%I64d\n", *sum.rbegin());
    }
    return 0;
}
开发者ID:Voleking,项目名称:ICPC,代码行数:31,代码来源:722C.cpp

示例8: insert

 void insert(int num)
 {
     if(median == -1) median = num;
     else
     {
         if(num < median)
             small_number_set.insert(num);
         else
             big_number_set.insert(num);
         if(small_number_set.size() + 1 < big_number_set.size())
         {
             small_number_set.insert(median);
             auto median_iter = big_number_set.begin();
             median = *median_iter;
             big_number_set.erase(median_iter);
         }
         else if(small_number_set.size() > big_number_set.size())
         {
             big_number_set.insert(median);
             auto median_iter = prev(small_number_set.end());
             median = *median_iter;
             small_number_set.erase(median_iter);
         }
     }
 }
开发者ID:varvelworld,项目名称:PAT-Solution,代码行数:25,代码来源:1057.cpp

示例9: main

int main(){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> t;
  while(t--){
    S.clear();
    cin >> n;
    for(int i=0;i<n;i++){
      cin >> x;
      it = S.upper_bound(x);
      if(it==S.end()){
        S.insert(x);
      }
      else{
        S.erase(it);
        S.insert(x);
        //(*it) = x;
      }
    }
    cout << S.size() << " ";
    for(multiset<int>::iterator it=S.begin();it!=S.end();it++){
      cout << (*it)  << " ";
    }
    cout << endl;
  }
  return 0;
}
开发者ID:anveshi,项目名称:Competitive-Programming,代码行数:27,代码来源:STACKS-8215643.cpp

示例10: try_to_add_or_delete

void try_to_add_or_delete(cl_term* Sp, cl_term* S)
{
   string Sp_str = Sp->conv2str();
   string S_str  = S->conv2str();
   Sp_nchecker.insert(Sp_str);
   S_nchecker.insert(S_str);
   if (Sp_nchecker.count(Sp_str) >= max_SS_n || S_nchecker.count(S_str) >= max_SS_n)
     {
	multiset_delete_one(Sp_nchecker, Sp_str);
	multiset_delete_one(S_nchecker,  S_str);
	delete Sp;
	delete S;
	return;
     }
   if (uniqchecker.try_to_add(Sp_str, S_str))
     {
	population.push_back(make_cl_ssprimega_member(Sp, S));
     }
   else
     {
	multiset_delete_one(Sp_nchecker, Sp_str);
	multiset_delete_one(S_nchecker,  S_str);
	delete Sp;
	delete S;
	return;
     }
}
开发者ID:aideus,项目名称:cl-lab,代码行数:27,代码来源:cl_ssprimega.cpp

示例11: main

int main()
{
    srand(time(NULL));
    for(int i=6; i<21; ++i) {
        char fin[55],out[55];
        sprintf(fin,"teste/grader_test%d.in",i);
        sprintf(out,"teste/grader_test%d.ok",i);
        ofstream in(fin);
        ofstream g(out);
        n=rand()%DN+1;k=rand()%n+1;
        in<<n<<' '<<k<<'\n';
        for(int i=1; i<=n; ++i) {
            p[i]=rand()%DK+1; c[i]=rand()%DK+1;
            in<<p[i]<<' '<<c[i]<<'\n';
        }
        pt=0; rst.clear(); sol.clear(); ssol=0; rez=0;
        for(int i=1; i<=k; ++i) {
            pt+=p[i];
            rst.insert(p[i]+c[i]);
        }
        rez=max(rez,pt);
        for(int i=k+1; i<=n; ++i) {
            pt+=p[i];
            rst.insert(p[i]+c[i]);
            ssol+=*rst.begin();
            sol.insert(*rst.begin());
            rst.erase(rst.begin());
            bst[i]=pt-ssol;
            rez=max(rez,bst[i]);
        }
        g<<rez;
    }
    return 0;
}
开发者ID:S7012MY,项目名称:Surse,代码行数:34,代码来源:creator_teste.cpp

示例12: main

int main() {
	#ifndef ONLINE_JUDGE
	freopen("519b.in", "r", stdin);
	freopen("519b.out", "w", stdout);
	#endif
	cin >> n;
	for(int i = 1 ; i <= n ; ++ i) {
		int x;
		cin >> x;
		s1.insert(x);
	}
	for(int i = 1 ; i < n ; ++ i) {
		int x;
		cin >> x;
		s1.erase(s1.find(x));
		s2.insert(x);
	}
	cout << *s1.begin() << '\n';
	for(int i = 1 ; i < n - 1 ; ++ i) {
		int x;
		cin >> x;
		s2.erase(s2.find(x));
	}
	cout << *s2.begin() << '\n';
		
}
开发者ID:rusucosmin,项目名称:cplusplus,代码行数:26,代码来源:519b.cpp

示例13: main

int main() {
    int n, elm, k, t;
    cin >> n >> t >> k;
    for (int i = 0; i < n; ++i) {
        cin >> elm;
        v.push_back(elm);
    }
    for (int i = 0; i < k; ++i) {
        S.insert(v[i]);
    }
    it = S.rbegin();
    ans.push_back(*it);
    for (int i = k; i < n; ++i) {
        S.erase(S.find(v[i - k]));
        S.insert(v[i]);
        it = S.rbegin();
        ans.push_back(*it);
    }
    int res = 0;
    for (int i = 0; i < ans.size(); ++i) {
        if (ans[i] <= t)
            ++res;
    }
    cout << res;
    return 0;
}
开发者ID:AkashChandrakar,项目名称:codeforces-solutions,代码行数:26,代码来源:427-B-13201087.cpp

示例14: main

int main () {
    scanf("%d %d", &n, &k);

    for (int i = 0; i < n; i++) {
        scanf("%d %d", x+i, y+i);
        p[i] = i;
    }

    int res = 0;
    sort(p, p+n, cmp_t);
    for (int i = 0; i < k; i++)
        s.insert(0);

    for (int i = 0; i < n; i++) {
        it = s.upper_bound(x[p[i]]);
        if (it == s.begin())
            continue;

        --it;
        res++;

        s.erase(it);

        s.insert(y[p[i]]);
    }

    printf("%d\n", res);
    
}
开发者ID:victorsenam,项目名称:treinos,代码行数:29,代码来源:E.cpp

示例15: update

void update(int a, int b) {
    if (f[a] != -1) {
        int temp = *SS[f[a]][c[a]].begin();
        SS[f[a]][c[a]].erase(SS[f[a]][c[a]].find(d[a]));
        if (SS[f[a]][c[a]].empty()) SS[f[a]].erase(c[a]);

        if (c[f[a]] != c[a]) {
            S.erase(S.find(temp));
            if (SS[f[a]].find(c[a]) != SS[f[a]].end() && !SS[f[a]][c[a]].empty()) 
                S.insert(*SS[f[a]][c[a]].begin());
        }

        if (c[f[a]] != b) {
            if (!SS[f[a]][b].empty()) {
                if (d[a] < *SS[f[a]][b].begin()) {
                    S.erase(S.find(*SS[f[a]][b].begin()));
                    S.insert(d[a]);
                }
            } else {
                S.insert(d[a]);
            }
        }

        SS[f[a]][b].insert(d[a]);
    }

    if (SS[a].find(c[a]) != SS[a].end()) S.insert(*SS[a][c[a]].begin());
    if (SS[a].find(b) != SS[a].end()) S.erase(S.find(*SS[a][b].begin()));
    c[a] = b;
}
开发者ID:CLDP,项目名称:USACO-Contest,代码行数:30,代码来源:grass.cpp


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