codeforces 85D. Sum of Medians

二次联通门 : codeforces 85D. Sum of Medians

/*
    codeforces 85D. Sum of Medians

    正解线段树或是平衡树

    结果用vector暴力卡过去了 

*/
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

void read (int &now)
{
    register char word = getchar ();
    int temp = 0;
    for (; !isdigit (word); word = getchar ())
        if (word == ‘-‘)
            temp = 1;
    for (now = 0; isdigit (word); now = now * 10 + word - ‘0‘, word = getchar ());
    if (temp == 1)
        now = -now;
}

int N;

std :: vector <int> Flandre;

int main (int argc, char *argv[])
{
    read (N);

    static char type[10];
    register long long Answer;
    int x, L;
    for (register int i; N; -- N)
    {
        scanf ("%s", type);
        if (type[0] == ‘a‘)
        {
            read (x);
            Flandre.insert (lower_bound (Flandre.begin (), Flandre.end (), x), x);
        }
        else if (type[0] == ‘d‘)
        {
            read (x);
            Flandre.erase (lower_bound (Flandre.begin (), Flandre.end (), x));
        }
        else
        {
            L = Flandre.size ();
            for (i = 2, Answer = 0; i < L; i += 5)
                Answer += Flandre[i];
            printf ("%lld\n", Answer);
        }
    }
    return 0;
}
时间: 2024-11-13 00:14:21

codeforces 85D. Sum of Medians的相关文章

Codeforces 85D Sum of Medians(线段树)

85D Sum of Medians 题目链接 题意:一个集合有添加,删除元素,每次查询输出集合位置为i % 5 == 3的位置和 思路:线段树,线段树记录下% 5 == 0, 1, 2, 3, 4的和,并且记录一个mov表示右移多少,每次添加一个值的时候,就当前位置之后的一整段位置都要右移一个单位,这样去搞线段树维护一下即可 代码: #include <cstdio> #include <cstring> #include <cstdlib> #include <

codeforces 85D D. Sum of Medians Vector的妙用

D. Sum of Medians Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/85/D Description In one well-known algorithm of finding the k-th order statistics we should divide all elements into groups of five consecutive el

【Codeforces 85 D】Sum of Medians

Codeforces 85 D 题意:维护一个有序集合,每次问编号\(mod\ 5\)余\(3\)的所有数的和. 思路:线段树维护\(mod\ 5\)余\(x\)的数的和,然后上推的时候根据左节点的值改一下就好了. Codeforces 718 A 题意:给一个小数,问最多取\(t\)次四舍五入到某一个小数点后的位后这个数最大能到多少. 思路:首先肯定贪心.(但不知道为什么tag上是\(dp\) 首先我们找到最靠左的一个大于等于5的数,把它四舍五入到上一位, 然后再不断地往前找到下一个大于等于5

Codeforces 920F. SUM and REPLACE

题目大意: 一个数列 支持两种操作 1 把区间内的数变成他们自己的约数个数 2 求区间和 思路: 可以想到每个数最终都会变成2或1 然后我们可以线段树 修改的时候记录一下每段有没有全被修改成1或2 是的话就不修改了 不是就暴力修改 因为每个数被修改的次数很小 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstdlib> 5 #include<cstring&g

CodeForces - 920F SUM and REPLACE (线段树)

题意:给N个数M次操作,(1<=N,M<=3e5, 1<=ai<=1e6),1是使[L,R]中的每个元素变成其因子的个数之和:2是求[L,R]区间之和 分析:看上去就很线段树的一题,但是却思考了很久.发现1和2即使对其,也不会改变二者的值.而且一个大于2的数进行多次1操作,也最终会退化到2. 先预处理筛出1e6以内各数的质因子个数和.在线段树的节点中维护两个值:区间和以及区间最大值.在update函数中,如果该区间的最大值不超过2,那么该区间没有更新的必要:若超过2,则递归向下找到

codeforces CF920F SUM and REPLACE 线段树 线性筛约数

$ \Rightarrow $ 戳我进CF原题 F. SUM and REPLACE time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input output: standard output Let $ D(x) $ be the number of positive divisors of a positive integer $ x $ . For example, $

[Codeforces 1242C]Sum Balance

Description 题库链接 给你 \(k\) 个盒子,第 \(i\) 个盒子中有 \(n_i\) 个数,第 \(j\) 个数为 \(x_{i,j}\).现在让你进行 \(k\) 次操作,第 \(i\) 次操作要求从第 \(i\) 个盒子中取出一个元素(这个元素最开始就在该盒子中),放入任意一个你指定的盒子中,要求经过 \(k\) 次操作后 所有盒子元素个数和最开始相同: 所有盒子元素总和相等 询问是否存在一种操作方式使之满足,若存在,输出任意一种方案即可. \(1\leq k\leq 15

CodeForces - 1327A Sum of Odd Integers(数学+思维)

Example input Copy 6 3 1 4 2 10 3 10 2 16 4 16 5 output Copy YES YES NO YES YES NO Note In the first test case, you can represent 3 as 3. In the second test case, the only way to represent 4 is 1+3. In the third test case, you cannot represent 10 as

codeforces 616E. Sum of Remainders 数学

题目链接 给两个数n, m. 求n%1+n%2+.......+n%m的值. 首先, n%i = n-n/i*i, 那么原式转化为n*m-sigma(i:1 to m)(n/i*i). 然后我们可以发现  1/4 = 2/4 = 3/4 = 0, 4/4 = 5/4 = 6/4 = 7/4 = 1. 所以可以将这些结果分成很多块, 按块算结果. 注意计算过程中时刻避免爆longlong. #include <iostream> #include <vector> #include