1.1歧路?捷径?AC代码。拿去记得给零食!!!
biggayboy
2020-12-02 18:57:12
2020-12-09 19:31:58
#include<bits/stdc++.h>
typedef long long lld;
const int N = 1e5 + 9, mod = 1e9 + 7;
int n, m, a[N], frac[N], tr[N];
inline int lowbit(int x)
{
return x & (-x);
}
void insert(int x)
{
while (x <= n)
{
++tr[x]; x += lowbit(x);
}
}
int query(int x)
{
int s = 0;
while (x)
{
s += tr[x];
x -= lowbit(x);
}
return s;
}
int cantor()
{
memset(tr, 0, sizeof tr);
int s = 0;
for (int i = 0; i < n; ++i)
{
int t = (n - a[i]) - (i - query(a[i]));
insert(a[i]);
s = (s + (lld)t * frac[n - 1 - i]) % mod;
}
return (s + 1) % mod;
}
int main()
{
scanf("%d%d", &n, &m);
frac[0] = 1;
for (int i = 1; i < n; ++i)
frac[i] = (lld)frac[i - 1] * i % mod;
while (m--)
{
for (int i = 0; i < n; ++i) scanf("%d", a + i);
printf("%d\n", cantor());
}
}
共 2 条回复
#include //STL通用算法 #include //STL位集容器 #include //字符处理 #include //定义错误码 #include //定义本地化函数 #include //定义数学函数 #include //复数类 #include //定义输入/输出函数 #include //定义杂项函数及内存分配函数 #include //字符串处理 #include //定义关于时间的函数 #include //STL双端队列容器 #include //异常处理类 #include //文件输入/输出 #include //STL定义运算函数(代替运算符) #include //定义各种数据类型最值常量 #include //STL线性列表容器 #include //STL 映射容器 #include //参数化输入/输出 #include //基本输入/输出支持 #include //输入/输出系统使用的前置声明 #include //数据流输入/输出 #include //基本输入流 #include //基本输出流 #include //STL队列容器 #include //STL 集合容器 #include //基于字符串的流 #include //STL堆栈容器 #include //标准异常类 #include //底层输入/输出支持 #include //字符串类 #include //STL通用模板类 #include //STL动态数组容器 #include //宽字符处理及输入/输出 #include
零食已经拿到了,谢谢楼主!!!