Wannafly Winter Camp Day 3 G排列(贪心)

Wannafly Winter Camp Day 3 G排列(贪心)_第1张图片Wannafly Winter Camp Day 3 G排列(贪心)_第2张图片

思路来源

jls%%%

题解

赛后补队友AC的水题可还行

最先出现的单减子序列对应的位置,一定是那些最小值的位置

先把那些放满,剩下的贪心选使字典序最小,就把剩下的从前到后扫一遍从小到大放

代码

#include 
#include  
#include 
#include 
using namespace std;
const int maxn=1e5+10;
int n,p[maxn],low,ans[maxn],front; 
int main()
{ 
   scanf("%d",&n);
   for(int i=1;i<=n;++i)
   scanf("%d",&p[i]);
   low=p[1],ans[p[1]]=++front;
   for(int i=2;ilow)continue;
   	low=p[i];
   	ans[p[i]]=++front;
   }
   for(int i=1;i<=n;++i)
   {
   	if(!ans[i])ans[i]=++front;
    printf("%d%c",ans[i],i==n?'\n':' ');
   }
   return 0;
}

 

你可能感兴趣的:(思维题)