POJ-2182 Lost Cows 简单的想法
2017-03-14 20:19
337 查看
题目大意:有n头牛,给出从第二头牛开始每头牛前面有多少头牛编号比自己小。
求牛的编号。
分析:每次最后一头牛的编号为当前可用编号中排在第a[i]+1的数。
看了网上的题解是线段树,可是我不会线段树,就用简单的想法过了这个题目,学会线段树再更新。
代码:
#include<iostream>
using namespace std;
int a[8010],book[8010];
int main(){
int n,i,j,k;
cin >> n;
for(i = 2;i <= n;i++)
cin >> a[i];
for(i = n;i > 1;i--){
k = 0;
for(j = 1;k < a[i]+1;j++ )
if(book[j] == 0)
k++;
a[i] = j-1;
book[j-1] = 1;
}
for(i = 1;i <= n;i++){
if(book[i] == 0)
a[1] = i;
}
for(i = 1;i <= n;i++)
cout << a[i] << endl;
return 0;
}
求牛的编号。
分析:每次最后一头牛的编号为当前可用编号中排在第a[i]+1的数。
看了网上的题解是线段树,可是我不会线段树,就用简单的想法过了这个题目,学会线段树再更新。
代码:
#include<iostream>
using namespace std;
int a[8010],book[8010];
int main(){
int n,i,j,k;
cin >> n;
for(i = 2;i <= n;i++)
cin >> a[i];
for(i = n;i > 1;i--){
k = 0;
for(j = 1;k < a[i]+1;j++ )
if(book[j] == 0)
k++;
a[i] = j-1;
book[j-1] = 1;
}
for(i = 1;i <= n;i++){
if(book[i] == 0)
a[1] = i;
}
for(i = 1;i <= n;i++)
cout << a[i] << endl;
return 0;
}
相关文章推荐
- poj 2182 Lost Cows
- POJ 2182 Lost Cows 线段树
- POJ-2182-Lost Cows
- poj 2182 Lost Cows
- POJ 题目2182 Lost Cows
- POJ 2182 Lost Cows(线段树)
- Poj 2182 Lost Cows
- POJ 2182 Lost Cows (树状数组 or 线段树)
- poj 2182 Lost Cows(树状数组)
- POJ 2182 / HDU 2711 Lost Cows(平衡树)
- POJ 2182 Lost Cows
- poj 2182 Lost Cows 线段树!!!!
- poj 2182 Lost Cows
- POJ 2182 Lost Cows
- POJ 2182 Lost Cows
- poj 2182 || hdu 2711 Lost Cows
- POJ 2182 Lost Cows
- POJ 2182 Lost Cows
- POJ--2182--Lost Cows
- poj 2182 Lost Cows