QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#117799#6676. Computational Geometryfeecle6418AC ✓23ms6920kbC++141.4kb2023-07-02 09:23:522023-07-02 09:23:54

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-02 09:23:54]
  • 评测
  • 测评结果:AC
  • 用时:23ms
  • 内存:6920kb
  • [2023-07-02 09:23:52]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 9;
int n, K;
struct point {
	ll x, y;
} a[200005];
ll Dot(point x, point y) { return x.x * y.x + x.y * y.y; }
ll Cross(point x, point y) { return x.x * y.y - x.y * y.x; }
ll Dis(point x, point y) { return (x.x - y.x) * (x.x - y.x) + (x.y - y.y) * (x.y - y.y); }
point operator+(point x, point y) { return {x.x + y.x, x.y + y.y}; }
point operator-(point x, point y) { return {x.x - y.x, x.y - y.y}; }
ll Calc(point a, point b, point c) { return Cross(b - a, c - a); }
ll Get(ll x, ll y, ll l, ll r) {
	while (r - l > 1) {
		int m1 = (l + r) / 2, m2 = m1 + 1;
		if (Calc(a[x], a[y], a[m1]) > Calc(a[x], a[y], a[m2])) r = m1;
		else l = m2;
	}
	ll ans = 0;
	for (int i = l; i <= r; i++) ans = max(ans, Calc(a[x], a[y], a[i]));
	return ans;
}
void Solve() {
	scanf("%d%d", &n, &K);
	for (int i = 0; i < n; i++) {
		scanf("%lld%lld", &a[i].x, &a[i].y);
		a[i + n] = a[i];
	}
	// 0~K
	ll cursum = 0, ans = 0;
	for (int i = 0; i + 1 < K; i++) {
		cursum += Cross(a[K] - a[i + 1], a[i] - a[i + 1]);
	}
	for (int i = 0; i < n; i++) {
		ans = max(ans, cursum + Get(i, i + K, i + K + 1, i + n - 1));
		cursum -= Cross(a[i + K] - a[i + 1], a[i] - a[i + 1]);
		cursum += Cross(a[i + K + 1] - a[i + K], a[i + 1] - a[i + K]);
	}
	printf("%.1Lf\n", 1.0l * ans / 2);
}
int main() {
	int t;
	scanf("%d", &t);
	while (t--) Solve();
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

3
3 1
0 0
1 0
0 1
8 3
1 2
3 1
5 1
7 3
8 6
5 8
3 7
1 5
7 2
3 6
1 1
3 1
7 1
8 1
5 6
4 6

output:

0.5
26.5
20.0

result:

ok 3 numbers

Test #2:

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

input:

1
4 2
-1000000000 -1000000000
1000000000 -1000000000
1000000000 1000000000
-1000000000 1000000000

output:

4000000000000000000.0

result:

ok found '4000000000000000000.000000000', expected '4000000000000000000.000000000', error '0.000000000'

Test #3:

score: 0
Accepted
time: 21ms
memory: 3612kb

input:

14246
7 5
-999999980 -999999988
-999999979 -999999984
-999999978 -999999978
-999999979 -999999972
-1000000000 -999999998
-999999993 -1000000000
-999999984 -999999993
6 1
-999999987 -999999987
-999999993 -999999981
-999999998 -999999986
-1000000000 -999999996
-999999995 -1000000000
-999999986 -999999...

output:

230.5
78.0
173.0
46.0
161.5
25.0
224.0
78.0
42.0
75.0
113.5
179.0
227.0
224.5
459.5
33.5
323.0
208.0
14.0
117.0
261.5
162.5
136.0
227.5
91.0
376.0
81.0
502.5
179.5
141.0
346.5
41.0
90.5
209.0
118.0
183.0
406.5
49.5
80.5
222.5
394.0
243.0
114.0
402.0
245.5
386.0
106.0
75.0
297.5
424.0
269.0
104.0
216...

result:

ok 14246 numbers

Test #4:

score: 0
Accepted
time: 23ms
memory: 3652kb

input:

14244
6 4
-547850284 -481269250
-1000000000 -714647423
-533299247 -1000000000
656886478 -769438616
700263718 -430440203
106399420 -305601756
10 3
-466281822 506862192
-907094238 85058839
-1000000000 -281869646
-855490497 -478229011
-112167057 -1000000000
147495199 -983428035
704507845 -902383045
828...

output:

732791354437434402.5
1492466916906283434.5
1571608624804175410.0
853722168331793629.5
1841579555796117823.5
186812625650844482.0
1374931373816256616.0
1396248766527417139.5
300749428982044501.0
1597680977600300477.0
238431782745048669.5
1905621061870671069.5
1457051885738670384.5
772319614795252917....

result:

ok 14244 numbers

Test #5:

score: 0
Accepted
time: 16ms
memory: 3812kb

input:

1000
100 84
-638427072 -696806030
-574275620 -741577840
-517724956 -779879773
-440790977 -831653888
-371696794 -867523797
-292070733 -904513365
-246157947 -920874374
-196125497 -936669098
-120139525 -960537360
-54479671 -978537127
-11534554 -987883373
26411313 -994847568
72263671 -1000000000
1168709...

output:

2901829084045602653.5
327527198347053245.5
1734256029955228808.0
2416380865036326542.0
935891084317887469.0
2828414703961765312.0
2101460694807832700.0
2426931532374706265.0
2679372534658023503.5
2762361281720090419.0
1176864063012644015.0
2674175975267185443.5
415161195168528653.0
13157111226510322...

result:

ok 1000 numbers

Test #6:

score: 0
Accepted
time: 12ms
memory: 3604kb

input:

100
1000 168
-808847262 -517721134
-803072067 -525448193
-798730847 -531136476
-796502549 -534032203
-791151313 -540928191
-786588703 -546785604
-782732315 -551644783
-780071973 -554976222
-774771946 -561591700
-769683918 -567839156
-769554831 -567997637
-766249149 -572042373
-759870835 -579831042
-...

output:

1028923552719996045.0
2832301779860078526.0
2848011247470070271.0
2506790184987356823.5
2622377875251076131.0
2556381233480029365.5
2780396909089778369.5
1735531899101324156.5
987263293126023982.0
2933858965189297928.0
1940748120157040436.0
2867130361573929234.0
2747069586277213982.0
275180739114962...

result:

ok 100 numbers

Test #7:

score: 0
Accepted
time: 22ms
memory: 4076kb

input:

10
10000 3930
374998960 871320826
374305646 871707307
373541784 872131442
372913079 872480119
372247815 872848960
372082544 872940283
371300533 873371391
370696772 873703715
369897687 874143282
369135422 874562333
368787728 874753324
368396307 874968013
367915968 875230945
367376687 875525844
367147...

output:

2095908706043761789.0
2881509906421599358.0
860651843537664107.0
2225240521612313977.5
911084696371304608.0
2134470965837802211.0
2924168382633125311.5
1052994530795952349.5
2555680635181519967.0
2703241471286160570.5

result:

ok 10 numbers

Test #8:

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

input:

1
100000 91077
937469288 -231959258
937491476 -231891836
937502721 -231857664
937522226 -231798381
937545631 -231727224
937556752 -231693411
937581626 -231617767
937594048 -231579990
937605611 -231544822
937620487 -231499574
937644936 -231425160
937656870 -231388830
937680141 -231317975
937699154 -2...

output:

2889987064399269902.0

result:

ok found '2889987064399269888.000000000', expected '2889987064399269888.000000000', error '0.000000000'