UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#196350#2438. 覆盖tkswls100286ms5160kbC++111.2kb2023-10-22 11:13:012023-10-22 12:07:17

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t, n, m, r, k, a[100005], h[100005], l[100005];
long double ans;
long long cnt;
bool cmp(int p, int q) {
	return p > q;
}
struct node {
	int name, num;
	bool operator <(const node p)const {
		return num < p.num;
	}
};
priority_queue<node> q;
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> t;
	while (t--) {
		cin >> n >> m >> r >> k;
		for (int i = 1; i <= n; i++) {
			h[i] = min(n - r + 1, i) - (max(1ll, i - r + 1)) + 1;
		}
		for (int i = 1; i <= m; i++) {
			l[i] = min(m - r + 1, i) - max(1ll, i - r + 1) + 1;
		}
		cnt = 0;
		for (int i = 1; i <= n; i++) a[i] = 0;
		sort(h + 1, h + n + 1, cmp);
		sort(l + 1, l + m + 1, cmp);
		while (q.size()) q.pop();
		for (int i = 1; i <= n; i++) {
			a[i] = 1;
			q.push(node{i, h[i]*l[1]});
		}
		node u;
		for (int i = 1; i <= k; i++) {
			u = q.top();
			cnt += u.num;
			a[u.name]++;
			if (a[u.name] <= m) {
				q.push(node{u.name, h[u.name]*l[a[u.name]]});
			}
			q.pop();
		}
		ans = cnt * 1.0 / ((n - r + 1) * (m - r + 1));
		cout << fixed << setprecision(10) << ans << "\n";
	}
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1364kb

input:

9
168 16 4 25
248 1 1 5
1 198 1 15
22 60 2 50
244 1 1 178
134 41 36 296
327 388 323 330
323 1 1 151
...

output:

0.1864801865
0.0201612903
0.0757575758
0.1614205004
0.7295081967
107.6363636364
330.0000000000
0.467...

result:

ok 9 numbers

Test #2:

score: 10
Accepted
time: 0ms
memory: 1396kb

input:

8
452 370 368 6
1 955 1 393
2 614 2 300
22 927 18 48
874 485 485 256
1 121 1 59
1 656 1 256
326 1 1 12

output:

6.0000000000
0.4115183246
0.9787928222
0.9494505495
256.0000000000
0.4876033058
0.3902439024
0.03680...

result:

ok 8 numbers

Test #3:

score: 10
Accepted
time: 3ms
memory: 1400kb

input:

8
570 1 1 63
874 101 100 34423
326 39 17 3209
1 194 1 108
581 3 3 44
325 996 321 568
722 5 2 1942
51...

output:

0.1105263158
4441.6774193548
126.0175315568
0.5567010309
0.2279792746
269.7159763314
2.6934812760
0....

result:

ok 8 numbers

Test #4:

score: 10
Accepted
time: 3ms
memory: 1392kb

input:

8
648 1 1 18
993 1 1 217
1 488 1 193
471 635 166 27730
107 314 105 18300
544 498 69 10432
94 169 72 ...

output:

0.0277777778
0.2185297080
0.3954918033
5313.0849673203
8503.3333333333
242.6556185265
188.8163265306...

result:

ok 8 numbers

Test #5:

score: 10
Accepted
time: 12ms
memory: 1672kb

input:

8
171 461 66 5695
91 457 91 16642
42 5480 28 15510
6956 3 2 3339
4344 40 19 74262
1294 7173 928 2418...

output:

590.9905660377
4126.4904632153
79.6405648267
0.9601725377
238.1764804775
3592.9913544669
2605.086854...

result:

ok 8 numbers

Test #6:

score: 10
Accepted
time: 30ms
memory: 3892kb

input:

10
52 35361 14 27041
1204 64402 24 58942
57312 1 1 9566
30529 1390 258 3753
11 1319 2 8352
2603 3 1 ...

output:

3.8445841059
0.4465326581
0.1669109436
7.2836144989
2.5347496206
0.8333973620
0.0627556597
1727.8554...

result:

ok 10 numbers

Test #7:

score: 10
Accepted
time: 70ms
memory: 5032kb

input:

10
85684 2 1 85182
39803 11514 11510 31751
84665 467 377 49640
10159 15824 10155 20
321 93363 108 28...

output:

0.4970706316
12916.3076977451
222.0251752898
20.0000000000
16.8237647910
545.5336161382
0.2352412414...

result:

ok 10 numbers

Test #8:

score: 10
Accepted
time: 64ms
memory: 4608kb

input:

10
75823 1 1 116
91 83897 89 43663
576 31059 177 7825
68910 4469 4469 29205
20 50937 19 27127
88091 ...

output:

0.0015298788
46.3674187736
19.8450138426
2025.3428664536
10.1222137120
0.3613390140
1856.4729019981
...

result:

ok 10 numbers

Test #9:

score: 10
Accepted
time: 54ms
memory: 5160kb

input:

9
223 85151 205 14819
59988 51568 1937 83192
26162 43 9 15672
66965 3402 2997 41850
1 61432 1 15098
...

output:

35.7622399849
108.3332678920
1.3867662963
1960.7067485813
0.2457676781
88.2549284886
0.6273428886
11...

result:

ok 9 numbers

Test #10:

score: 10
Accepted
time: 50ms
memory: 4976kb

input:

10
19 63061 2 12885
76021 125 107 33570
44040 10482 4206 18535
39391 130 128 27837
6653 30811 6651 6...

output:

0.0454064912
47.3159454653
1311.3365824243
90.7481662592
17280.0473076446
368.2864085363
0.018404410...

result:

ok 10 numbers