增量幻境

Posted jony-english

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了增量幻境相关的知识,希望对你有一定的参考价值。

增量幻境

时间限制: 1 Sec  内存限制: 128 MB

题目描述

  众所周知,小葱同学擅长计算,尤其擅长计算组合数,但这个题和组合数没什么关系。 

  小葱同学最近醉心于动态规划的研究,他苦学百年,已经牢牢掌握了最长上升子序列的知识。小葱对于这种单调不减的序列非常着迷,于是他灵机一动,挥笔写下了一个数x,现在小葱同学希望找到一个小于等于x的数,使得这个数的各个数位是单调不减的。求这个数。 

输入

  一行一个数x。 

输出

  一行一个数代表答案。 

样例输入

  233996

样例输出 

  233899

提示

  对于40%的数据,x≤105
  对于60%的数据,x≤109
  对于80%的数据,x≤1018
  对于100%的数据,0≤x≤10100000

题解

      如果从左至右第i位之前的最大值为x(0<=x<=9),x第一次出现在p位,在第i位第一次小于x,则第p位改为x-1,p之后全变成9。

技术图片
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 const int N=101000;
 6 char c[N];
 7 int mx,p,n,l;
 8 int main()
 9 {
10     scanf("%s",c);
11     n=strlen(c);
12     mx=-1;
13     for(int i=0;i<n;i++)
14     {
15         int x=c[i]-0;
16         if(x<mx)
17         {
18             c[p]-=1;
19             if(c[p]<0)
20                 c[p-1]-=1,
21                 c[p]=9;
22             for(int j=p+1;j<n;j++)
23                 c[j]=9;
24             break;
25         }
26         if(x>mx)
27             mx=x,p=i;
28     }
29     while(c[l]==0&&l+1<n) l++;
30     for(int i=l;i<n;i++)
31         putchar(c[i]);
32     return 0;
33 }
View Code

 

以上是关于增量幻境的主要内容,如果未能解决你的问题,请参考以下文章

Unity2019 增量式GC(使用时间片段执行GC,减少卡顿)

Unity2019 增量式GC(使用时间片段执行GC,减少卡顿)

“三生万物”的诗酒幻境,在六月的长沙就能体验

模拟题

基于Unity开发广州幻境的Handy结合HTC Tracker的开发坑

P5385 [Cnoi2019]须臾幻境 / #3514. Codechef MARCH14 GERALD07加强版 [LCT + 主席树]