1 条题解

  • 0
    @ 2024-12-5 18:19:40

    C++ :

    #include<iostream>
    using namespace std;
    const int N = 3e5+5;
    int n;
    int a, c[N];
    long long ans;
    
    int lowbit(int x)
    {
    	return x & -x;
    }
    
    void add(int x, int y)
    {
    	for(int i=x;i<=n;i+=lowbit(i))
    		c[i] += y;
    }
    
    int ask(int x)
    {
    	int res = 0;
    	for(int i=x;i;i-=lowbit(i))
    		res += c[i];
    	return res;
    }
    
    int main()
    {
    	cin>>n;
    	for(int i=n;i;i--)
    	{
    		cin>>a;
    		a++;	//由于lowbit(0)=0,注意把a整体向右偏移一位 
    		ans += ask(a-1);
    		add(a, 1);
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1

    GSEP 6级T2真题 [202309] 小杨的握手问题

    信息

    ID
    9170
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者