题目名称 2729. [郑州集训 2017]NOI模拟题5.1
输入输出 order1.in/out
难度等级 ★★★☆
时间限制 2000 ms (2 s)
内存限制 256 MiB
测试数据 20
题目来源 GravatarShirry 于2017-07-11加入
开放分组 全部用户
提交状态
分类标签
容斥原理 排序 树状数组 逆序对
分享题解
通过:5, 提交:15, 通过率:33.33%
GravatarFoolMike 100 7.619 s 38.46 MiB C++
Gravatar再见 100 8.286 s 38.43 MiB C++
Gravatar梦那边的美好ET 100 9.120 s 41.30 MiB C++
Gravatarrewine 100 10.722 s 46.09 MiB C++
GravatarAAAAAAAAAA 100 13.263 s 53.72 MiB C++
Gravatarcdgyp 55 19.566 s 84.26 MiB C++
GravatarAAAAAAAAAA 55 19.687 s 152.90 MiB C++
Gravatar梦那边的美好ET 20 25.485 s 64.19 MiB C++
Gravatarcdgyp 15 19.542 s 84.26 MiB C++
GravatarShirry 15 22.615 s 72.79 MiB C++
关于 NOI模拟题5.1 的近10条评论(全部评论)
此题会卡cdq分治……
样例:
5
1 2
3 4
5 6
GravatarShirry
2017-07-12 15:21 5楼
这不是APIO2017倒数第二天陈老师课件里面的题吗?
直接容斥套二维偏序即可,二维偏序归并排序即可
UPD:话说wys排序+bit跑的比mergesort快一点吧……况且这题还不用wys
GravatarFoolMike
2017-07-12 08:47 4楼
终于过了!!!!!
《论逆序对的妙用》
GravatarAAAAAAAAAA
2017-07-11 23:56 3楼
回复 @AAAAAAAAAA : 你啥时候有头像了?_(:з)∠)_
GravatarShirry
2017-07-11 22:12 2楼
cdq55分
GravatarAAAAAAAAAA
2017-07-11 22:09 1楼

2729. [郑州集训 2017]NOI模拟题5.1

★★★☆   输入文件:order1.in   输出文件:order1.out   简单对比
时间限制:2 s   内存限制:256 MiB

以及,由于数据的问题,各位同学在提交的时候需要加上数据生成器,详情请参照以下模板


#include <iostream>
#include <algorithm>
// DATA_GEN --- BEGIN ---// 你可以直接将这个数据生成器嵌入到你的代码中
// 或者,你也可以根据自己程序的需要,自己改写这个数据生成器
// 使用方法:从输入文件读入 N 和随机数种子之后,调用 gen_data 方法,可以将获得的排列 {A}, {B}, {C} 分别存放在对应 3 个数组中
const int MAXN = 2e6 + 10;
int lastInt, seed;
inline int nextInt() {
	static const int mod = 1e9 + 7;
	lastInt = lastInt ^ (((long long) lastInt * lastInt + seed) % mod);
	return lastInt;
}
void getPerm(int P[], int n, int x0, int c) {
	for (int i = 1; i <= n; ++i) P[i] = i;
	lastInt = x0;
	seed = c;
	for (int i = n; i >= 1; --i) std::swap(P[i], P[nextInt() % i + 1]);
}
int n, A[MAXN], B[MAXN], C[MAXN];  // 生成的排列将存储在这三个数组中
void gen_data(int n, int a0, int seed_a, int b0, int seed_b, int c0, int seed_c) {
	getPerm(A, n, a0, seed_a);
	getPerm(B, n, b0, seed_b);
	getPerm(C, n, c0, seed_c);
}
// DATA_GEN --- END ---
int main()
{
	int n;
	int a0, s_a;
	int b0, s_b;
	int c0, s_c;
	std::cin >> n;
	std::cin >> a0 >> s_a;
	std::cin >> b0 >> s_b;
	std::cin >> c0 >> s_c;
	gen_data(n, a0, s_a, b0, s_b, c0, s_c);
	/*
	在这里填写你的程序
	*/
	return 0;
}