首页 > 其他 > 详细

E. Mo的游戏

时间:2019-04-01 18:19:53      阅读:93      评论:0      收藏:0      [点我收藏+]

题目链接:https://www.hpuoj.com/contest/16/problem/E/

这题也是模拟,只要注意第一次出现的位置,然后后面再出现比它距离更短的就更新

这里我们先把距离设置为INF,

 

//
//  main.cpp
#include <iostream>
#include <cstring>
#include <cstdio>
#include <map>
using namespace std;
#define ll long long
const int INF=0x3f3f3f3f;
int res[100000];
int pos[100000];
char s[1000000];

int main()
{
    memset(pos,-1,sizeof(pos));
    memset(res,INF,sizeof(res));
    cin >> s;
    int len = strlen(s);
    map<char,int>mp;
    for (int i=0; i<len; i++) {
        mp[s[i]]++;
        if (pos[s[i]] >= 0) {
            res[s[i]] = min(i-pos[s[i]],res[s[i]]);
        }
        pos[s[i]] = i;
    }
    for (char i=a; i<=z; i++) {
        if (mp[i]) {
            printf("%c:",i);
            if (res[i] != INF) printf("%d",len-res[i]);
            else printf("0");
            printf("\n");
        }
    }
    for (char i=A; i<=Z; i++) {
        if (mp[i]) {
            printf("%c:",i);
            if (res[i] != INF) printf("%d",len-res[i]);
            else printf("0");
            printf("\n");
        }
    }
    return 0;
}

 

E. Mo的游戏

原文:https://www.cnblogs.com/SJCHEN/p/10637843.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!