考试时间 14:00 至 17:30

期望得分:40+60+60

实际得分:100+60+30

 

T1:题面如下(☄⊙ω⊙)☄

校内模拟赛吧 ———— 2019.10.30

 

思路:最先想到的当然是暴力枚举

然鹅,我个傻缺竟然开始从1枚举到N。。(不T才怪~)

然后开始从N向小的枚举

但是尽管如此依旧无法拿到60分。。(学校机子慢的一批

then

看到校内模拟赛吧 ———— 2019.10.30就想到需要字符读入,那么能不能直接对每个字符进行处理

 

 

然后就这样啦

校内模拟赛吧 ———— 2019.10.30

 

 

 

 

 

 处理一下awa

注意如果N符合各个数位是单调不减的就直接把N输出

还要注意先前导零的状况(awa——> @lzpclxf

还有看好数据范围非常重要的。。。

awa

现在!上代码

 1 //40
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<iostream>
 6 using namespace std;
 7 char a[100005];
 8 int len;
 9 int k;
10 void awa(int k) {
11     for(int i=1; i<k; i++)
12         cout<<a[i];
13     if(a[k]-'0'-1!=0)cout<<a[k]-'0'-1;
14     for(int i=k+1; i<=len; i++)cout<<9;
15 }
16 int main() {
17     freopen("increase.in","r",stdin);
18     freopen("increase.out","w",stdout);
19     cin>>a+1;
20     len=strlen(a+1);
21     k=len;
22     for(int i=1; i<len; i++) {
23         if(a[i]==a[i+1]) {
24             if(a[k]==a[i])k=min(k,i);
25             else k=i;
26             if(a[i+1]>a[i+2]&&(i+2)<=len) {
27                 awa(k);
28                 fclose stdin;
29                 fclose stdout;
30                 return 0;
31             }
32         }
33         if(a[i]>a[i+1]) {
34             awa(i);
35             fclose stdin;
36             fclose stdout;
37             return 0;
38         }
39     }
40     cout<<a+1;
41     return 0;
42 }
increase

相关文章:

  • 2021-08-18
  • 2021-10-01
  • 2021-05-17
  • 2021-07-11
  • 2021-12-16
  • 2022-02-18
  • 2021-10-17
  • 2021-12-29
猜你喜欢
  • 2021-06-22
  • 2022-02-02
  • 2021-06-12
  • 2021-07-25
  • 2021-09-16
  • 2022-02-14
  • 2021-12-02
相关资源
相似解决方案