Google Code Jam 2019 Qualification Round 亂寫の解題心得

反正只要 30 分以上就可以進 Round 1 了

pA 可以 WA 到把 Penalty 飆超高我也是醉了啦!

pA. Foregone Solution

題意大致是說,給你個 $N$,請輸出正整數 $A, B$,並且 $A + B = N$
然後 $A, B$ 不能有任何的 $4$ 出現

一開始我是用$\div 2$方式去做的
但沒有考慮太多情況
然後就吃了5次WA

後來就想說$A = 1, B = N - 1$
如果$B$的某個位數為$4$
就把那個位數減去$1$加在$A$上
然後這個解法一次就過了…(ㄏㄏ)

本題 Hidden Test 只有 1 分
但$N$高達$10^{100}$,就直接用 Python 解了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
T = int(input())
for i in range(1, T + 1):
N = int(input())
A = 1
B = N - 1
Run = 1
while Run < B:
NowE = B // Run
NowE = NowE % 10
if NowE == 4:
A += Run
B -= Run
Run *= 10
print("Case #" + str(i) + ": " + str(A) + " " + str(B))

pB. You Can Go Your Own Way

題意大致是說,給你一個 $N\times N$ 的格子
找個路徑,只能往右走$E$跟往下走$S$
不能跟他給的路徑重複

就直接跟他相反就不會重複了
他走$E$,你就走$S$
他走$S$,你就走$E$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma GCC optimize ("O2")
#include<bits/stdc++.h>
#include<unistd.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pi;
#define _ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define FZ(n) memset((n),0,sizeof(n))
#define FMO(n) memset((n),-1,sizeof(n))
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define ALL(x) begin(x),end(x)
#define SZ(x) ((int)(x).size())
#define REP(i,a,b) for (int i = a; i < b; i++)

// Let's Fight!

int main() {
_
int T;
cin >> T;
REP(i, 1, T + 1){
int N;
cin >> N;
cout << "Case #" << i << ": ";
string enter;
cin >> enter;
REP(j, 0, SZ(enter)){
if(enter[j] == 'S')
cout << "E";
if(enter[j] == 'E')
cout << "S";
}
cout << '\n';
}
return 0;
}

pC. Cryptopangrams

應該就直接用 Python 寫,不會寫,ToDo

pD. Dat Bae

互動式題目,不會寫,ToDo

總結

pA 跟 pB 的 Visible Test 過就可以進 Round 1 了

另外兩題等有詳解 Code 再來試寫好了(X)


Google Code Jam 2019 Qualification Round 亂寫の解題心得
https://blog.yangjerry.tw/2019/04/08/gcj-2019-qr/
作者
Jerry Yang
發布於
2019年4月8日
許可協議