-
A. 不記得了,記得是道簽到題,之前菜的連做這道題都花了四十多分鐘,整場現場賽就做了這一道題,菜到無法直視
-
B. qko 的 aaaa + bbbb
題意:給一個4個字符的字符串,一個unsigned int可以用32個字節組成,用這4個字符構成一個unsigned int,則可以用字符串來支持整型的操作,給兩個字符串,求出這樣編碼後兩字符串相加得到的數
思路:簡單得不能再簡單的模擬題,主要就是理解題意,4個字符分別左移相加就行
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 5000+10;
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
int n;
int main()
{
int T;
cin >> T;
char a[4], b[4];
for (int t = 0; t < T; t++) {
scanf("%s%s", a, b);
ull aa = a[3]+(a[2]<<8)+(a[1]<<16)+(a[0]<<24);
ull bb = b[3]+(b[2]<<8)+(b[1]<<16)+(b[0]<<24);
ull ans = aa+bb;
cout << ans << "\n";
}
return 0;
}
- C. qko 的棧
題意:給一個棧,有三種操作:入棧、出棧、求出棧頂及棧中最小元素,給n個操作,1表示入棧,2表示出棧,3表示查找,對於3輸出查找結果,若操作不合法輸出gg!
思路:劍指offer原題,用一個輔助棧存儲當前棧中的最小元素,若原棧頂是當前最小(棧頂和輔助棧頂相等),則輔助棧也出棧
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 3e6+10;
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
int n, s1[maxn], s2[maxn];
int main()
{
scanf("%d", &n);
int len1 = 0, len2 = 0;
for (int i = 0; i < n; i++) {
int op;
scanf("%d", &op);
if (op == 1) {
int x;
scanf("%d", &x);
s1[len1++] = x;
if (len2 == 0 || s2[len2-1] > x) {
s2[len2++] = x;
}
} else if (op == 2) {
if (len1 == 0) {
printf("gg!\n");
continue;
}
int x = s1[--len1];
if (len2 != 0 && s2[len2-1] == x)
len2--;
} else {
if (len1 == 0) {
printf("gg!\n");
continue;
}
printf("%d %d\n", s2[len2-1], s1[len1-1]);
}
}
return 0;
}
- D. qko 去春遊