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. DevExpress ASP.NET Core Controls 2019发展蓝图(No.5)

    本文主要为大家介绍DevExpress ASP.NET Core Controls 2019年的官方发展蓝图,更多精彩内容欢迎持续收藏关注哦~ [DevExpress ASP.NET Controls ...

  2. MAN RPM

    RPM(8)   Red Hat Linux   RPM(8) NAME/名称       rpm - RPM Package Manager/RPM-RPM包管理器SYNOPSIS/简介  QUER ...

  3. Vuex-全局状态管理【简单小案例】

    前言: Vuex个人见解: 1.state :所有组件共享.共用的数据.理解为不是一个全局变量,不能直接访问以及操作它.2.mutations : 如何操作 state 呢?需要有一个能操作state ...

  4. 【JavaScript】 模拟JQuery的连续调用函数

    连续调用,了解调用主体 var zhangsan = { smoke: function () { console.log("Smoking..."); return this; ...

  5. [HG]钻石游戏diamond 题解

    题面 钻石游戏(diamond) 问题描述: 一个\(M\)行\(N\)列的棋盘,里面放了\(M \times N\)个各种颜色的钻石. 每一次你可以选择任意两个相邻的颜色不同的钻石,进行交换.两个格 ...

  6. 【学习心得】Link-cut Tree

    Link-cut Tree是一种支持改变树(森林)的形态(link和cut),同时维护树的路径上节点信息的数据结构.lct通过splay来维护每次的perferred path,说白了就是一个动态的树 ...

  7. mysq访问方式

    mysql -h10.81.32.196 -P5152 -Dns_map_data_new -uwangyuchuan_r -p3DLg15rhSsm0O7Nsselect uid,name from ...

  8. android 文件读写工具类

    将可以序列化的对象通过base64编码后进行保存 但是感觉多数情况下,不需要采用这个功能,直接保存原始的json字符串,取出来之后再进行解析即可 package com.wotlab.home.mon ...

  9. 圆角Panel

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostic ...

  10. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

    今天执行mysql操作的时候出现了错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run ...