题目背景

kkk在赛车~

题目描述

现在有N辆赛车行驶在一条直线跑道(你可以认为跑道无限长)上。它们各自以某种速度匀速前进,如果有两辆车A车和B车,A车在B车的后面,且A车的速度大于B车的速度,那么经过一定的时间后,A车必定会超过B车,这称为一次超车。求超车总数。道路起点的位置为0,没有两辆车的初始位置相同。

输入输出格式

输入格式:

第一行,一个数n,车辆的总数。

第二行~第n+1行,为n辆车的信息,每行有两个正整数x,y。X为起始位置,y为速度。0小于x,y<=1000000

输出格式:

超车总数

输入输出样例

输入样例#1:

2

5 6

2 8

输出样例#1:

1

说明

n最大30W

【题目链接】:https://www.luogu.org/problem/show?pid=U4566

【题解】



五中的一个小学弟问我的。。

预处理出每个位置的车的编号i,存在h数组中;

记录每辆车的信息在x[i],v[i]中;

枚举0->100W位置i;

直接在线段树中返回速度区间在0..v[h[i]]-1的车的数量;

累加进答案;

然后在线段树中递减v[h[i]]这个节点;

(线段树单节点更新);

这样可以保证我们询问的时候返回的速度都是在后面的车的速度;



【完整代码】

#include <cstdio>
#include <iostream>
#include <algorithm>
#define LL long long using namespace std; const int MAX = 1000009;
const int MAXN = 300009; int pre[MAX];
int x[MAXN],y[MAXN],sum[MAX<<2]= {0};
int h[MAX]; void updata(int c,int pos,int l,int r,int rt)
{
if (l==r)
{
sum[rt]+=c;
return;
}
int m = (l+r)>>1;
if (pos <=m)
updata(c,pos,l,m,rt<<1);
else
updata(c,pos,m+1,r,rt<<1|1);
sum[rt] = sum[rt<<1]+sum[rt<<1|1];
} LL query(int L,int R,int l,int r,int rt)
{
if (L <= l && r<= R)
return sum[rt];
int m = (l+r)>>1;
LL temp1 = 0,temp2 = 0;
if (L <= m)
temp1+=query(L,R,l,m,rt<<1);
if (m < R)
temp2+=query(L,R,m+1,r,rt<<1|1);
return temp1+temp2;
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
int n;
scanf("%d",&n);
for (int i =1;i <= n;i++)
{
scanf("%d%d",&x[i],&y[i]);
h[x[i]] = i;
updata(1,y[i],0,MAX-9,1);
}
LL ans = 0;
for (int i = 0;i <= MAX-9;i++)
if (h[i])
{
int v = y[h[i]];
ans += query(0,v-1,0,MAX-9,1);
updata(-1,v,0,MAX-9,1);
}
cout << ans<<endl;
return 0;
}

【水水水】【洛谷 U4566】赛车比赛的更多相关文章

  1. 赛车比赛(洛谷U4566)

    题目背景 kkk在赛车~ 题目描述 现在有N辆赛车行驶在一条直线跑道(你可以认为跑道无限长)上.它们各自以某种速度匀速前进,如果有两辆车A车和B车,A车在B车的后面,且A车的速度大于B车的速度,那么经 ...

  2. 洛谷——P1626 象棋比赛

    P1626 象棋比赛 题目描述 有N个人要参加国际象棋比赛,该比赛要进行K场对弈.每个人最多参加两场对弈,最少参加零场对弈.每个人都有一个与其他人不相同的等级(用一个正整数来表示). 在对弈中,等级高 ...

  3. 洛谷 P1626 象棋比赛

    P1626 象棋比赛 题目描述 有N个人要参加国际象棋比赛,该比赛要进行K场对弈.每个人最多参加两场对弈,最少参加零场对弈.每个人都有一个与其他人不相同的等级(用一个正整数来表示). 在对弈中,等级高 ...

  4. 洛谷.4015.运输问题(SPFA费用流)

    题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype&g ...

  5. 「P4994」「洛谷11月月赛」 终于结束的起点(枚举

    题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...

  6. 【洛谷】CYJian的水题大赛 解题报告

    点此进入比赛 \(T1\):八百标兵奔北坡 这应该是一道较水的送分题吧. 理论上来说,正解应该是DP.但是,.前缀和优化暴力就能过. 放上我比赛时打的暴力代码吧(\(hl666\)大佬说这种做法的均摊 ...

  7. 洛谷P3230 比赛

    emmmmmm,这个之前讲课的原题居然出到比赛里了. 我怒肝2h+然后A了此题,结果还是被某高一巨佬吊打...... 题意:n个球队两两比赛,胜得3分,败得0分,平得1分. 现有一个总分表,求问可能的 ...

  8. [洛谷P1707] 刷题比赛

    洛谷题目连接:刷题比赛 题目背景 nodgd是一个喜欢写程序的同学,前不久洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- ...

  9. 洛谷 P1223 排队接水

    洛谷 P1223 排队接水 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共 ...

随机推荐

  1. PatentTips - Method and Apparatus to Support Virtualization with Code Patches

    BACKGROUND As recognized in Revision 2.0 of the Intel® Virtualization Technology Specification for t ...

  2. Tomcat源代码阅读#1:classloader初始化

    Bootstrap 通过Tomcat的启动脚本能够看到启动的入口是在Bootstrap,来看下Bootstrap的main方法, /** * Main method and entry point w ...

  3. Cocos2d-x学习笔记(一)HelloWorld

    原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38656755 前言 正式来公司实习已有一月,前一月主要是看了<C ...

  4. Codeforces Round #460 (Div. 2) E. Congruence Equation (CRT+数论)

    题目链接: http://codeforces.com/problemset/problem/919/E 题意: 让你求满足 \(na^n\equiv b \pmod p\) 的 \(n\) 的个数. ...

  5. 快速搭建REST API——json server

    一:全局安装json-server npm install json-server -g 二:在自己项目跟目录下存放mock/data.json,json内容如下: { "roles&quo ...

  6. 2018VMware虚拟机安装Mac OS 10.12.1

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.下载安装中所需的镜像文件以及补丁工具 Mac OS 10.12.1 Sierra (16B2555) 懒人版(下载地址):ht ...

  7. 算法 Tricks(六)— if 条件分支的简化

    考虑下面的三分支的定义式: f=⎧⎩⎨⎪⎪a,b,a+b,x>yx<yx=y int f = 0; if (x >= y) f += a; if (x <= y) f += b ...

  8. 24、驱动调试之printk

    1.uboot跳转到内核启动的时候通过环境变量 console设置控制台 (console = ttySAC0表示输出到串口,并从串口结束输入,也可以设置console=tty1,表示输出到LCD,从 ...

  9. angular管道相关知识

    原文地址 https://www.jianshu.com/p/22e0f95bcf24 什么是管道 每个应用开始的时候差不多都是一些简单任务:获取数据.转换它们,然后把它们显示给用户. 获取数据可能简 ...

  10. Linux与Windows间使用git

    Linux与Windows间使用git Linux上架设git服务器,windows可以使用git从Linux上拉取/上传数据 windows使用工具:Git for Windows Linux上的用 ...