洛谷p1966火柴排队题解
ps:鉴于你们的蒟蒻yxj实在太蒻辽, 所以, 看不懂也是正常的........
树状数组
xxy学姐给我们讲的树状数组, 她讲的真的是太好啦!qwq!吹爆xxy
然后, 为了巩固自己, 硬着头皮写题解
读完题之后来分析是要求逆序对
可以先离散化
因为我们要顺序存, f1数组的第i小和f2数组的第i小在同一个位置一定就是最优的
然后再求在离散化的那个数组里的逆序对的个数
你们将就着看代码吧,水平不够啊qwq..
#include <iostream>
#include <cstdio>
#include <algorithm>
#define mod 99999997
using namespace std;
const int N = ;
struct node {
long long h, id;
}f1[N], f2[N];
int n;
int id[N], c[N];
int cmp (node x, node y) {
return x.h < y.h;
}
int lowbit (int k) {
return k & (-k);
}
void change (int k) {
while (k <= n) {
c[k]++;
c[k] %= mod;
k += lowbit (k);
}
}
int query (int k) {
long long sum = ;
while (k) {
sum += c[k];
sum %= mod;
k -= lowbit (k);
}
return sum;
}
int main () {
scanf ("%d", &n);
for (int i = ; i <= n; i++)
scanf ("%lld", &f1[i].h),f1[i].id = i;
for (int i = ; i <= n; i++)
scanf ("%lld", &f2[i].h), f2[i].id = i;
sort (f1 + , f1 + + n, cmp);
sort (f2 + , f2 + + n, cmp);
for (int i = ; i <= n; i++)
id[f1[i].id] = f2[i].id;
long long ans = ;
for (int i = ; i <= n; i++) {
change (id[i]);
ans += i - query(id[i]);
ans %= mod;
}
printf ("%lld", ans);;
return ;
}
洛谷p1966火柴排队题解的更多相关文章
- [NOIP2013提高&洛谷P1966]火柴排队 题解(树状数组求逆序对)
[NOIP2013提高&洛谷P1966]火柴排队 Description 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相 ...
- 洛谷 P1966 火柴排队 题解
归并排序 很玄学的一道题目,用另类的方法求出逆序对的数量就可以AC 我的思路是这样的: 按照题目,输入数据用两个数组a,b储存, 同时,用另外两个数组c,d分别对应前面两个a,b储存, 就是前面两个的 ...
- 【刷题】洛谷 P1966 火柴排队
题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...
- 洛谷 P1966 火柴排队 解题报告
P1966 火柴排队 题目描述 涵涵有两盒火柴,每盒装有 \(n\) 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: \(\s ...
- 洛谷——P1966 火柴排队&&P1774 最接近神的人_NOI导刊2010提高(02)
P1966 火柴排队 这题贪心显然,即将两序列中第k大的数的位置保持一致,证明略: 树状数组求逆序对啦 浅谈树状数组求逆序对及离散化的几种方式及应用 方法:从前向后每次将数插入到bit(树状数组)中, ...
- [洛谷P1966] 火柴排队
题目链接: 火柴排队 题目分析: 感觉比较顺理成章地就能推出来?似乎是个一眼题 交换的话多半会往逆序对上面想,然后题目给那个式子就是拿来吓人的根本没有卵用 唯一的用处大概是告诉你考虑贪心一波,很显然有 ...
- 洛谷 P1966 火柴排队
题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:∑(ai−bi)2 其中ai 表示 ...
- 洛谷 P1966 火柴排队 —— 思路
题目:https://www.luogu.org/problemnew/show/P1966 首先,一个排列相邻交换变成另一个排列的交换次数就是逆序对数: 随便画一画,感觉应该是排个序,大的对应大的, ...
- 洛谷——P1966 火柴排队
https://www.luogu.org/problem/show?pid=1966 题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列 ...
随机推荐
- 世界上最大的软件注册表-----npm
npm 是什么? npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门.它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(pack ...
- Cat搭建遇坑记
1. Cat搭建遇坑记 1.1. 报错 服务端启动 Unable to get component: class com.dianping.cat.analysis.TcpSocketReceiver ...
- CTFd平台搭建以及一些相关问题解决
CTFd平台搭建以及一些相关问题解决 一.序言 因为想给学校工作室提高一下学习氛围,随便带学弟学妹入门,所以做了一个ctf平台,开源的平台有CTFd和FBCTF,因为学生租不起高端云主机所以只能选择占 ...
- Elasticsearch使用DateHistogram聚合
date_histogram是按照时间来构建集合(桶)Buckts的,当我们需要按照时间进行做一些数据统计的时候,就可以使用它来进行时间维度上构建指标分析. 在前面几篇中我们用到的hitogr ...
- Kafka消费者组静态成员(static consumer member)
Kafka 2.3发布后官网的Consumer参数中增加了一个新的参数:group.instance.id.下面是这个参数的解释: A unique identifier of the consume ...
- Tensorflow快餐教程(1) - 30行代码搞定手写识别
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lusing/article/details ...
- Nginx作为代理服务
代理服务简介 什么是代理服务 代理-代理办理(代理理财.代理收货.代理购物等等). HTTP请求没有代理服务的模型图 HTTP请求具有代理服务的模型图 代理分类 正向代理 反向代理 正向代理 当局域网 ...
- Golang 在 Mac、Linux、Windows 下如何交叉编译
转自 https://blog.csdn.net/panshiqu/article/details/53788067 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下 ...
- linux服务器问题排查:w命令卡住
基本情况 系统: ubuntu16.04 症状: who命令可以用,w命令用不了 sudo iotop命令会卡住,黑屏 nvidia-smi命令和nvl命令都用不了,卡住 排查步骤 strace ps ...
- springboot2.1.3 配置前后端跨域问题
很简单,创建一个配置类即可,如下: package com.app.gateway.common.config; import org.springframework.context.annotati ...