zoukankan      html  css  js  c++  java
  • CF85D Sum of Medians

    CF85D Sum of Medians

    洛谷传送门

    题意翻译

    • 有一个集合,初始为空。现有nn次操作:

      1. add x:将 xx 添加到集合中。
      2. del x:将 xx 从集合中删除。
      3. sum:将集合内的数从小到大排好序后形成有 kk 个数的序列 aa,求

      sum_{i}^{(ile k)land (imod 5=3)}a_ii∑(ik)∧(imod5=3)a**i

    • 1le nle 10^51≤n≤105,1le xle 10^91≤x≤109。


    题解:

    用这道题学会了一些vector的奇技淫巧。

    vector其实可以维护有序,也就是说,它支持像链表一样的操作,在某一个位置前插入元素。

    这就是 insert() 函数。

    insert函数可以在指定位置前加上一个元素,加上多个相同元素,或者插入一个区间的所有元素

    这道题就是一个序列,add就是添加一个数,del就是删除一个数,sum让你求将该序列从小到大排序后所有v[i]的v[i]的和。

    于是就暴力插入删除。时间复杂度差不多可过。

    代码:

    #include<cstdio>
    #include<algorithm>
    #include<vector>
    #define ll long long
    using namespace std;
    vector<int> v;
    int n;
    int main()
    {
    	scanf("%d",&n);
    	while(n--)
        {
    		int x;
    		char op[3];
    		scanf("%s",op);
    		if(op[0]=='a')
            {
    			scanf("%d",&x);
    			v.insert(lower_bound(v.begin(),v.end(),x),x);
    		}
    		else if(op[0]=='d')
            {
    			int x;
    			scanf("%d",&x);
    			v.erase(lower_bound(v.begin(),v.end(),x));
    		}
    		else
            {
    			ll ans=0;
    			for(int i=2;i<v.size();i+=5)
    				ans+=v[i];
    			printf("%lld
    ",ans);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    Shiro结合配置文件实战实现权限验证
    Shiro的一些概念解释以及配置了解
    jedis工具类
    【转载】redis的主从复制
    Redis的事务
    redis的持久化
    SSM框架-SpringMVC 实例文件上传下载
    如何设置CentOS 7获取动态及静态IP地址
    阿里云linux centos 一键部署web环境--图文详解
    SVN使用教程总结
  • 原文地址:https://www.cnblogs.com/fusiwei/p/14059342.html
Copyright © 2011-2022 走看看