XiaoQuQu @ 2021-06-12 20:00:55
rt,大佬 @zhylj 写的题解实测 #6 WA.
测试代码:
#include<algorithm>
#include<cstdio>
using namespace std;
int n, m, c[40005] = { 0 }, a[40005] = { 0 }, b[40005] = { 0 }; //定义数组,b[]为读入的数组,a[]为要离散化后的数组,C[]为树状数组
inline void Add(register int x) //树状数组加入
{
for (; x <= n; x += (x & -x))
c[x]++; //因为这里只需要1,所以我就写出c[x]++了
}
inline int Sum(register int x) //树状数组求和,同上面的sum(x)
{
register int s = 0; //计数的变量
for (; x > 0; x -= (x & -x)) //累计
s += c[x];
return s; //返回结果
}
bool cmp1(const int& x, const int& y) //离散化需要用的,上面有讲
{
return b[x] > b[y];
}
int main()
{
freopen("C:\\Users\\XiaoQ\\Downloads\\test.in", "r", stdin);
int ans = 0; //ans为最后的结果
scanf("%d", &n); //读入n
for (register int i = 1; i <= n; i++)
{
scanf("%d", &b[i]); //读入
a[i] = i; //顺便初始化一下a数组
}
sort(a + 1, a + n + 1, cmp1); //给a数组排序,达到最终的效果
for (register int i = 1; i <= n; i++)
{
Add(a[i]); //依次加入树状数组
ans += Sum(a[i] - 1); //计算结果并累计
}
printf("%d", ans); //输出ans
return 0; //返回
}
(自己wa了就想把别人拖下水的屑
by XiaoQuQu @ 2021-06-12 20:03:27
@小粉兔 @mrsrz
by Dreamweaver @ 2021-06-12 20:45:51
v#include<algorithm>
#include<cstdio>
using namespace std;
#define int long long
int n, m, c[500005] = { 0 }, a[500005] = { 0 }, b[500005] = { 0 }; //定义数组,b[]为读入的数组,a[]为要离散化后的数组,C[]为树状数组
inline void Add(register int x) //树状数组加入
{
for (; x <= n; x += (x & -x))
c[x]++; //因为这里只需要1,所以我就写出c[x]++了
}
inline int Sum(register int x) //树状数组求和,同上面的sum(x)
{
register int s = 0; //计数的变量
for (; x > 0; x -= (x & -x)) //累计
s += c[x];
return s; //返回结果
}
bool cmp1(const int& x, const int& y) //离散化需要用的,上面有讲
{
return b[x] == b[y]? x > y : b[x] > b[y] ;
}
signed main()
{
freopen("C:\\Users\\XiaoQ\\Downloads\\test.in", "r", stdin);
int ans = 0; //ans为最后的结果
scanf("%lld", &n); //读入n
for (register int i = 1; i <= n; i++)
{
scanf("%lld", &b[i]); //读入
a[i] = i; //顺便初始化一下a数组
}
sort(a + 1, a + n + 1, cmp1); //给a数组排序,达到最终的效果
for (register int i = 1; i <= n; i++)
{
Add(a[i]); //依次加入树状数组
ans += Sum(a[i] - 1); //计算结果并累计
}
printf("%lld", ans); //输出ans
return 0; //返回
}
@XiaoQuQu 其实这样就行了
by XiaoQuQu @ 2021-06-13 08:29:04
@Dreamweaver 谢谢,那就请 @zhylj 大佬更改题解。
by 李夹木 @ 2021-08-19 09:51:44
说明你在抄[狗头]保命