QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#113142#1949. Simple Cron Specckiseki#AC ✓286ms8108kbC++141.8kb2023-06-16 15:19:212023-06-16 15:19:23

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-06-16 15:19:23]
  • 评测
  • 测评结果:AC
  • 用时:286ms
  • 内存:8108kb
  • [2023-06-16 15:19:21]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

vector<int> calc2(const string &s) {
    size_t pos = s.find('-');
    if (pos == string::npos) {
        return {stoi(s)};
    }
    // cerr << "calc2 s = " << s << endl;
    // cerr << "pos = " << pos << endl;
    int r = stoi(s.substr(pos + 1));
    int l = stoi(s.substr(0, pos));
    vector<int> z;
    for (int i = l; i <= r; i++)
        z.push_back(i);
    return z;
}

vector<int> calc(const string &s) {
    // cout << "s = " << s << endl;
    size_t last = 0;
    vector<int> ret;
    for (size_t i = 0; i <= s.size(); i++) {
        if (i == s.size() || s[i] == ',') {
            for (int t: calc2(s.substr(last, i - last))) {
                ret.push_back(t);
            }
            last = i + 1;
        }
    }
    return ret;
}

signed main() {
    cin.tie(nullptr) -> sync_with_stdio(false);
    int n;
    cin >> n;
    const int amt[3] = {24, 60, 60};

    int ans = 0;
    set<int> st;
    for (int i = 0; i < n; i++) {
        vector<int> last;
        last.emplace_back(0);

        for (int j = 0; j < 3; j++) {
            string s;
            cin >> s;
            if (s == "*") {
                vector<int> tmp;
                for (int x: last) {
                    for (int t = 0; t < amt[j]; t++) {
                        tmp.emplace_back(x * amt[j] + t);
                    }
                }
                last = tmp;
            } else {
                vector<int> tmp;
                for (int x: last) {
                    for (int t: calc(s)) {
                        tmp.emplace_back(x * amt[j] + t);
                    }
                }
                last = tmp;
            }
        }
        for (int s: last)
            st.insert(s);

        ans += last.size();
    }

    cout << st.size() << ' ' << ans << '\n';

    return 0;
}

详细

Test #1:

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

input:

3
* 5 15,30,45
6,12,18 30 0
8-17 0 30

output:

85 85

result:

ok single line: '85 85'

Test #2:

score: 0
Accepted
time: 1ms
memory: 3508kb

input:

22
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37
19 1 37

output:

1 22

result:

ok single line: '1 22'

Test #3:

score: 0
Accepted
time: 1ms
memory: 3564kb

input:

24
2 55 56
0 13 2
4 8 35
16 43 48
5 28 58
8 40 7
3 59 6
7 32 20
6 37 16
15 39 23
20 42 15
22 26 10
17 57 52
21 0 44
11 33 14
18 17 49
19 25 34
9 45 9
14 24 31
10 4 27
12 29 22
1 21 50
23 54 18
13 11 12

output:

24 24

result:

ok single line: '24 24'

Test #4:

score: 0
Accepted
time: 286ms
memory: 8056kb

input:

100
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* ...

output:

86400 8640000

result:

ok single line: '86400 8640000'

Test #5:

score: 0
Accepted
time: 26ms
memory: 8108kb

input:

8
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 0,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 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,2...

output:

86400 691200

result:

ok single line: '86400 691200'

Test #6:

score: 0
Accepted
time: 1ms
memory: 3496kb

input:

9
8 5 0
* 30 0
* 0,15,30,45 30
9-17 0 0
6,8-17,19,22 30 30
9-17 30 0
0 0 10-19
18-23 0 30,57-59
0-5 1-5 1

output:

188 216

result:

ok single line: '188 216'

Test #7:

score: 0
Accepted
time: 1ms
memory: 3712kb

input:

5
5,7-11,21 15,45 10
10,14,16 0-2,15,30-33 29,59
* 29,59 *
18 0 9,14-21,29,45-47,58
0-1,13,22 10,34,46,48 15,24,33,47,54-58

output:

3100 3100

result:

ok single line: '3100 3100'

Test #8:

score: 0
Accepted
time: 1ms
memory: 3704kb

input:

5
7,14-19,21 11-14,33-38,43 56
* 54-56 2
3,4,8 8 13-16,23,30-32
6 * 15-17
2-7 5,7,23-27 *

output:

2863 2884

result:

ok single line: '2863 2884'

Test #9:

score: 0
Accepted
time: 1ms
memory: 3560kb

input:

1
23 59 59

output:

1 1

result:

ok single line: '1 1'

Test #10:

score: 0
Accepted
time: 0ms
memory: 3616kb

input:

3
* * 45
3 4-8,50 *
* 49 *

output:

3210 3240

result:

ok single line: '3210 3240'