Codeforces Round #248 (Div. 1)——Ryouko's Memory Note

题目连接

  • 题意:

    给n和m,一行m个1<=x<=n的数。记c=.现在只能选择一个数x变成y,序列中所有等于x的值都变成y,求最小的c

  • 分析:

    对于一个数x,把与他相邻的所有的非x的数全部写下来。如果x增大,那么一部分值增大,一部分减小,且每个数的增大值或减小值都是x的变化值(均相等),也就是说总的结果只和比x大的数与比x小的数的数量有关,所以即中位数。

const int maxn = 110000;

LL ipt[maxn];
map<LL, vector<LL> > mp;
map<LL, vector<LL> >::iterator it;

int main()
{
    int n, m;
    while (~RII(n, m))
    {
        mp.clear();
        REP(i, m)
        {
            cin >> ipt[i];
        }
        REP(i, m)
        {
            if (i > 0 && ipt[i - 1] != ipt[i])
                mp[ipt[i]].push_back(ipt[i - 1]);
            if (i < m - 1 && ipt[i + 1] != ipt[i])
                mp[ipt[i]].push_back(ipt[i + 1]);
        }
        LL ans = 0;
        FC(it, mp)
        {
            vector<LL>& ipt = it->second;
            sort(all(ipt));
            LL t = 0, m = ipt[(LL)ipt.size() / 2];
            REP(i, ipt.size())
            {
                t += abs((it->first) - ipt[i]) - abs(m - ipt[i]);
            }
            ans = max(ans, t);
        }
        ans *= -1;
        REP(i, m - 1)
            ans += abs(ipt[i] - ipt[i + 1]);
        cout << ans << endl;
    }
    return 0;
}

Codeforces Round #248 (Div. 1)——Ryouko's Memory Note

时间: 2024-12-12 20:55:03

Codeforces Round #248 (Div. 1)——Ryouko's Memory Note的相关文章

Codeforces Round #248 (Div. 2) C - Ryouko&#39;s Memory Note

题意 一本书有n页.下面要找m个知识点,分别在s[1] s[2]-.s[m]页上. 现在有一个机会,可以把某一页的知识点全部移到另一页上.求最少的翻页次数. 如s[1] s[2] -. s[m]的翻页次数就是|s[1]-s[2]|+|s[2]-s[3]|+-+|s[m-1]-s[m]| 思路 记录每个页码在序列中前后出现的页码(如1 2 3 2 4 则2前后出现过1 3 3 4)(注意如果相邻的页码相同则不用管它) 取它们的中位数,这时一定会有移动这个页码的最优解.把所有页码遍历一遍,取整体最优

Codeforces Round #248 (Div. 1)——Nanami&amp;#39;s Digital Board

题目连接 题意: 给n*m的0/1矩阵,q次操作,每次有两种:1)将x,y位置值翻转 2)计算以(x,y)为边界的矩形的面积最大值 (1?≤?n,?m,?q?≤?1000) 分析: 考虑以(x,y)为下边界的情况,h=(x,y)上边最多的连续1的个数.那么递减的枚举,对于当前hx,仅仅须要看两側能到达的最远距离,使得h(x,ty)不大于h就可以.之后的枚举得到的两側距离大于等于之前的,所以继续之前的两側距离继续枚举就可以. const int maxn = 1100; int n, m, q;

Codeforces Round #248 (Div. 2) A - Kitahara Haruki&#39;s Gift

题意 给n个数,都是100或者200,问能否把这些数平均分给两个人. 思路 先算出如果平均分的话每个人要多少(sum/2),如果不能整除100那么肯定不行.如果是100的倍数,则先尽量用200的,用完200的或者已经不足200了再用100的. 代码 #include <cstdio> #include <algorithm> using namespace std; const int maxn = 110; int s[maxn]; int n; int main() { int

Codeforces Round #248 (Div. 2) B - Kuriyama Mirai&#39;s Stones

题意 给出一个n个数的序列.下面有m个指令 1指令:原序列从l到r的和 2指令:排序过的序列从l到r的和 思路 线段树可做-.直接扫一遍记录sum数组也可以 代码 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; #define ll long long const int maxn = 100010; int n; int s[maxn]; int ss[max

Codeforces Round #248 (Div. 1)——Nanami&#39;s Digital Board

题目连接 题意: 给n*m的0/1矩阵,q次操作,每次有两种:1)将x,y位置值翻转 2)计算以(x,y)为边界的矩形的面积最大值 (1?≤?n,?m,?q?≤?1000) 分析: 考虑以(x,y)为下边界的情况,h=(x,y)上边最多的连续1的个数.那么递减的枚举,对于当前hx,只需要看两侧能到达的最远距离,使得h(x,ty)不大于h即可.之后的枚举得到的两侧距离大于等于之前的,所以继续之前的两侧距离继续枚举即可. const int maxn = 1100; int n, m, q; int

Codeforces Round #315 (Div. 1)

A. Primes or Palindromes? time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Rikhail Mubinchik believes that the current definition of prime numbers is obsolete as they are too complex and un

Codeforces Round #275 (Div. 1)A. Diverse Permutation 构造

Codeforces Round #275 (Div. 1)A. Diverse Permutation Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/482/problem/A Description Permutation p is an ordered set of integers p1,   p2,   ...,   pn, consisting of n distinct posi

Codeforces Round #261 (Div. 2) 459B. Pashmak and Flowers(数学题,组合)

题目链接:http://codeforces.com/problemset/problem/459/B B. Pashmak and Flowers time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Pashmak decided to give Parmida a pair of flowers from the garden.

Codeforces Round #261 (Div. 2)459A. Pashmak and Garden(数学题)

题目链接:http://codeforces.com/problemset/problem/459/A A. Pashmak and Garden time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Pashmak has fallen in love with an attractive girl called Parmida s