题意:有n个人坐成一桌,定义一个人的沮丧程度为他喜欢的菜距离他的最小值,请随意旋转桌子,最小化所有人的沮丧程度。

思路:枚举我们沿顺时针方向旋转的次数,对于单个物体我们可以发现是一个分区间一次函数,那么我们只需要将所有的物体的函数求出来,累加即可,用差分就可以得到k和b,然后求解。

/*keep on going and never give up*/
#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
#define int long long
typedef pair<int, int> pii;
#define lowbit(x) x&(-x)
#define endl '\n'
#define wk is zqx ta die
int a[200005];
int pos[200005];
int k[200005];
int b[200005];
int n;
void add(int l, int r, int kk, int bb) {if (l > r) {return ;}k[l] += kk;k[r + 1] -= kk;b[l] += bb;b[r + 1] -= bb;
}
void add(int v) {if (v < n / 2) {add(0, v, -1, v);add(v + 1, v + n / 2, 1, -v);add(v + n / 2 + 1, n - 1, -1, n + v);} else {v = n - v;add(0, n / 2 - v, 1, v);add(n / 2 - v + 1, n - v, -1, n - v);add(n - v + 1, n - 1, 1, v - n);}
}
signed main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];pos[a[i]] = i;}int ans = 1e18;for (int i = 0; i < n; i++) {int v = (pos[i] - i + n) % n;add(v);}for (int i = 1; i < n; i++) {k[i] += k[i - 1];b[i] += b[i - 1];}for (int i = 0; i < n; i++) {ans = min(ans, k[i] * i + b[i]);}cout << ans << endl;return 0;
}

abc268 E 数学相关推荐

  1. 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学

    前言:仅个人小记.本文记录的证明逻辑上不具有流畅性,主要是在一开始不流畅,拉格朗日神乎其技地引入了一个等价关系,进而实现了整个定理的证明,目前我没能给出拉格朗日是如何想到引入该等价关系. 最后给出推论 ...

  2. 通俗理解条件熵-数学

    就是决策树里面选划分属性用到的计算 条件熵越小表示划分之后各个集合越纯净 前面我们总结了信息熵的概念通俗理解信息熵 - 知乎专栏,这次我们来理解一下条件熵. 我们首先知道信息熵是考虑该随机变量的所有可 ...

  3. 内积和外积的物理意义-数学

    内积和外积的物理意义 Persistently关注 2018.07.31 14:28:46字数 277阅读 6,276 向量的内积 ab=ab cos(θ) 向量a和b的长度之积再乘以它们之间的夹角的 ...

  4. Ramsey定理数学

    https://blog.csdn.net/qq_41551359/article/details/84036876 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上 ...

  5. 数学上各种空间概念的关系图

    https://blog.csdn.net/cc1949/article/details/79744519 数学上有各种空间,概念容易混淆,为了记忆,整理出一张关系图. 目前不清楚无限维的内积空间是什 ...

  6. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...

  7. js函数语法:ASCII 码的相互转换,字符串操作,数学计算

    ASCII 码的相互转换 for (let i = 'a'.charCodeAt(); i <= 'z'.charCodeAt(); i++) {a.push(String.fromCharCo ...

  8. 机器学习数学 — 初等函数求导

    本文摘自 GitChat 李烨老师 [机器学习极简入门课]课程 1. 数学知识速查手册 机器学习常用微积分知识速查手册 机器学习常用线性代数知识速查手册 2. 初等函数求导公式

  9. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

最新文章

  1. python自动翻译导学案_批量翻译踩过的坑--python
  2. 学好python工资一般多少钱-Python工资多少?就业发展前景怎么样?
  3. Cache相关基本概念理解
  4. roku能不能安装软件_如何阻止假期更改Roku主题
  5. the python interpreter is in_the python interpreter is in - 百度学术
  6. Vue中使用节流Lodash throttle
  7. 亮剑:PHP,我的未来不是梦(6)
  8. final、finally、finalize 区别
  9. python scrapy框架 简书_Python的Scrapy框架
  10. Struct与Class
  11. java哈夫曼编码译码_java实现哈夫曼编码
  12. python中的pymysql_Mysql在python中的使用:pymysql
  13. flutter之从零开始搭建(三)之 网络请求
  14. 建立人脉关系以及可能认识的人推荐
  15. android辅助功能失效,如果其他应用的辅助功能服务处于开启状态,则Android无障碍服务无法正常工作...
  16. 【程序人生】这是 2017 关于程序员薪酬最详尽的调查报告
  17. 绘画新手怎么画人物衣服褶皱
  18. 当你输入网址到网页呈现发生了什么?
  19. align-content 和align-items的区别
  20. 触摸屏技术属于计算机技术中的什么,触摸屏技术

热门文章

  1. 2.4 魔鬼训练营实践作业
  2. http://www.3lian.com/edu/2014/01-25/126892.html
  3. 安装 jupyter 运行python代码
  4. c#方法参数:params
  5. CountdownLatch(门闩)
  6. dota2开箱HexSkins-新的公布概率的特别的dota2开箱网站,特别在哪里?
  7. 复杂业务逻辑问题记录
  8. EasyTouch☀️ 一、EasyTouch的配置物体讲解
  9. 中国信通院:大数据白皮书2020 摘要
  10. 如何解决宽带连接慢的问题