社区讨论

CE?

学术版参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mlkqos33
此快照首次捕获于
2026/02/13 18:23
6 天前
此快照最后确认于
2026/02/16 21:20
3 天前
查看原帖
我在做P5463的时候,提交了一份这样的代码
CPP
#include <bits/stdc++.h>
using namespace std;
#define int __int128
//区间和+单点改
int n,m,ld;int ams;
unordered_map<int,int>umap;
int b[1100000];
int d[1100000];
int c[1100000];
int a[1100000];
inline int read()
{
	int x = 0,f = 1;
	char ch = getchar();
	while(ch < '0' || ch > '9')
	{
		if(ch == '-'){f = -1;}
		ch = getchar();
	}
	while(ch >= '0' && ch <= '9')
	{
		x = (x << 3) + (x << 1) + ch - '0';
		ch = getchar();
	}
	return x * f;
}
inline void write(int x)
{
	if(x < 0)
	{
		putchar('-');
		x = -x;
	}
	if(x > 9)
	{
		write(x / 10);
	}
	putchar(x % 10 + '0');
}

int lowbit(int x)
{
	return x & -x;
}

int g1r(int x)
{
	int ans = 0;
	while(x > 0)
	{
		ans += c[x];
		x -= lowbit(x);
	}
	return ans;
}

int glrs(int l,int r)
{
	return g1r(r) - g1r(l - 1);
}

void change(int x,int y)
{
	int p = x;
	while(p <= n)
	{
		c[p] += y;
		p += lowbit(p);
	}
}

bool cmp(int x,int y){return x < y;}

signed main()
{
	n = read();
	for(int i = 1;i <= n;i++)
	{
		a[i] = read();
		b[i] = a[i];
	}
	sort(b + 1,b + n + 1);
	int m = unique(b + 1,b + n + 1) - b - 1;
	for(int i = 1;i <= n;i++)
	{
		d[i] = lower_bound(b + 1,b + m + 1,a[i]) - b;
	}
	for(int i = n;i >= 1;i--)
	{
		ams += i * g1r(d[i] - 1);
		change(d[i],(n - i + 1));
	}
	write(ams);
}
然后评测机告诉我CE了?我在我自己电脑上没CE啊

回复

6 条回复,欢迎继续交流。

正在加载回复...