QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#215980 | #6676. Computational Geometry | GFFF | AC ✓ | 13ms | 6672kb | C++14 | 1.7kb | 2023-10-15 14:53:04 | 2023-10-15 14:53:05 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
// #define int long long
typedef long long db;
const int maxn=200005;
inline int read() {
int r=0,f=1;
char ch=getchar();
while(!isdigit(ch)) {
if(ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch)) {
r=(r<<1)+(r<<3)+(ch^48);
ch=getchar();
}
return r*f;
}
struct nod{
db x,y;
}a[maxn];
int n,k;
int T;
inline nod operator - (nod x,nod y) {return {x.x-y.x,x.y-y.y};}
inline db cross(nod x,nod y) {return x.x*y.y-x.y*y.x;}
inline db mian(nod x,nod y) {return fabs(cross(x,y));}
inline db calc(nod a,nod b,nod c) {return mian(a-b,a-c);}
signed main()
{
T=read();
while(T--) {
n=read(); k=read();
for(int i=1;i<=n;++i) {
int x=read(),y=read();
a[i+n]=a[i]={x,y};
}
db sum=0,ans=0,now=0;
for(int i=1;i<k;++i)
sum+=calc(a[i],a[i+1],a[k+1]);
int j=k+2;
for(int i=1;i<=n;++i) {
while(j<i+k+1) ++j;
while(j<=n+i-1) {
now=calc(a[i],a[k+i],a[j]);
if(j==n+i-1) break;
if(calc(a[i],a[k+i],a[j+1])<=now) break;
++j;
}
// cout<<i<<" "<<j<<" "<<sum<<" "<<now<<endl;
ans=max(ans,sum+now);
sum=sum-calc(a[i],a[i+1],a[k+i])+calc(a[i+1],a[k+i],a[k+i+1]);
}
printf("%.10lf\n",ans*0.5);
}
return 0;
}
/*
2
3 1
0 0
-1 0
0 -1
3 1
0 0
1 0
0 1
1
4 2
0 0
0 1
1 0
1 1
1
5 2
0 0
1 0
2 0
3 0
1 1
1
8 3
1 2
3 1
5 1
7 3
8 6
5 8
3 7
1 5
1
7 2
3 6
1 1
3 1
7 1
8 1
5 6
4 6
*/
这程序好像有点Bug,我给组数据试试?
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3544kb
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.5000000000 26.5000000000 20.0000000000
result:
ok 3 numbers
Test #2:
score: 0
Accepted
time: 1ms
memory: 3564kb
input:
1 4 2 -1000000000 -1000000000 1000000000 -1000000000 1000000000 1000000000 -1000000000 1000000000
output:
4000000000000000000.0000000000
result:
ok found '4000000000000000000.000000000', expected '4000000000000000000.000000000', error '0.000000000'
Test #3:
score: 0
Accepted
time: 12ms
memory: 3740kb
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.5000000000 78.0000000000 173.0000000000 46.0000000000 161.5000000000 25.0000000000 224.0000000000 78.0000000000 42.0000000000 75.0000000000 113.5000000000 179.0000000000 227.0000000000 224.5000000000 459.5000000000 33.5000000000 323.0000000000 208.0000000000 14.0000000000 117.0000000000 261.5000...
result:
ok 14246 numbers
Test #4:
score: 0
Accepted
time: 13ms
memory: 3608kb
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:
732791354437434368.0000000000 1492466916906283264.0000000000 1571608624804175360.0000000000 853722168331793664.0000000000 1841579555796117760.0000000000 186812625650844480.0000000000 1374931373816256512.0000000000 1396248766527417088.0000000000 300749428982044480.0000000000 1597680977600300544.00000...
result:
ok 14244 numbers
Test #5:
score: 0
Accepted
time: 9ms
memory: 3684kb
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:
2901829084045602816.0000000000 327527198347053248.0000000000 1734256029955228928.0000000000 2416380865036326400.0000000000 935891084317887488.0000000000 2828414703961765376.0000000000 2101460694807832576.0000000000 2426931532374706176.0000000000 2679372534658023424.0000000000 2762361281720090624.000...
result:
ok 1000 numbers
Test #6:
score: 0
Accepted
time: 2ms
memory: 3868kb
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:
1028923552719996032.0000000000 2832301779860078592.0000000000 2848011247470070272.0000000000 2506790184987356672.0000000000 2622377875251076096.0000000000 2556381233480029184.0000000000 2780396909089778176.0000000000 1735531899101324288.0000000000 987263293126023936.0000000000 2933858965189298176.00...
result:
ok 100 numbers
Test #7:
score: 0
Accepted
time: 9ms
memory: 4168kb
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:
2095908706043761664.0000000000 2881509906421599232.0000000000 860651843537664000.0000000000 2225240521612314112.0000000000 911084696371304576.0000000000 2134470965837801984.0000000000 2924168382633125376.0000000000 1052994530795952384.0000000000 2555680635181519872.0000000000 2703241471286160384.000...
result:
ok 10 numbers
Test #8:
score: 0
Accepted
time: 10ms
memory: 6672kb
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:
2889987064399269888.0000000000
result:
ok found '2889987064399269888.000000000', expected '2889987064399269888.000000000', error '0.000000000'