日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Codeforces Round #550 (Div. 3)E. Median String

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Round #550 (Div. 3)E. Median String 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

把字符串看作是26進制的數,從后往前翻譯,那么就可以把兩個串變成對應的26進制的數字,那么只要把兩個數加起來除以二就得到中間的串對應的數了,同理再轉化回來就行了。
但是這樣會有一個問題就是串的長度有2e5,26的2e5次方顯然不可求,所以需要對每一位進行手動的加和運算。
對于兩個串,我們假設a串從后往前的每一位對應的數值為a0, a1, a2...,b串從后往前的每一位對應的數值為b0, b1, b2...對于進制加法,有

?

扔一下垃圾代碼:

#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("");
}

  

轉載于:https://www.cnblogs.com/HazelNut/p/10634221.html

總結

以上是生活随笔為你收集整理的Codeforces Round #550 (Div. 3)E. Median String的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。