思维——cf1178E

Posted zsben991126

tags:

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

一开始少看了条件:相邻两个字符不相等,字符集只有abc

那么我们取开头结尾各两个字符,一定有两个是相等的

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000010;
char s[maxn];
bool v[maxn];
int main() 
    scanf("%s", s + 1);
    int n = strlen(s + 1);
    int l, r, ans = 0;
    for (l = 1, r = n - 1; l + 2 <= r; l += 2, r -= 2) 
        for (int j = 0; j < 2; j++)
            for (int k = 0; k < 2; k++) 
                if(s[l + j] == s[r + k]) 
                    v[l + j] = v[r + k] = 1;
                    ans += 2;
                    goto ed;
                
            
        ed:
            continue;
    
    if(ans < n / 2) 
        v[l] = 1;
    
    for (int i = 1; i <= n; i++) 
        if(v[i] == 1)
            printf("%c", s[i]);
    
    printf("\n");

 

以上是关于思维——cf1178E的主要内容,如果未能解决你的问题,请参考以下文章

思维思维题——cf1350D

CF 729D 模拟,思维

CF1028C Rectangles 思维

CF1419ABCD 思维+数学

CF1028D Order book 思维

CF796C Bank Hacking 思维