Codeforces Round #550 (Div. 3)E. Median String
生活随笔
收集整理的這篇文章主要介紹了
Codeforces Round #550 (Div. 3)E. Median String
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
把字符串看作是26進(jìn)制的數(shù),從后往前翻譯,那么就可以把兩個(gè)串變成對(duì)應(yīng)的26進(jìn)制的數(shù)字,那么只要把兩個(gè)數(shù)加起來(lái)除以二就得到中間的串對(duì)應(yīng)的數(shù)了,同理再轉(zhuǎn)化回來(lái)就行了。
但是這樣會(huì)有一個(gè)問(wèn)題就是串的長(zhǎng)度有2e5,26的2e5次方顯然不可求,所以需要對(duì)每一位進(jìn)行手動(dòng)的加和運(yùn)算。
對(duì)于兩個(gè)串,我們假設(shè)a串從后往前的每一位對(duì)應(yīng)的數(shù)值為a0, a1, a2...,b串從后往前的每一位對(duì)應(yīng)的數(shù)值為b0, b1, b2...對(duì)于進(jìn)制加法,有
?
扔一下垃圾代碼:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define INF 0x3f3f3f3f
#define ll long long
#define lowbit(x) (x&(-x))
#define PI acos(-1)
#define ms(x,y) memset(x, y, sizeof(x))
using namespace std;const int maxn = 2e5+7;
char a[maxn], b[maxn];int ans[maxn];int main()
{int n;scanf("%d", &n);scanf("%s%s", a, b);for(int i=n-1;i>=0;i--){int ta = a[i] - 'a';int tb = b[i] - 'a';ans[i] = ta + tb;if(ans[i]&1){ans[i+1] += 13;ans[i] = (ans[i] - 1) / 2;ans[i] += ans[i+1] / 26;ans[i+1] %= 26;}else ans[i] = ans[i] / 2;}for(int i=0;i<n;i++) printf("%c", 'a' + ans[i]); puts("");
}
轉(zhuǎn)載于:https://www.cnblogs.com/HazelNut/p/10634221.html
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #550 (Div. 3)E. Median String的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求《我们不能是朋友》百度云资源速求!!!
- 下一篇: 多线程共享全局变量以及锁机制