QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#592638#7111. Press the ButtonsyssWA 0ms3664kbC++201.3kb2024-09-27 00:52:492024-09-27 00:52:51

Judging History

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

  • [2024-09-27 00:52:51]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3664kb
  • [2024-09-27 00:52:49]
  • 提交

answer

#include <bits/stdc++.h>
#define int long long
using namespace std;
using i64 = long long;
using PLB = pair<i64, bool>;

void solve() {
	int a, b, c, d;
	i64 v, t;
	cin >> a >> b >> c >> d >> v >> t;
	i64 T = 1LL * a / gcd(a, c) * c; // lcm(a, c)

	auto calc = [&](auto t) {
	    // cnt : 计数器的值
	    // tim : LED 最后亮到哪
	    i64 cnt = 0, time = -1;
	    // now : 现在的时间
	    // x : BaoBao 下一次按键的时间
	    // y : DreamGrid 下一次按键的时间
	    i64 now = 0, x = 0, y = 0;
	    while (now <= t) {
	        // BaoBao 按键
	        if (now == x) {
	            cnt += b - (now > time ? 1 : 0);
	            time = now + v;
	            x += a;
	        }
	        // DreamGrid 按键
	        if (now == y) {
	            cnt += d - (now > time ? 1 : 0);
	            time = now + v;
	            y += c;
	        }
	        // 前进到下一个按键的时刻
	        now = min(x, y);
	    }
	    return PLB{cnt, time > t};
	};

	if (t < T) {
		cout << calc(t).first << '\n';
	} else {
		PLB p1 = calc(T - 1);
		PLB p2 = calc(t % T);
		cout << (p1.first + (p1.second ? 1 : 0) * (t / T) + p2.first) << '\n';
	}
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int t;
	cin >> t;
	while (t--) {
		solve();
	}

	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3584kb

input:

2
8 2 5 1 2 18
10 2 5 1 2 10

output:

6
4

result:

ok 2 number(s): "6 4"

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3664kb

input:

1000
8 6 2 6 3 17
1 6 1 1 1 30
5 4 8 8 1 31
7 6 10 3 6 12
9 1 4 4 3 38
3 3 5 8 1 8
9 1 5 2 3 18
6 10 10 8 2 40
9 6 9 10 3 9
2 5 1 10 10 39
7 7 1 2 4 19
8 10 8 6 7 36
2 9 1 1 7 17
1 2 3 5 6 14
8 8 8 7 1 46
6 9 3 9 4 6
10 8 1 7 10 18
7 1 7 10 3 50
1 10 2 1 5 1
5 8 4 9 7 44
9 2 5 4 7 42
9 1 2 1 1 20
5 ...

output:

42
42
52
16
38
22
7
102
30
67
40
30
28
24
28
44
148
20
20
103
45
4
71
58
56
20
45
37
59
40
42
24
38
58
63
55
13
81
17
39
24
64
48
40
32
11
29
85
35
7
37
22
60
49
49
14
8
53
99
35
94
27
21
59
22
58
33
70
57
48
18
38
90
19
10
111
42
110
28
50
67
45
26
12
27
19
86
37
118
26
46
15
62
20
80
50
29
41
90
2...

result:

wrong answer 1st numbers differ - expected: '71', found: '42'