题目大意

农夫约翰有一个圆形的谷仓,谷仓分成了环形的n(3<=n<=100000)个房间,编号为1,2,……n。每个房间有三个门,两个门通往两个相邻的房间,第三个门朝外。约翰有n头奶牛,乱哄哄的在谷仓外面。有的房间门口有多头奶牛排队,有的房间外一头也没有。现在约翰想让每头奶牛都呆在一个房间,他要让奶牛先进入房间,然后按顺时针方向穿过门到其他的房间。奶牛的移动是要消耗能量的,一头奶牛经过d个门需要消耗d2的能量。请问如何消耗最少的能量,完成约翰的任务。
输入格式:
第一行包含n个整数,接下来n行,表示初始时每个房间的奶牛数,保证奶牛数等于n。
输出格式:
一个整数,表示所需要的最小能量。
输入样例:
10
1
0
0
2
0
0
1
2
2
2
输出样例:
33
时限 1s
内存 128M

分析

破环为链,然后对这个链扫描两次。
对于每个点,我们都贪心地留下一只已经走了最远的奶牛。
也就是维护一个队列,如果队列中有奶牛,就把队列中第一只奶牛留在这个位置,这个位置的奶牛数+1,如果没有,就算了。
如果,这个位置有奶牛,就只留下一只奶牛,其它奶牛入队,否则就跳过去。
然后按照上面的规则再扫面一遍即可。

贪心正确性显然:我们留下一直已经走得较远的而让另一只已经走得较近奶牛的走,显然比一直让走得比较远的走更优。

代码

#include<cstdio>
#include<algorithm>
#include<queue>
#define MAXN 100000
using namespace std;
queue<int>q;
int n,r[MAXN+10],a[MAXN+10];
long long ans;
void Read(int &x){char c;while(c=getchar(),c!=EOF)if(c>='0'&&c<='9'){x=c-'0';while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0';ungetc(c,stdin);return;}
}
void read(){Read(n);int i;for(i=1;i<=n;i++)Read(r[i]),a[i]=i;
}
void solve(){int i,u;int t=2*n;for(i=1;i<=n;i++){if(!q.empty()){u=q.front();q.pop();ans+=1ll*(i-u)*(i-u);r[i]++;a[i]=u;}for(u=1;u<r[i];u++)q.push(i);if(r[i])r[i]=1;}for(i=n+1;i<=t;i++){if(!q.empty()){if(r[i-n]){q.push(a[i-n]+n);ans-=1ll*(i-a[i-n]-n)*(i-a[i-n]-n);}u=q.front();q.pop();ans+=1ll*(i-u)*(i-u);a[i-n]=u;r[i-n]=1;}}
}
int main()
{read();solve();printf("%lld\n",ans);
}

转载于:https://www.cnblogs.com/outerform/p/5921846.html

【贪心】[USACO 2015 February Contest, Gold]Circular Barn相关推荐

  1. USACO 2020 February Contest, Gold

    USACO 2020 February Contest, Gold 图片懒得上传了,如果影响阅读可以看个人公开笔记 另外就是之前接近一年没登陆,所以消息都没看到,抱歉了. 测试地址 Problem 1 ...

  2. USACO 2020~2021 February Contest GOLD 题解(3)

    USACO 2020~2021 二月黄金组 题解(3) 3. Count The Cows As is typical, Farmer John's cows have spread themselv ...

  3. [Bzoj3940] [AC自动机,USACO 2015 February Gold] Censor [AC自动机模板题]

    AC自动机模板题(膜jcvb代码) 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> ...

  4. USACO 2018 February Contest, Silver-Rest Stops

    G: Rest Stops 时间限制: 1 Sec  内存限制: 128 MB 提交: 97  解决: 38 [提交][状态][讨论版][命题人:admin] 题目描述 Farmer John and ...

  5. USACO 2015 January Contest Bronze——奶牛的旅行路线

    文章目录 题目描述 输入格式 输出格式 数据范围 输入样例 输出样例 实现代码--奶牛只想走一条路线的情况下 题目描述 厌倦了农场寒冷的冬季天气,奶牛贝茜计划飞往一个温暖的目的地度假. 不幸的是,她发 ...

  6. USACO 2012 January Contest, Gold Division Solution

    T1是一道字符串套dp,当然字符串长度较短于是直接暴力dp即可. T2是一道博弈??反正当爆搜写掉,注意随机化优化. T3是一道树形dp,当然是要挖一些性质的题,敲了近两个小时发现了性质2分钟A了..

  7. USACO 2016 January Contest Gold T2: Radio Contact

    题目大意 FJ失去了他最喜欢的牛铃,而Bessie已经同意帮助他找到它!他们用不同的路径搜索农场,通过无线电保持联系.不幸的是,无线电中的电池电量不足,所以他们设法尽可能保持两者位置的距离最小,以节省 ...

  8. USACO 2018 FEBURARY CONTEST :SILVER T1

    USACO 2018 February Contest, Silver Problem 1. Rest Stops Farmer John and his personal trainer Bessi ...

  9. Promotion Counting【USACO 2016 January Contest, Bronze】

    今天来分享一下我做过的几道Usaco的比较简单的题,Usaco是美国的一个c++竞赛比赛,但是全球各地的人都可以参加,Usaco没有监考,全凭诚信,但是你拿着这个 作弊 借鉴来的成绩,所有美国的大学都 ...

最新文章

  1. mongotemplate 查list_mongoTemplate.aggregate()聚合查询 时间
  2. FindFirstVolume系列函数遍历驱动器,获取驱动器信息
  3. Springboot集成axis1.4
  4. python字符串命名_python-字符串及其常用方法
  5. [转载] Java中的50个关键字
  6. 用AI帮你画新年贺卡:只需输入几个单词,就能模仿大师名作
  7. 2015年 不可不知的五大热点话题
  8. (附源码)spring boot校园二手交易平台 毕业设计 191637
  9. iOS Gif分解与展示
  10. Auto Tile 自动拼接地图和墙壁
  11. 浙江大学数据结构第一讲:1.1什么是数据结构
  12. html嵌入播放器,flv视频播放器 Flvplayer.swf 可自动播放参数说明
  13. Wpf关于列表动态刷新的问题
  14. 数据结构 -- 魔王语言解释
  15. win7 修复计算机步骤,解答win7系统桌面上的计算机不见了的修复步骤
  16. 湘潭大学oracle上机试题,湘潭大学计算机考题2010
  17. 打开excel服务器客户端无响应怎么办,excel服务器客户端登录不起
  18. Storm学习一集群安装
  19. Three.js加载.stl格式模型
  20. 长安大学计算机课程设置,课程介绍-长安大学计算机高级编程技术精品资源共享课...

热门文章

  1. 计算机网络面试知识点
  2. VS code前端配置
  3. 如何限制浏览器使用_如何使用浪涌电流限制器NTC(一)
  4. 随机生成关于银行卡号的字典(卡号以6102009开头,后面依次是001,002,...)
  5. 如何查看电脑显卡配置_无需软件!直接查看电脑配置方法
  6. ssm框架图片上传与显示_SSM在线考试系统
  7. EOS Nation更新“flash.sx遭攻击”进展:将建议MSIG根据快照将资金退还
  8. SAP License:我对SAP项目实施是这样理解的
  9. SAP License:FI权限需要控制利润中心
  10. SAP License:SAP复制和默认快捷小贴士