题意

告诉有n头牛,每头牛有一个编号1~n,再一次烂醉之后,奶牛们没有按照编号排队;告诉你对于第i头奶牛,在它之前有多少头奶牛比它的编号小(i>1,因为第1头奶牛的数据永远为0,故题中省略),求每头奶牛的编号

从后往前推,对于第 i 头奶牛,所给数据 num[ i ] 表示它在前 i 头奶牛中排名第 numj[ i ]+1;又由于第 n 头奶牛的数据表示它在所有 n 头奶牛中排名第num[ i ]+1,故可求出第 n 头奶牛的编号;同理,在求出第 n 头奶牛的编号后,第 n-1 头奶牛的数据 num [ i ]表示在除第 n 头奶牛外的所有奶牛中排名第 num [ i ]+1 ,又因为第 n 头奶牛的排名已求出,由此可推出第 n-1 奶牛的排名;

代码实现如下

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
namespace zi_qilin
{
const int maxn=+;
int n;
int a[maxn],ans[maxn];
vector<int> cow;
inline int read()
{
char c;while(scanf("%c",&c)&&!isdigit(c)) ;
int x=c-'';while(scanf("%c",&c)&&isdigit(c)) x=x*+c-'';
return x;
}
inline int work()
{
n=read();a[]=;
for(int i=;i<=n;i++) a[i]=read();
for(int i=;i<=n;i++) cow.push_back(i); //初始化i头奶牛的编号
for(int i=n;i>=;i--)
{
ans[i]=cow[a[i]]; // ans[i]表示第 i 头奶牛的编号,就是在vector剩余的编号中排名第a[i]的(vector从0开始下标,故此处未+1)
cow.erase(cow.begin()+a[i],cow.begin()+a[i]+);// 在此头牛的编号被求出后,从vector中删去,下一头奶牛i-1在此操作后即可直接通过下标查找到除此奶牛外排名第
                                  // num[i-1]+1的编号
     }
    for(int i=;i<=n;i++) printf("%d\n",ans[i]);
     } }
int main()
{
//freopen("try.in","r",stdin);
return zi_qilin::work();
}

poj2182 逆推暴力的更多相关文章

  1. UVA116Unidirectional TSP(DP+逆推)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18206 题意:M*N的数阵,从左边一列到右边一列走过的数的和的最小.并输出路 ...

  2. HDU 5844 LCM Walk(数学逆推)

    http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意: 现在有坐标(x,y),设它们的最小公倍数为k,接下来可以移动到(x+k,y)或者(x,y+k).现 ...

  3. hdu 5063 操作逆推+mul每次要*2%(modo - 1)

    http://acm.hdu.edu.cn/showproblem.php?pid=5063 只有50个询问,50个操作逆推回去即可,注意mul每次要*2%(modo - 1)因为是指数! #incl ...

  4. uva10537 dijkstra + 逆推

    21:49:45 2015-03-09 传送 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8& ...

  5. hdu 3853 LOOPS (概率dp 逆推求期望)

    题目链接 LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Tota ...

  6. UVA 10537 Toll! Revisited (逆推,最短路)

    从终点逆推,d[u]表示进入u以后剩下的货物,那么进入u之前的货物数量设为y,d[u] = x,那么y-x=ceil(y/20.0)=(y-1)/20+1=(y+19)/20. (y-x)*20+r= ...

  7. HDU 1176-免费馅饼(DP_逆推)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. Codeforces Round #499 (Div. 2) C.FLY 数学推导_逆推

    本题应该是可以使用实数二分的,不过笔者一直未调出来,而且发现了一种更为优美的解法,那就是逆推. 首先,不难猜到在最优解中当飞船回到 111 号节点时油量一定为 000, 这就意味着减少的油量等于减少之 ...

  9. C# Net 计算周(可正推和逆推)

    C# Net 计算周(可正推和逆推) 拷贝代码(方法): /// <summary> /// 计算周 /// </summary> /// <param name=&qu ...

随机推荐

  1. Python -- Gui编程 -- Qt库的使用 -- 配置资源文件

    1.源文件(qtRes.py) import sys from PyQt4 import QtCore, QtGui, uic class MyDialog(QtGui.QDialog): def _ ...

  2. ES6-Object

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 带你了解数据库中JOIN的用法

    前言 欢迎关注公众号:Coder编程 获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识! 本章主要介绍数据库中Join的的用法,也是我们在使用数据库时非常基础的一个知识点.本次会介绍数据库 ...

  4. centos虚拟机网络配置--桥接模式

    什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥 进行通信.在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接 设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在 ...

  5. C和C++结构体的区别

    C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数.所以C的结构体是没有构造函数.析构函数.和this指针的. C的结构体对内部成员变量的访问权限只能是public,而C++ ...

  6. Java 集合框架(一)—— 接口综述

    前言:凡是使用 Java 编程的,几乎肯定会用到集合框架,比如 ArrayList.LinkedList.HashSet.HashMap 等,集合框架的代码绝对是大师级的实现,所以为了更好地使用集合框 ...

  7. Linux 命令 "cp" 代码实现简介

    本blog主要是模仿Linux的cp命令的功能,未实现参数,只是基础功能部分. 本文的主要目的在于练习 文件流 和 目录流 中的函数的使用. 主要功能包括两种: 源文件属性为文件,拷贝到其它文件(内容 ...

  8. 关于phonegap-plugin-contentsync插件

    插件介绍: 作用:下载并缓存远程托管的内容. 地址:https://github.com/phonegap/phonegap-plugin-contentsync 插件支持的平台:Android.IO ...

  9. ABP学习入门系列(一)(第一个ABP项目)

    ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称.ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它 ...

  10. Jsp&Servlet入门级项目全程实录第5讲

    惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 1.修改功能实现 dao public int gradeAdd(Connection con,Grade grade ...