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平台的 ...
随机推荐
- 安卓权限申请处理框架Android-UsesPermission
安卓权限申请封装处理框架.测试支持4.0+.项目源于正式处理Android权限问题时,没找到简单.能满足被拒绝权限自动会到系统设置处理的框架,按自己的编程习惯造一个熟悉的轮子还是蛮好的.第一次使用An ...
- 配置Apache虚拟主机
实验环境 一台最小化安装的CentOS 7.3虚拟机 配置基础环境 1. 安装apache yum install -y httpd 2. 建立虚拟主机的根目录 mkdir /var/wwwroot ...
- Docker入门 第一课 --.Net Core 使用Docker全程记录
微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的. 我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Dock ...
- oracle 11g空表不能exp导出问题解决方案
oracle 11g空表不能exp导出问题解决方案 最近由于要进行迁移服务器代码和数据库,突然发现导出的表少了,通过排查发现空表尽然没有exp导出,真是郁闷啊,虽然是空表没数据,但也不能没有啊,如何是 ...
- win10 再次重装系统
去年经历了一次硬盘损坏,一蹶不振,伤了元气, 生产环境的系统一直没有好好的维护,我个人也是,有时一闪而过的窗口总让我觉得有什么不对,现在终于出现问题,XNA项目突然无法编译 提示: 严重性 代码 说明 ...
- 华为MAC Flapping , MAC的漂移
华为写的很详细,MAC 地址的漂移会导致流量的中断. 华为阻止MAC地址漂移的方法有三种: 一.端口配置静态MAC地址 在全局视图下,执行命令mac-address static mac-addres ...
- Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
目录 概括 Sparse PCA Formulation 非常普遍的问题 Optimality Conditions Eigenvalue Bounds 算法 代码 概括 这篇论文,不像以往的那些论文 ...
- 最长递增子序列(lis)最长公共子序列(lcs) 最长公共上升子序列(lics)
lis: 复杂度nlgn #include<iostream> #include<cstdio> using namespace std; ],lis[],res=; int ...
- Python学习第十三篇——函数的深层次运用
def make_pizza(size,*toppings): print("\nmaking a "+str(size)+" size pizza with follo ...
- IOS - UTF-8转码问题
2016.07.06 21:45* 字数 61 阅读 921评论 0喜欢 2 IOS中提供的转码. [utf8str stringByAddingPercentEscapesUsingEncoding ...