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