咕咕咕好久之后的Day23 洛谷P1428 小鱼比可爱

    技术2022-07-11  85

    题目

    人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。

    输入格式

    第一行输入一个整数 n,表示鱼的数目。

    第二行内输入 n 个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度。

    输出格式

    行内输出 n 个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。

    输入输出样例

    输入

    6 4 3 0 5 1 2

    输出

    0 0 0 3 1 2

    说明/提示

    对于 100% 的数据,n≤100。

    蒟蒻答案

    #include <stdio.h> #include <string.h> int main() { int n; int i,j; int num=0; scanf("%d",&n); int fish[105]; for (i=0;i<n;i++){ scanf("%d",&fish[i]); for (j=0;j<i;j++){ if (fish[j]<fish[i]){ num++; } } printf("%d ",num); num=0; } return 0; }

    神犇答案

    #include<stdio.h> int n; int treearray[101]; int lowbit(int x) { return x&(-x); } void add(int x) { while (x <= 100) { treearray[x]++; x += lowbit(x); } } int sum(int x) { int ans = 0; while (x > 0) { ans += treearray[x]; x -= lowbit(x); } return ans; } int main() { int i; int x; for (i = 0; i < 101; i++) { treearray[i] = 0; } scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &x); //这是排格式。。。 if (i == 0) printf("%d", sum(x));//每次输入一个值,计算他之前的和 else printf(" %d", sum(x)); add(x+1); } printf("\n"); return 0; }
    Processed: 0.010, SQL: 9