noi.ac #227 random

Posted 11haonb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noi.ac #227 random相关的知识,希望对你有一定的参考价值。

这个题还是比较ez的。但是我还是因为忘记清零num1,num2数组半个小时才A我透
首先考虑暴力,一个一个比较,60pts到手
T1谁只想拿60?
憨的离谱
我们可以设置数组,即num1, 来表示在 \(a\) 中比 \(a[i]\) 小的数的个数,num2同理。
再更新一遍前缀和,\(O(n)\) 扫一遍,统计答案即可。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int ali, bob;
int t;
int n;
int a[N], b[N];
int num1[N * 10], num2[N * 10];
int main() 
    cin >> t;
    while(t--) 
        memset(num1,0,sizeof(num1));
        memset(num2,0,sizeof(num2));
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        ali = bob = 0;
        scanf("%d",&n);
        for (int i = 1; i <= n; i++) scanf("%d",&a[i]);
        for (int i = 1; i <= n; i++) scanf("%d",&b[i]);
        sort(a+1,a+n+1);
        sort(b+1,b+n+1);
        for (int i = 1; i <= n; i++) 
            num1[a[i]]++;
            num2[b[i]]++;
        
        for (int i = 1; i <= 1e6; i++) 
            num1[i] = num1[i-1] + num1[i];
            num2[i] = num2[i-1] + num2[i];
        
        for (int i = 1; i <= n; i++) 
            ali += num2[a[i]];
            bob += num1[b[i]];
        
        if(ali > bob) 
            puts("Alice");
            continue;
        
        if(ali == bob) 
            puts("Tie");
            continue;
        
        if(ali < bob) puts("Bob");
    
    return 0;

以上是关于noi.ac #227 random的主要内容,如果未能解决你的问题,请参考以下文章

Noi.ac #51题解

noi.ac #528 神树和排列

@noi.ac - 489@ shuffle

noi.ac #39

noi.ac #712 练级

@noi.ac - 488@ cleaner