首页 > 其他 > 详细

2019-2020 ICPC, NERC, Northern Eurasia Finals (Unrated, Online Mirror, ICPC Rules, Teams Preferred)

时间:2019-12-23 19:32:06      阅读:317      评论:0      收藏:0      [点我收藏+]

这是一场三人组队赛来的,单人带电子模板不限时单挑试一下。按照难度排序。

B - Balls of Buma

题意:玩祖玛,射入任意颜色的球一个,当某段长度变长了且长度变长后>=3则这段就会消除,问把所有的球只用一次射击就消除的方法是多少?

题解:看起来一定要两边对称。

int n;
char s[300005];
int L[300005], R[300005], top;

void test_case() {
    top = 0;
    L[++top] = 1;
    R[top] = 1;
    for(int i = 2; i <= n; ++i) {
        if(s[i] == s[R[top]])
            R[top] = i;
        else {
            L[++top] = i;
            R[top] = i;
        }
    }
    if(!(top & 1)) {
        puts("0");
        return;
    }
    int mid = (top + 1) / 2;
    if(R[mid] == L[mid]) {
        puts("0");
        return;
    }
    for(int i = 1; i < mid; ++i) {
        if(s[R[mid - i]] != s[L[mid + i]]) {
            puts("0");
            return;
        } else {
            if(R[mid - i] - L[mid - i] + 1 + R[mid + i] - L[mid + i] + 1 < 3) {
                puts("0");
                return;
            }
        }
    }
    printf("%d\n", R[mid] - L[mid] + 1 + 1);
}

int main() {
#ifdef KisekiPurin
    freopen("KisekiPurin.in", "r", stdin);
#endif // KisekiPurin
    while(1) {
        n = reads(s + 1);
        test_case();
    }
}

L - Lexicography

题意:给n*l个字母,构造n个长为l的字符串,使得字典序最小的第k个字符串的字典序最小。

题解:别看错题了,下面的解法是错的。

int n, l, k;
char s[1000005];

void test_case() {
    sort(s + 1, s + 1 + n * l);
    int cur = l + 1;
    for(int i = 1; i < k; ++i) {
        for(int j = 1; j <= l; ++j) {
            putchar(s[cur]);
            ++cur;
        }
        putchar('\n');
    }
    for(int j = 1; j <= l; ++j)
        putchar(s[j]);
    putchar('\n');
    for(int i = k + 1; i <= n; ++i) {
        for(int j = 1; j <= l; ++j) {
            putchar(s[cur]);
            ++cur;
        }
        putchar('\n');
    }
}

int main() {
#ifdef KisekiPurin
    freopen("KisekiPurin.in", "r", stdin);
#endif // KisekiPurin
    while(1) {
        read(n), read(l), read(k);
        reads(s + 1);
        //puts(s + 1);
        test_case();
    }
}
int n, l, k;
char s[1000005];
char t[1005][1005];

void test_case() {
    sort(s + 1, s + 1 + n * l);
    int cur = 0;
    for(int j = 1; j <= l; ++j) {
        for(int i = 1; i <= k; ++i)
            t[i][j] = s[++cur];
        if(k == 1 || t[k][j] != t[k - 1][j]) {
            for(int tj = j + 1; tj <= l; ++tj)
                t[k][tj] = s[++cur];
            for(int ti = 1; ti < k; ++ti) {
                for(int tj = j + 1; tj <= l; ++tj)
                    t[ti][tj] = s[++cur];
            }
            break;
        }
    }
    for(int i = k + 1; i <= n; ++i) {
        for(int j = 1; j <= l; ++j)
            t[i][j] = s[++cur];
    }
    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= l; ++j)
            putchar(t[i][j]);
        putchar('\n');
    }
}

int main() {
#ifdef KisekiPurin
    freopen("KisekiPurin.in", "r", stdin);
#endif // KisekiPurin
    while(1) {
        read(n), read(l), read(k);
        reads(s + 1);
        //puts(s + 1);
        test_case();
    }
}

但是这样填也不对,过不了这个样例:

4 4 4
abcdefabababcabc

aabc
abbd
abce
abcf

#至少应该是

aaef
abbd
abcc
abcc

不知道这样对不对?

int n, l, k;
char s[1000005];
char t[1005][1005];

void test_case() {
    sort(s + 1, s + 1 + n * l);
    int cur = 0, b = 1;
    for(int j = 1; j <= l; ++j) {
        for(int i = b; i <= k; ++i) {
            t[i][j] = s[++cur];
            if(i > 1 && t[i][j] > t[i - 1][j])
                ++b;
        }
        if(k == 1 || t[k][j] != t[k - 1][j]) {
            for(int tj = j + 1; tj <= l; ++tj)
                t[k][tj] = s[++cur];
            for(int ti = 1; ti < k; ++ti) {
                for(int tj = 1; tj <= l; ++tj)
                    if(t[ti][tj] == '\0')
                        t[ti][tj] = s[++cur];
            }
            break;
        }
    }
    for(int i = k + 1; i <= n; ++i) {
        for(int j = 1; j <= l; ++j)
            t[i][j] = s[++cur];
    }
    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= l; ++j)
            putchar(t[i][j]);
        putchar('\n');
    }
}

int main() {
#ifdef KisekiPurin
    freopen("KisekiPurin.in", "r", stdin);
#endif // KisekiPurin
    while(1) {
        read(n), read(l), read(k);
        reads(s + 1);
        memset(t, '\0', sizeof(t));
        //puts(s + 1);
        test_case();
    }
}

还是WA29。

2019-2020 ICPC, NERC, Northern Eurasia Finals (Unrated, Online Mirror, ICPC Rules, Teams Preferred)

原文:https://www.cnblogs.com/KisekiPurin2019/p/12085252.html

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