P1428 小鱼比可爱
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 小鱼比可爱的更多相关文章
- luogu P1428 小鱼比可爱 x
P1428 小鱼比可爱 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示 ...
- 洛谷 P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然 ...
- 洛谷P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...
- 洛谷——P1428 小鱼比可爱
https://www.luogu.org/problem/show?pid=1428 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从 ...
- Java实现洛谷 P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...
- 洛谷P5463 小鱼比可爱(加强版) 题解
写博客不易,来玩会? 这道题我和dalao们的做法略有不同,我用的是归并排序做法qwq 归并排序求逆序对大家应该很清楚了,我这里就来讲讲如何用归并排序求出这道题的答案 让我们先观察一下规律 举个栗子, ...
- 七月月赛T3
题目背景 本题时空限制已经扩大 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 用3D再现2D偶像的可爱,Cygames【偶像大师 灰姑娘女孩】开发示例
作为万代南梦宫娱乐的偶像养成游戏[偶像大师]的派生作品,是由Mobage创作的[偶像大师 灰姑娘女孩].这个游戏的最新作品,是现在累计下载突破1200万的大作,Android/iOS平台的 ...
随机推荐
- .NET Core Community 第二个千星项目诞生:Util
本文所有打赏将全数捐赠于 NCC(NCC 的资金目前由 倾竹大人 负责管理),请注明捐赠于 NCC.捐赠情况将由倾竹大人另行公示. 项目简介 作为一款旨在提升小型团队开发输出能力.提高团队效率.降低项 ...
- Python股票分析系列——获得标普500的所有公司股票数据.p6
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第6部分. 在之前的Python教程中,我们介绍了如何获取我们感兴趣的公司名单(在我们的案例中是 ...
- 如何利用snmp协议发现大型复杂环境的网络拓扑
参考文献:http://blog.51cto.com/13769225/2121431 获取指标参考下图: 1.取接口描述(指定VLAN号) 命令:snmpwalk -v 2c -c Cvicse12 ...
- Leetcode 2. Add Two Numbers(medium)
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- Gym 101873F Plug It In(二分图匹配)
题目链接:http://codeforces.com/gym/101873/problem/F 题意:有n个插孔,m个机器,和一个插板,一个插孔可以连接一个机器,插板可以使一个插孔连接三个机器,找到最 ...
- Less or Equal CodeForces - 977C (sort+细节)
You are given a sequence of integers of length nn and integer number kk. You should print any intege ...
- ubuntu中更改apache默认目录的方法
如上,在这两个文件中,我都改为/home/www 及/home/www/html
- 如果需要精确的答案,请避免使用float和double
Java中的简单浮点数类型float和double不能够进行运算.不光是Java,在其它很多编程语言中也有这样的问题.在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上 ...
- Excel之批量改变特定字体颜色(转载)
改变单元格内部分特定字符的颜色,如果批量操作,需要用宏处理, 如下例,将范围内 所有字母A 变成红色 操作步骤:右键点击工作表标签,查看代码,如下代码复制进去Private Sub CommandBu ...
- React-Native之截图组件view-shot的介绍与使用
React-Native之截图组件view-shot的介绍与使用 一,需求分析 1,需要将分享页生成图片,并分享到微信好友与朋友圈. 二,react-native-view-shot介绍 1,可以截取 ...