Lost Cows POJ 2182 思维

题意

是说有n头牛,它们身高不一但是排成了一队,从左到右编号为1到n,现在告诉你从第二号开始前面的那些牛中身高小于它的个数,一共有n-1个数。然后求出它们按照身高来排序的话从低到高编号会是多少。

解题思路

首先我们需要从它给的数据逆序来进行处理,为什么,比如倒数第一个数据是0的话,说明前面没有比它矮的牛,那么它的编号就是1,然后倒数第二个是2的话,就是说前面有两个比它矮,因为1号已经有了,所以他就是4号,后面以此类推。

根据这个思路我们就可以进行模拟(或者说暴力来进行解决),当然也可以使用线段树或则树状数组来进行优化。

这里还有一种算法,是基于冒泡排序的,是hxr大哥想到的,真是tql。

代码实现

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=8e5+7;
int a[maxn], vis[maxn];
int n;
int main()
{
scanf("%d", &n);
for(int i=2; i<=n; i++)
{
scanf("%d", &a[i]);
}
int t;
for(int i=n; i>=1; i--)
{
t=a[i]+1;
for(int j=1; j<=t; j++) //这是在剩下的数中查找第t小的数
{
if(vis[j]==1)
t++;
}
a[i]=t;
vis[t]=1;
}
for(int i=1; i<=n; i++)
{
printf("%d\n", a[i]);
}
return 0;
}

冒泡排序法

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn=8e3+7;
int a[maxn], id[maxn];
int num[maxn];
int n;
int main()
{
cin>>n;
a[1]=0;
id[1]=1;
for(int i=2; i<=n; i++)
{
cin>>a[i];
id[i]=i;
}
for(int j=1; j<n; j++)
{
for(int i=1; i<n; i++)
{
if(a[i]>=a[i+1])
{
a[i]++;
swap(a[i], a[i+1] );
swap(id[i], id[i+1]);
//for(int t=1; t<=n; t++) cout<<a[t]<<" "; cout<<"\n";
//for(int t=1; t<=n; t++) cout<<id[t]<<" "; cout<<"\n";
//system("pause");
} }
}
for(int i=1; i<=n; i++)
num[id[i]]=i;
for(int i=1; i<=n; i++)
{
cout<<num[i]<<endl;
} return 0;
}

Lost Cows POJ 2182 思维+巧法的更多相关文章

  1. SDUT 3033 这题实在不知道起啥名好了(思维巧法)

    这题实在不知道起啥名好了 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 懒得想背景故事了,开门见山. 有一个长度为n的整数数列A ...

  2. Lost Cows POJ - 2182 二分 + 树状数组

    Code: #include<cstdio> #include<stack> #include<cstring> #include<algorithm> ...

  3. POJ 2182/暴力/BIT/线段树

    POJ 2182 暴力 /* 题意: 一个带有权值[1,n]的序列,给出每个数的前面比该数小的数的个数,当然比一个数前面比第一个数小的个数是0,省略不写,求真正的序列.(拗口) 首先想到的是从前到后暴 ...

  4. Buy Tickets POJ - 2828 思维+线段树

    Buy Tickets POJ - 2828 思维+线段树 题意 是说有n个人买票,但是呢这n个人都会去插队,问最后的队列是什么情况.插队的输入是两个数,第一个是前面有多少人,第二个是这个人的编号,最 ...

  5. POJ 2182 Lost Cows 【树状数组+二分】

    题目链接:http://poj.org/problem?id=2182 Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  6. poj 2182 Lost Cows(段树精英赛的冠军)

    主题链接:http://poj.org/problem? id=2182 Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  7. POJ 2182 / HDU 2711 Lost Cows(平衡树)

    Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...

  8. 【POJ 2182】Lost Cows

    [题目链接] http://poj.org/problem?id=2182 [算法] 树状数组 + 二分 [代码] #include <algorithm> #include <bi ...

  9. POJ 2182 Lost Cows

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10996   Accepted: 7059 Description N (2 ...

随机推荐

  1. classloader加载class的流程及自定义ClassLoader

    java应用环境中不同的class分别由不同的ClassLoader负责加载.一个jvm中默认的classloader有Bootstrap ClassLoader.Extension ClassLoa ...

  2. POJ-2516-Minimum Cost(网络流, 最小费用最大流)

    链接: https://vjudge.net/problem/POJ-2516 题意: Dearboy, a goods victualer, now comes to a big problem, ...

  3. heroinfo_set.all 函数

    如果是 一对多 关系 即使用 heroinfo_set.all  此时关联字段类型通用,即上边的字段通用,但是需要添加many=True的参数heroinfo_set = serializers.Pr ...

  4. 047:创建和映射ORM模型

    创建ORM模型: ORM 模型一般都是放在 app 的 models.py 文件中.每个 app 都可以拥有自己的模型.并且如果这个模型想要映射到数据库中,那么这个 app 必须要放在 setting ...

  5. flask入门,Hello World!

    flask这个框架简单易用,去年2018的使用份额已经快接近django了.入门首选,没有太多的要求. 接下来,写个Hello World吧 1.新手入门,如果你是在windows下使用的,需要先安装 ...

  6. 在mac上安装rabbitmq

    在 OS X 上安装 RabbitMQ¶ 在 Snow Leopard 上安装 RabbitMQ 最简单的方式就是 Homebrew ——OS X 上的一款新颖别致,光彩动人的包管理系统. 在本例中, ...

  7. php实现大文件上传带进度条

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...

  8. linux 阿里云oss命令ossutil64 同步文件

    官方使用文档: https://help.aliyun.com/document_detail/120057.html?spm=a2c4g.11186623.4.2.1c35448ak8Ez8e [r ...

  9. JavaSE——柏羲

    MySql Redis源码分析呢?

  10. C++ STL bitset总结

    基础用法 C++ Reference 神犇博客 余下的就是例题了 [BZOJ3687]简单题 考虑\(DP\),设\(f[i][j]\)表示前\(i\)个元素的算数和为\(j\)的子集个数,有: \[ ...