QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#73235#4398. Luxury cruise shipLiCooerAC ✓42ms81452kbC++17816b2023-01-23 08:38:482023-01-23 08:38:49

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-01-23 08:38:49]
  • 评测
  • 测评结果:AC
  • 用时:42ms
  • 内存:81452kb
  • [2023-01-23 08:38:48]
  • 提交

answer

#include <iostream>
#include <cstring>

#define int long long
using namespace std;
const int N = 10000010;
const int INF = 1e18;
int f[N];
int w[3];

void init()
{
    memset(f, 0x3f, sizeof f);
    f[0] = 0;
    for (int i = 0; i < 3; i++) 
        for (int j = w[i]; j <= 10000000; j++)  // 只要时间复杂度允许,那就都可以拿下。
            f[j] = min(f[j], f[j - w[i]] + 1);  
}

signed main() 
{
    cin.tie(nullptr)->sync_with_stdio(false);
    w[0] = 7, w[1] = 31, w[2] = 365;
    init();
    int T;
    cin >> T;
    while (T--) 
    {
        int x;
        cin >> x;
        int t = x / 3650000;
        int res = t * 10000;
        x %= 3650000;
        if (f[x] > INF / 2) cout << "-1\n";
        else cout << res + f[x] << '\n';
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 42ms
memory: 81452kb

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