题目连接

  • 题意:

    给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&#39;s Memory Note的更多相关文章

  1. 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)为 ...

  2. Codeforces Round #248 (Div. 1) A. Ryouko's Memory Note 水题

    A. Ryouko's Memory Note 题目连接: http://www.codeforces.com/contest/434/problem/A Description Ryouko is ...

  3. Codeforces Round #248 (Div. 2) (ABCD解决问题的方法)

    比赛链接:http://codeforces.com/contest/433 A. Kitahara Haruki's Gift time limit per test:1 second memory ...

  4. Codeforces 433 C. Ryouko&#39;s Memory Note

    C. Ryouko's Memory Note time limit per test 1 second memory limit per test 256 megabytes input stand ...

  5. Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note

    题目链接:http://codeforces.com/contest/433/problem/C 思路:可以想到,要把某一个数字变成他的相邻中的数字的其中一个,这样总和才会减少,于是我们可以把每个数的 ...

  6. Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note (vector 替换)

    题目链接 题意:给m个数字, 这些数字都不大于 n,  sum的值为相邻两个数字 差的绝对值.求这n个数字里把一个数字 用 其中另一个数字代替以后, 最小的sum值. 分析:刚开始以为两个for 最坏 ...

  7. Codeforces Round #248 (Div. 2)C 题

    题目:http://codeforces.com/contest/433/problem/C 没想到做法就各种纠结, 今天做的都快疯掉了, 太弱了, 等题解一出,就各种恍然大悟 不应该不应该 正文: ...

  8. Codeforces Round #248 (Div. 1) B. Nanami's Digital Board 暴力 前缀和

    B. Nanami's Digital Board 题目连接: http://www.codeforces.com/contest/434/problem/B Description Nanami i ...

  9. Codeforces Round #313 (Div. 1) Gerald&#39;s Hexagon

    http://codeforces.com/contest/559/problem/A 题目大意:按顺序给出一个各内角均为120°的六边形的六条边长,求该六边形能分解成多少个边长为1的单位三角形. 解 ...

随机推荐

  1. iOS进阶面试题----经典10道

    OneV‘s Den在博客里出了10道iOS面试题,用他的话是:"列出了十个应聘Leader级别的高级Cocoa/CocoaTouch开发工程师所应该掌握和理解的技术" .  在这 ...

  2. Windows Azure入门教学系列 (七):使用REST API访问Storage Service

    本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure S ...

  3. Linux下select函数的使用

    一.Select 函数详细介绍 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect. accept.recv ...

  4. Javascript 进阶 封装

    js中处处是对象,面向对象的第一步当然就是封装了,由于Js中没有类的概念,所以封装起来也比较麻烦,下面介绍两种js的封装. 1.使用约定优先的原则,将所有的私有变量以_开头 <script ty ...

  5. 基于jquery-easyui的仓库管理系统

    使用jQuery EasyUI创建的仓库管理系统包括系统管理.数据维护.业务单据管理等,有兴趣可以对其进行修改扩展. 数据库采用MYSQL, 帐号/密码:root/root,演示登录帐号/密码:adm ...

  6. java内存模型与线程(转) good

    java内存模型与线程 参考 http://baike.baidu.com/view/8657411.htm http://developer.51cto.com/art/201309/410971_ ...

  7. 基于visual Studio2013解决面试题之0402合并升序链表并去重

     题目

  8. iOS两个强制旋转屏幕的方法

    第一个: // 状态栏动画持续时间 CGFloat duration = [UIApplication sharedApplication].statusBarOrientationAnimation ...

  9. vs2008中使用gdi+的设置

    vs2008中使用gdi+ 1.新建一个mfc工程 2.在stdafx.h文件中加入以下几行语句: #include <gdiplus.h>                //#pragm ...

  10. 无边无状态栏窗口(使用GetWindowLongPtr设置GWL_EXSTYLE)

    通过SetWindowLongPtr来设置窗口样式 var NewStyle: Integer; begin Application.Initialize; Application.MainFormO ...