P1428

题目描述

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

输入输出格式

输入格式:

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

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

输出格式:

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

输入样例

6
4 3 0 5 1 2

输出样例

0 0 0 3 1 2

一般解法:

#include <bits/stdc++.h>
using namespace std;
int a[],b[],n;
int main(){
cin>>n;
for (int i=;i<=n;i++)//读入每条鱼的可爱值
cin>>a[i];
for (int i=;i<=n;i++)//枚举N条鱼
for (int j=i;j>=;j--){//从第I个位置倒着往前找
if (a[j]<a[i])
b[i]++;//如果找到比第I条鱼丑的,统计数组b对应的b[i]+1
}
for (int i=;i<=n;i++)
cout<<b[i]<<" ";//输出
return ;
}

树状数组逆序对

  1、构造结构体,然后根据可爱值的大小来排序,其实也是离散化,但是这里不需要专门用数组记录。

  2、因为已经根据可爱值的大小进行排序,所以就按值的大小进行标记,即将树状数组c加1。

  3、那么求逆序对就是求index-1前已经标记过的c的个数。

  4、对于这道题,将第i条鱼前面鱼的个数减去他前面逆序对的个数就是没有他可爱的鱼的个数。

代码如下:

#include <bits/stdc++.h>
using namespace std;
int n;
struct node{
int val,index;
}a[];
bool cmp(node a,node b){
return a.val>b.val;
}
bool cmp1(node a,node b){
return a.index<b.index;
}
int c[],ans[];
int lowbit(int x){
return x&(-x);
}
void update(int x,int val){
for(int i=x;i<=n;i+=lowbit(i))
c[i]+=;
}
int getsum(int x){
int tp=;
for(int i=x;i>;i-=lowbit(i))
tp+=c[i];
return tp;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)
scanf("%d",&a[i].val),a[i].index=i;
sort(a+,a++n,cmp);
for(int i=;i<=n;++i){
update(a[i].index,);
ans[a[i].index]=getsum(a[i].index-);
}
sort(a+,a++n,cmp1);
for(int i=;i<=n;++i)
printf("%d ",i-ans[i]-);
return ;
}

动态开点的权值线段树:

代码如下:

#include<bits/stdc++.h>
#define maxn 107
#define maxnode 5007
#define maxval 2147483646
using namespace std; int n,a[maxn];
int tree[maxnode][],rt=,nodenum=; void PushUp(int rt){
tree[rt][]=tree[ tree[rt][] ][]+tree[ tree[rt][] ][];
} int query(int L,int R,int l,int r,int &rt){
if (rt==) return ; //[1] 若该点不存在,返回0(说明该点没有值)
if (L<=l && r<=R) return tree[rt][];
int m=(l+r)>>; int ANS=;
if (L<=m) ANS+=query(L,R,l,m,tree[rt][]);
if (R>m) ANS+=query(L,R,m+,r,tree[rt][]);
return ANS;
} void update(int L,int C,int l,int r,int &rt){
if (rt==){ //[2] 若该点不存在,新建改点
nodenum++;
rt=nodenum;
tree[nodenum][]=tree[nodenum][]=tree[nodenum][]=;
}
if (l==r){
tree[rt][]+=C;
return;
}
int m=(l+r)>>;
if (L<=m) update(L,C,l,m,tree[rt][]);
else update(L,C,m+,r,tree[rt][]);
PushUp(rt);
} int main(){
int n;
scanf("%d", &n);
for (int i=; i<=n; i++){
int val;
scanf("%d", &val);
printf("%d ",query(,val-,,maxval,rt));
update(val,+,,maxval,rt);
}
}

P1428 小鱼比可爱的更多相关文章

  1. luogu P1428 小鱼比可爱 x

    P1428 小鱼比可爱 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示 ...

  2. 洛谷 P1428 小鱼比可爱

    题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然 ...

  3. 洛谷P1428 小鱼比可爱

    题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...

  4. 洛谷——P1428 小鱼比可爱

    https://www.luogu.org/problem/show?pid=1428 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从 ...

  5. Java实现洛谷 P1428 小鱼比可爱

    题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...

  6. 洛谷P5463 小鱼比可爱(加强版) 题解

    写博客不易,来玩会? 这道题我和dalao们的做法略有不同,我用的是归并排序做法qwq 归并排序求逆序对大家应该很清楚了,我这里就来讲讲如何用归并排序求出这道题的答案 让我们先观察一下规律 举个栗子, ...

  7. 七月月赛T3

    题目背景 本题时空限制已经扩大 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数 ...

  8. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  9. 用3D再现2D偶像的可爱,Cygames【偶像大师 灰姑娘女孩】开发示例

          作为万代南梦宫娱乐的偶像养成游戏[偶像大师]的派生作品,是由Mobage创作的[偶像大师 灰姑娘女孩].这个游戏的最新作品,是现在累计下载突破1200万的大作,Android/iOS平台的 ...

随机推荐

  1. MyBatis动态SQL(认真看看, 以后写SQL就爽多了)

    目录 0 一起来学习 mybatis 1 数据准备 2 if 标签 2.1 在 WHERE 条件中使用 if 标签 2.1.1 查询条件 2.1.2 动态 SQL 2.1.3 测试 2.2 在 UPD ...

  2. 为什么大公司一定要使用DevOps?

    0 DevOps的意图 究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁?即开发团队和IT运维团队!那么,DevOps的意图是什么呢?即在两个团队之间,建立良好 ...

  3. vue文档全局api笔记2

    1.Vue.filter( id, [definition] ) 在组件内注册 <template> <div id="app"> <div clas ...

  4. H5 24-CSS三大特性之继承性

    24-CSS三大特性之继承性 我是段落 我是段落 我是超链接 我是大标题 <!DOCTYPE html> <html lang="en"> <head ...

  5. hdu 2063 给男女匹配 (匈牙利算法)

    来源:http://acm.hdu.edu.cn/showproblem.php?pid=2063 题意: 有k个组合a,b组合,代表a愿意与b坐过山车,共m个女生 n个男生,问有多少个满意的匹配 题 ...

  6. 【学习总结】Git学习-参考廖雪峰老师教程三-创建版本库

    学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...

  7. vue动态class——实现tag的选中状态

    vue动态class——实现tag的选中状态 <template> <div class="common-nav"> <div class=" ...

  8. 解决Window安全中心对Kitematic-0.17.3-Ubuntu.zip提示病毒,但无法删除的问题。

    Trojan:JS/Tisifi.B 类型:特洛伊木马 containerfile: C:\Users\Administrator\Desktop\Kitematic-0.17.3-Ubuntu.zi ...

  9. 获取打开页面时的当前时间(yyyy-MM-dd hh:mm:ss)

    Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d ...

  10. 10分钟让你的代码更加pythonic

    参考: https://blog.csdn.net/g8433373/article/details/80709116