XDU2019校赛现场赛覆盘

  • 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 去春游
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章