-
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 去春游