阅读 62

2021.08.19(AcWing每日一题

1.

#include
#include
#include
#include
#include
using namespace std;
const int maxx=2e5+10;
char s[maxx];
char c;
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        scanf("%d",&n);
        scanf("%s",&s);
        if(n==1){
            printf("%c",s[0]);
            printf("\n");
            continue;
        }
        int flag=0;
        for(int i=1;i){
            if(s[i]1]&&flag==0){
                c=s[i-1];
                flag++;
            }
        }
        if(flag==0){
            c=s[n-1];
        }
        flag=0;
        for(int i=0;i){
            if(flag==0&&s[i]==c){
                flag++;
                continue;
            }
            printf("%c",s[i]);
        }
        printf("\n");
    }
}
View Code

注:把贪心问题想成了dp,其实并不是dp,因为是字典序最小,所以只需要考虑最前面那个的s[i]>s[i+1]的位置就可,如果没有的话,就去掉最后面的那个字符,相同字母时,去掉一个字母字典序更小

2.

#include
#include
#include
#include
#include
using namespace std;
const int maxx=2e5+10;
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n,k;
        scanf("%d %d",&n,&k);
        for(int i=0;i){
            for(int j=0;j){
                    char s=a+j;
                printf("%c",s);
            }
        }
        for(int i=0;i){
            char s=a+i;
            printf("%c",s);
        }
        printf("\n");
    }
}
View Code

注:只是注意这是前k个字母就好,然后水题

 

原文:https://www.cnblogs.com/bonel/p/15165799.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐