「 Luogu P3137 」X 「 USACO16FEB 」 圆形谷仓
# 题目大意
管理大大给修下 $\text{Markdown}$ 吧,严重影响做题体验啊。
这道题的意思很简单就是给你一个长度是 $n$ 的环,这个环上不均匀的分布着 $n$ 头奶牛。一头奶牛移动要花费的代价是距离的平方,现在让你求出使得每个点上都有一头奶牛需要花费的最小代价,注意,奶牛只能顺时针移动。
# 解题思路
首先断环成链这个大家应该都知道,就是将原序列 copy 一份放到后面去。
然后考虑如果一头奶牛在移动的过程中没有经过其他奶牛,那这一定是最优的方案。还有就是如果一个点有奶牛,那将奶牛运到它顺时针防线上离它连续一段 $0$ 的最后一个 $0$。
枚举初始位置,从初始位置开始如果遇到有牛的地方,就将这个位置放到优先队列 (小根堆) 里,在往后扫的过程中将其慢慢移动过来。
直观的说就是下面这个式子:
$$a^2+b^2<(a+b)^2$$
# 附上代码
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
int n, a[], cnt, ans = 1e9;
priority_queue <int, vector<int>, greater<int> > Q;
bool flag = true;
int main() {
scanf("%d", &n);
for(int i=; i<=n; i++) {
scanf("%d", &a[i]);
a[i+n] = a[i];
}
static int tmp;
for(int i=; i<=n; i++) {
cnt = , flag = true;
for(int j=i; j<=i+n-; j++) {
if(Q.empty() && a[j] == ) {flag = false; break;}
tmp = a[j];
while (tmp--) Q.push(j);
tmp = Q.top(), Q.pop();
cnt += (tmp-j) * (tmp-j);
}
if(!flag) continue;
ans = min(ans, cnt);
}
printf("%d", ans);
}
「 Luogu P3137 」X 「 USACO16FEB 」 圆形谷仓的更多相关文章
- 洛谷 P3137 [USACO16FEB]圆形谷仓Circular Barn_Silver
P3137 [USACO16FEB]圆形谷仓Circular Barn_Silver 题目描述 Being a fan of contemporary architecture, Farmer Joh ...
- 「Luogu P2060 [HNOI2006]马步距离」
一道神奇的BFS 前置芝士 BFS(DFS):这次真的不是我懒,我也不知道DFS怎么写. STL中的set或者map. 具体做法 数据范围非常大,直接BFS肯定是一片黑色(指TLE,MLE),直接贪心 ...
- Git 执行 「fork 出来的仓库」和「最新版本的原仓库」内容同步更新
当我们在 GitHub 上 fork 出一个仓库后,如果原仓库更新了,此时怎样才能保证我们 fork 出来的仓库和原仓库内容一致呢?我们一般关注的是仓库的 master(主干分支)的内容,通过以下步骤 ...
- FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...
- Android内存管理(4)*官方教程 含「高效内存的16条策略」 Managing Your App's Memory
Managing Your App's Memory In this document How Android Manages Memory Sharing Memory Allocating and ...
- SSH连接时出现「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」解决办法
用ssh來操控github,沒想到連線時,出現「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」,後面還有一大串英文,這時當然要向Google大神求助 ...
- Java的参数传递是「值传递」还是「引用传递」?
关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题. 有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问. 关于值传递和引用传递其实需要分情况看待. ...
- 「ZJOI2019」&「十二省联考 2019」题解索引
「ZJOI2019」&「十二省联考 2019」题解索引 「ZJOI2019」 「ZJOI2019」线段树 「ZJOI2019」Minimax 搜索 「十二省联考 2019」 「十二省联考 20 ...
- Loj #6069. 「2017 山东一轮集训 Day4」塔
Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...
随机推荐
- 初探js闭包
1.变量的作用域:全局变量.局部变量 函数内部可以直接读取局部变量 js代码 var n=2; function fun(){ alert(n); } fun(); //2 函数外部不能读取函数内部 ...
- ubuntu16.04下使用python3开发时,安装pip3与scrapy,升级pip3
1)安装pip3: sudo apt-get install python3-pip 2)安装scrapy sudo pip3 install scrapy 若出现版本过低问题: pip3 insta ...
- c的free注意事项和c++的简洁(析构大哥)
#include <iostream> using namespace std; // ////c语言版本 //struct stu //{ // char *name; // int a ...
- bzoj 3470: Freda’s Walk【拓扑排序+期望dp】
dfs会T,只好正反两遍拓扑了-- #include<iostream> #include<cstdio> #include<queue> #include< ...
- bzoj 4078: [Wf2014]Metal Processing Plant【二分+2-SAT+枚举+并查集】
枚举从大到小s1,二分s2(越大越有可能符合),2-SAT判断,ans取min 思路倒是挺简单的,就是二分的时候出了比较诡异的问题,只能二分s2的值,不能在数组上二分... 有个优化,就是当不是二分图 ...
- 各个nginx conf的虚拟主机的配置
server { listen 80; server_name t-cl.orangevip.com; rewrite ^(.*)$ https://$host$1 permanent;} serve ...
- MFC中利用CString和Format成员函数将数字格式化输出
str.Format("格式控制字符串”,输出列表): 格式控制字符串包括格式字符串和非格式字符串,用双引号括起来.其中非格式字符串原样输出. 格式字符串是以%开头的字符串:%[标识][输出 ...
- 《Windows核心编程系列》十谈谈同步设备IO与异步设备IO之异步IO
同步设备IO与异步设备IO之异步IO介绍 设备IO与cpu速度甚至是内存访问相比较都是比较慢的,而且更不可预测.虽然如此,通过使用异步设备IO我们仍然能够创造出更高效的程序. 同步IO时,发出IO请求 ...
- windows下Python的安装,以及IDLE的使用
一.Python的下载安装 (1)python的windows安装包可以从https://www.python.org 网址中下载,可以下载3.4版本的或者2.7版本的.(2)下载后直接运行即可.然后 ...
- 转】[MySQL优化]为MySQL数据文件ibdata1瘦身
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! [MySQL优化]为MySQL数据文件ibda ...