Codeforces 691B. s-palindrome

题目链接:http://codeforces.com/problemset/problem/691/B

题意:

给你一个字符串,需要让你判断这个字符串是否为镜像串,即关于中心轴对称.

思路:

常量数组的运用,需要注意的是当字符串包含奇数个字符时最中间的那个字符不要忘记判断.

代码:

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 const int MAXN = 100000;
 6 typedef long long LL;
 7
 8 char str[] = "-d-b----------oqp----vwx--A------HI---M-O----TUVWXY-";
 9
10 char chage(char c) {
11     if(islower(c)) return str[c - ‘a‘];
12     return str[c - ‘A‘ + 26];
13 }
14
15 int main() {
16     ios_base::sync_with_stdio(0); cin.tie(0);
17     char ss[1007] = {0};
18     cin >> ss;
19     int len = strlen(ss);
20     int ok = 1;
21     for(int i = 0; i < (len + 1) / 2; i++) if(ss[i] != chage(ss[len - i - 1])) ok = 0;
22     if(ok) cout << "TAK" << endl;
23     else cout << "NIE" << endl;
24     return 0;
25 }
时间: 2024-11-01 08:11:15

Codeforces 691B. s-palindrome的相关文章

【模拟】Codeforces 691B s-palindrome

题目链接: http://codeforces.com/problemset/problem/691/B 题目大意: 求一个字符串是不是镜像的(不是回文).是输出TAK否则RE. 题目思路: [模拟] 预处理镜像的字母,注意bd pq,从头尾开始模拟. 1 // 2 //by coolxxx 3 //#include<bits/stdc++.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<strin

Codeforces 1326D2 - Prefix-Suffix Palindrome (Hard version)

题目大意 T组数据,每组给定一个字符串 s 求一个最长的字符串 t ,满足: t 是一个回文串 t = a+b ,a是字符串s的前缀,b是字符串s的后缀,'+' 为拼接两字符串,ab可能为空串 数据范围 数据组数不超过 1e5 字符串的总共长度不超过 1e6 解题思路 (标准做法应该是哈希) 因为对于任意的字符串T,设R(T)为T的倒置 则 T+回文串+R(T) 仍然是一个回文串 可以直接双指针在s里找出最长的 T和R(T) while(L<R&&s[L]==s[R]) L++,R-

Codeforces Gym 100570 E. Palindrome Query Manacher

E. Palindrome QueryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100570/problem/E Description De Prezer loves palindrome strings. A string s1s2...sn is palindrome if and only if it is equal to its reverse. De Prezer also love

Codeforces 486C Palindrome Transformation(贪心)

题目链接:Codeforces 486C Palindrome Transformation 题目大意:给定一个字符串,长度N,指针位置P,问说最少花多少步将字符串变成回文串. 解题思路:其实只要是对称位置不相同的,那么指针肯定要先移动到这里,修改字符只需要考虑两种方向哪种更优即 可.然后将所有需要到达的位置跳出来,贪心处理. #include <cstdio> #include <cstring> #include <cstdlib> #include <vec

贪心+构造 Codeforces Round #277 (Div. 2) C. Palindrome Transformation

题目传送门 1 /* 2 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 3 */ 4 /************************************************ 5 Author :Running_Time 6 Created Time :2015-8-3 9:14:02 7 File Name :B.cpp 8 *************************************************/ 9 10 #include

Codeforces 1335E2 - Three Blocks Palindrome (hard version)

题面 题意/解题思路 直接延用 Easy 版本的想法即可 详解见上一篇博客Codeforces 1335E1 - Three Blocks Palindrome (easy version) 完整程序 (93ms/2000ms) #include<bits/stdc++.h> using namespace std; int ar[200050]; vector<int> v[210]; void solve() { int n,ans=0; cin>>n; for(i

Codeforces 159D Palindrome pairs

http://codeforces.com/problemset/problem/159/D 题目大意: 给出一个字符串,求取这个字符串中互相不覆盖的两个回文子串的对数. 思路:num[i]代表左端点在i这个位置的回文串个数,然后用树状数组维护sum[i],代表回文串右端点小于等于i的回文串数,总复杂度:O(n^2) 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> 4 #include<cstr

codeforces Educational Codeforces Round 2 C Make Palindrome

C. Make Palindrome A string is called palindrome if it reads the same from left to right and from right to left. For example "kazak", "oo", "r" and "mikhailrubinchikkihcniburliahkim" are palindroms, but strings &quo

Codeforces 932G Palindrome Partition - 回文树 - 动态规划

题目传送门 通往???的传送点 通往神秘地带的传送点 通往未知地带的传送点 题目大意 给定一个串$s$,要求将$s$划分为$t_{1}t_{2}\cdots t_{k}$,其中$2\mid k$,且$t_{i} = t_{k - i}$,问方案数. 直接做不太好做.虽然可以$O(n^{2})$进行动态规划. 考虑做一步转化:设$s' = s_{1}s_{n}s_{2}s_{n - 1}\cdots s_{n / 2}s_{n / 2 + 1}$. 然后它的一个偶回文划分可以和原来的划分一一对应.