QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#820549#4398. Luxury cruise shipSGColinAC ✓1ms4112kbC++20896b2024-12-18 21:47:132024-12-18 21:47:13

Judging History

This is the latest submission verdict.

  • [2024-12-18 21:47:13]
  • Judged
  • Verdict: AC
  • Time: 1ms
  • Memory: 4112kb
  • [2024-12-18 21:47:13]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

inline ll rd() {
    ll x = 0;
    bool f = 0;
    char c = getchar();
    for (; !isdigit(c); c = getchar()) f |= (c == '-');
    for (; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);
    return f ? -x : x; 
}

#define N 100007

int f[N];

inline void work() {
    ll x = rd();
    if (x < N) {printf("%d\n", f[x]); return;}
    ll t = (x - 100000 + 364) / 365;
    printf("%lld\n", f[x - t * 365] + t);
}

int main() {
    memset(f, 0x3f, sizeof(f));
    f[0] = 0;
    for (int v = 7; v < N; ++v) f[v] = min(f[v], f[v - 7] + 1);
    for (int v = 31; v < N; ++v) f[v] = min(f[v], f[v - 31] + 1);
    for (int v = 365; v < N; ++v) f[v] = min(f[v], f[v - 365] + 1);  
    for (int v = 1; v < N; ++v)
        if (f[v] > 1e9) f[v] = -1;  
    for (int t = rd(); t; --t) work();
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 4112kb

input:

1000
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101...

output:

-1
-1
-1
-1
-1
-1
1
-1
-1
-1
-1
-1
-1
2
-1
-1
-1
-1
-1
-1
3
-1
-1
-1
-1
-1
-1
4
-1
-1
1
-1
-1
-1
5
-1
-1
2
-1
-1
-1
6
-1
-1
3
-1
-1
-1
7
-1
-1
4
-1
-1
-1
8
-1
-1
5
-1
-1
2
9
-1
-1
6
-1
-1
3
10
-1
-1
7
-1
-1
4
11
-1
-1
8
-1
-1
5
12
-1
-1
9
-1
-1
6
13
-1
3
10
-1
-1
7
14
-1
4
11
-1
-1
8
15
-1
5
12
-1
-...

result:

ok 1000 lines