poj2182 逆推暴力
题意
告诉有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 逆推暴力的更多相关文章
- UVA116Unidirectional TSP(DP+逆推)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18206 题意:M*N的数阵,从左边一列到右边一列走过的数的和的最小.并输出路 ...
- HDU 5844 LCM Walk(数学逆推)
http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意: 现在有坐标(x,y),设它们的最小公倍数为k,接下来可以移动到(x+k,y)或者(x,y+k).现 ...
- hdu 5063 操作逆推+mul每次要*2%(modo - 1)
http://acm.hdu.edu.cn/showproblem.php?pid=5063 只有50个询问,50个操作逆推回去即可,注意mul每次要*2%(modo - 1)因为是指数! #incl ...
- uva10537 dijkstra + 逆推
21:49:45 2015-03-09 传送 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8& ...
- hdu 3853 LOOPS (概率dp 逆推求期望)
题目链接 LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Tota ...
- 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= ...
- HDU 1176-免费馅饼(DP_逆推)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Codeforces Round #499 (Div. 2) C.FLY 数学推导_逆推
本题应该是可以使用实数二分的,不过笔者一直未调出来,而且发现了一种更为优美的解法,那就是逆推. 首先,不难猜到在最优解中当飞船回到 111 号节点时油量一定为 000, 这就意味着减少的油量等于减少之 ...
- C# Net 计算周(可正推和逆推)
C# Net 计算周(可正推和逆推) 拷贝代码(方法): /// <summary> /// 计算周 /// </summary> /// <param name=&qu ...
随机推荐
- Postman—脚本介绍
前言 Postman包含一个基于Node.js的强大的运行时环境,它允许我们为请求和集合添加动态行为.这使的我们可以编写测试用例,构建可包含动态参数的请求,在请求之间传递数据等等. 我们可以在流程中以 ...
- webpack4重新梳理一下
webpack安装和使用 mkdir webpack_demo cd webpack_demo //npm初始化 npm init //然后一直回车 安装webpack // 不建议全局安装 cnpm ...
- C语言中的条件编译
通常情况,我们想让程序选择性地执行,多会使用分支语句,比如if-else 或者switch-case 等.但有些时候,可能在程序的运行过程中,某个分支根本不会执行. 比如我们要写一个跨平台项目,要求项 ...
- WPF 进程间传递参数
WPF 进程间传递参数 在软件开发中有时需要在一个软件中启动另一个软件,这时用Process.Start(“软件路径”)可以启动另一个软件.如果在这个过程中还需要传递一些参数给新启动 ...
- linux svn 开机启动
在/etc/init.d中建立svnboot,内容如下: #!/bin/bash if [ ! -f "/usr/bin/svnserve" ] then echo "s ...
- Week4——结对练习&团队作业1
Deadline: 2017-10-14 10:00PM,以博客发表日期为准. 评分基准: 按时交 - 有分(结对代码-10分,结对博客-10分,团队博客-10分),检查的项目包括后文的三个方面 按要 ...
- RabbitMQ上手记录–part 4-节点集群(单机多节点)
现在互联网应用动不动就说要HA,好像不搞个HA都不好意思说自己的应用能承载高并发,大用户量访问.RabbitMQ这个经典的消息组件,也必然逃不掉单点失效的尴尬局面.当然在RabbitMQ在被广泛应用于 ...
- Angular的第一个组件
创建组件 在vscode的命令窗口输入: ng generate component login --inline-template --inline-style 或者简写 ng g c login ...
- datatable 转excel
public static void ExportToExcel(System.Data.DataTable dt) { if (dt == null) return; Microsoft.Offic ...
- 打造自己的LinQProvider(四)
打造自己的LinqProvider *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...