usaco 2012 Open【Running Laps奶牛赛跑】
Description
约翰有 N 头奶牛,他为这些奶牛准备了一个周长为 C 的环形跑牛场。所有奶牛从起点同时起跑, 奶牛在比赛中总是以匀速前进的,第 i 头牛的速度为 Vi。只要有一头奶牛跑完 L 圈之后,比赛就立 即结束了。
有时候,跑得快的奶牛可以比跑得慢的奶牛多绕赛场几圈,从而在一些时刻超过慢的奶牛。这就 是最令观众激动的套圈事件了。请问在整个比赛过程中,套圈事件一共会发生多少次呢?
Input Format
• 第一行:三个整数 N ,L 和 C,1 ≤ N ≤ 10^5; 1 ≤ L ≤ 25000; 1 ≤ C ≤ 25000
• 第二行到第 N + 1 行:第 i + 1 行有一个整数 Vi,1 ≤ Vi ≤ 10^6
Output Format
单个整数:表示整个比赛过程中,套圈的次数之和
Sample Input
4 2 100 20 100 70 1
Sample Output
4
Hint
两头速度快的奶牛会超过两头速度慢的奶牛各一次
【题解】
由于题目里面说只要有一头跑完l圈那么所有的牛都会停下来
所以我们可以想给v数组排序(方便后面处理),并算出每头奶牛跑了多少圈(cycle数组)
显然第i头奶牛和第j头奶牛cycle之差下取整
那么题目就简化为给n个实数求每个数与它之前所有数之差下取整的和(n<=1e5显然n^2做法是不可行的,从取值范围可以看出应该是nlogn的)
先举个例子(cycle[i],cycle[j])=(4.8,5.7) 差的下取整是0 ,但(cycle[i],cycle[j])=(4.2,5.7) 差的下取整是1,
所以我们可以把cycle分成整数部分cycle,以及小数部分last
若last[i]>last[j],ans=cycle[j]-cycle[i]-1 若last[i]<=last[j],ans=cycle[j]-cycle[i]
所以我们可以在ans里面存下cycle之差然后再在last数组里找逆序对,逆序对有几个ans就得减多少
至于逆序对,我使用归并排序实现(merge为归并排序过程),也可以用树状数组等数据结构(还没写)
详见代码(注意double判断大小的时候用相减判断,不然会出现精度问题,刚开始直接比大小,wa了5个点)
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
#include <vector>
#include <queue>
#include <map>
using namespace std;
long long i,j,l,m,n,v[100005],ans,c,cycle[100005];
double t,k,last[100005],b[100005];
void merge(int lef,int rig){if (lef==rig) return;if (lef==rig-1){if (last[lef]-last[rig]>1e-7) ans--,swap(last[lef],last[rig]);return;}int mid=(lef+rig)/2;merge(lef,mid);merge(mid+1,rig);int i,j,l;for (l=i=lef,j=mid+1;i<=mid&&j<=rig;){if (last[i]-last[j]>1e-7) {ans-=(mid-i+1);b[l++]=last[j++];}else b[l++]=last[i++];}for (;i<=mid;) b[l++]=last[i++];for (;j<=rig;) b[l++]=last[j++];for (i=lef;i<=rig;i++) last[i]=b[i];}
int main(){scanf("%lld%lld%lld",&n,&l,&c);for (i=1;i<=n;i++) scanf("%lld",&v[i]);sort(v+1,v+n+1);t=l*c/1.0/v[n];m=0;for (i=1;i<=n;i++){cycle[i]=(long long)(t*v[i]/c);ans+=(i-1)*cycle[i]-m;m+=cycle[i];last[i]=t*v[i]-cycle[i]*c;}merge(1,n);printf("%lld",ans);}
树状数组打法(有待更新)
usaco 2012 Open【Running Laps奶牛赛跑】相关推荐
- [USACO 2012 Open]Running Laps奶牛赛跑
题目链接:找不到QWQhttp://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4074 [在一个并没有 ...
- 【USACO 2012 Open】Running Laps(树状数组)
53 奶牛赛跑 约翰有 N 头奶牛,他为这些奶牛准备了一个周长为 C 的环形跑牛场.所有奶牛从起点同时起跑, 奶牛在比赛中总是以匀速前进的,第 i 头牛的速度为 Vi.只要有一头奶牛跑完 L 圈之后, ...
- USACO翻译:USACO 2012 FEB Silver三题
USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...
- F. [usaco 2009 dec]游荡的奶牛 总结
F. [usaco 2009 dec]游荡的奶牛 总结 题目 F. [usaco 2009 dec]游荡的奶牛 时间限制:1s 空间限制:256MB 输入文件:sgraze-in 输出文件:sgraz ...
- 题解 | #[USACO 2012 Mar S]Flowerpot#
题解 | #扑克牌大小# import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main { p 题解 | #密码截 ...
- jzoj P1542 【USACO Open 2012银】跑步Running laps
题目描述 FJ觉得赛马很无聊,于是决定调查将赛牛作为一种运动的可能性.他安排了N(1 <= N <= 100,000)头奶牛来进行一个L圈的赛牛比赛,比赛在一个环形的长度为C的跑道上进行. ...
- 【USACO Open 2012银】跑步Running laps (jzoj第四题)(变态)
题目: 题目描述 FJ觉得赛马很无聊,于是决定调查将赛牛作为一种运动的可能性.他安排了N(1 <= N <= 100,000)头奶牛来进行一个L圈的赛牛比赛,比赛在一个环形的长度为C的跑道 ...
- USACO翻译:USACO 2012 JAN三题(3)
USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...
- 1968. 奶牛赛跑
为了解决谁是跑的最快的奶牛的长期争论,贝茜和艾希决定在农场中来一场赛跑. 两头奶牛在同一时间从同一地点出发,朝同一方向奔跑. 每个奶牛的奔跑过程都可以划分为若干段. 在每一段行程中,奶牛的奔跑速度相同 ...
最新文章
- 深入理解IPyton以及Jupyter Notebook中的%time以及%timeit的作用
- Android众说纷纭分辨率
- 计算机领域中的牛人,计算机视觉领域的牛人 | 丕子
- docker学习实践之路[第一站]环境安装
- Shell中的if语句中的
- [Java网络编程基础]InetAddress的使用
- SecureCRT连接linux时主机名,secureCRT连接linux方法
- Ajax/JavaScript脚本大全,JS脚本大全
- java中display1_关于displaytag1.1的两种分页
- android 如何解锁屏幕,2解锁屏幕破裂Android手机的方法(自由方式)
- 为树莓派制作系统镜像时进行瘦身,方便后续保存与批量写入
- 资深渗透测试工程师的渗透技巧总结(67个Tips)
- HTML作业-蛋糕店
- THREE.js(二):设置材质线条宽度(lineWidth) 无效
- 神经网络第一篇——感受野的学习、计算与思考
- c++算法的上界下界
- TiDB部署----openEuler2203/2003 单机部署TiDB 6.1.1
- 使用FileOutPutStream下载docx文件报文件已损坏解决
- 【JS】Day34-35
- 学渣之路:一个月拯救我英语四级
热门文章
- 《Effective C艹》读书笔记(3)
- python网络爬虫抹除webdriver指纹绕过淘宝滑块验证登录
- Spring Cloud学习系列第一章:Eureka之服务注册与发现
- 尤雨溪最近发布了5kb的vue,新作 petite-vue
- 简单的数据库关系表建立
- Prometheus监控(一)
- DQN神经网络小结(Pytorch版)
- Unity中点击物体后让其消失(注意:要使用hit.collider,而不是this,要时刻注意你要哪一个消失)
- 为公司高管履职风险买单的董监高责任保险DO
- 有了云服务器能干什么用的_云服务器能干什么,具体有什么作用?