QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#211756#7520. Monster GeneratorzhouhuanyiWA 36ms3968kbC++142.9kb2023-10-12 20:57:542023-11-04 18:37:25

Judging History

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

  • [2023-11-04 18:37:25]
  • 管理员手动重测本题所有提交记录
  • 测评结果:WA
  • 用时:36ms
  • 内存:3968kb
  • [2023-11-04 17:11:38]
  • 管理员手动重测本题所有提交记录
  • 测评结果:0
  • 用时:36ms
  • 内存:3976kb
  • [2023-10-12 20:57:54]
  • 评测
  • 测评结果:0
  • 用时:36ms
  • 内存:3872kb
  • [2023-10-12 20:57:54]
  • 提交

answer

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 200
using namespace std;
const long long inf=(long long)(1e18);
long long read()
{
	char c=0;
	long long sum=0;
	while (c<'0'||c>'9') c=getchar();
	while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
	return sum;
}
int sgn(__int128 x)
{
	if (x>0) return 1;
	else if (x==0) return 0;
	else return -1;
}
struct reads
{
	long long a,ta,b,tb;
	__int128 ra,rb;
	int num;
	bool operator < (const reads &t)const
	{
		if (sgn(rb-ra)!=sgn(t.rb-t.ra)) return sgn(rb-ra)!=sgn(t.rb-t.ra)?sgn(rb-ra)>sgn(t.rb-t.ra):num<t.num;
		else if (rb-ra>=0) return ra!=t.ra?ra<t.ra:num<t.num;
		else return rb!=t.rb?rb>t.rb:num<t.num;
	}
};
reads st[N+1];
struct points
{
	long long x,y;
	bool operator < (const points &t)const
	{
		return x!=t.x?x<t.x:y<t.y;
	}
};
points tongs[N+1],dque[N+1];
points operator + (points a,points b)
{
	return (points){a.x+b.x,a.y+b.y};
}
points operator - (points a,points b)
{
	return (points){a.x-b.x,a.y-b.y};
}
int n,length,lengths,top;
long long m;
unsigned long long ans;
__int128 operator * (points a,points b)
{
	return (__int128)(a.x)*b.y-(__int128)(a.y)*b.x;
}
bool check(points a,points b,points c)
{
	return (b-a)*(c-a)>=0;
}
unsigned long long F(long long x)
{
	if (x<0) return 0;
	return (unsigned long long)((__int128)(x)*(x+1)>>1);
}
void calc(long long x)
{
	for (int i=1;i<=n;++i) st[i].ra=st[i].a+(__int128)(st[i].ta)*x,st[i].rb=st[i].b+(__int128)(st[i].tb)*x;
	sort(st+1,st+n+1);
	return;
}
bool check(long long x)
{
	for (int i=1;i<=n;++i) st[i].ra=st[i].a+(__int128)(st[i].ta)*x,st[i].rb=st[i].b+(__int128)(st[i].tb)*x;
	for (int i=1;i<=n-1;++i)
		if (st[i+1]<st[i])
			return 0;
	return 1;
}
void solve(long long l,long long r)
{
	long long res=0,res2=0,sl,sr;
	lengths=top=0;
	for (int i=1;i<=n;++i) tongs[++lengths]=(points){res2+st[i].ta,res+st[i].a},res+=st[i].a-st[i].b,res2+=st[i].ta-st[i].tb;
	sort(tongs+1,tongs+lengths+1);
	for (int i=1;i<=lengths;++i)
	{
		while (top>=2&&check(dque[top-1],dque[top],tongs[i])) top--;
		dque[++top]=tongs[i];
	}
	for (int i=1;i<=top;++i)
	{
		sl=l,sr=r;
		if (i>=2&&dque[i].x!=dque[i-1].x) sl=max(sl,(dque[i-1].y-dque[i].y)/(dque[i].x-dque[i-1].x)+1);
		if (i+1<=top)
		{
			if (dque[i].x==dque[i+1].x) sr=l-1;
			else sr=min(sr,(dque[i].y-dque[i+1].y)/(dque[i+1].x-dque[i].x));
		}
		if (sl<=sr) ans+=(unsigned long long)(dque[i].x)*(F(sr)-F(sl-1))+(unsigned long long)(dque[i].y)*(unsigned long long)(sr-sl+1);
	}
	return;
}
int main()
{
	long long t,lst;
	n=read(),m=read();
	for (int i=1;i<=n;++i) st[i].a=read(),st[i].ta=read(),st[i].b=read(),st[i].tb=read(),st[i].num=i;
	sort(st+1,st+n+1),t=0;
	while (t<=m)
	{
		lst=t,calc(t);
		for (int i=log(inf)/log(2);i>=0;--i)
			if (lst+(1ll<<i)<=m&&check(lst+(1ll<<i)))
				lst+=(1ll<<i);
		solve(t,lst),t=lst+1;
	}
	printf("%llu\n",ans);
	return 0;
}


详细

Test #1:

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

input:

3 5
3 1 5 2
4 2 1 3
1 9 100 1

output:

113

result:

ok single line: '113'

Test #2:

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

input:

3 100000000
3 1 5 2
4 2 1 3
1 9 100 1

output:

35000000549999998

result:

ok single line: '35000000549999998'

Test #3:

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

input:

10 1000000000000000000
776874380544333 197 471391764744275 33
159838820333814 107 677112662750393 41
962335658276824 48 255593531071176 11
127404116579775 209 268525254990127 34
647620110614714 76 897947476313307 13
146196843402516 221 772928712898807 39
637929916804442 2 716937021892338 15
64200226...

output:

17883317185357051350

result:

ok single line: '17883317185357051350'

Test #4:

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

input:

10 1000000000000
519946 5 967590 4
367668 9 772494 6
635694 5 932710 1
260259 2 627580 1
84994 3 52124 6
447095 4 705749 6
427312 2 977458 7
540121 1 292993 5
556831 6 321679 4
567919 4 609512 4

output:

1542003553318518337

result:

ok single line: '1542003553318518337'

Test #5:

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

input:

10 1000000000000000000
972703917532605 2 524956306619424 679
644953227221677 4 562488807303931 696
726248880302017 2 678581164692315 811
63290732871341 4 2359762326353 451
355584232678496 3 295959529542702 895
982076563374348 4 315626935294595 161
202583559712801 1 987516708328993 170
26590404960673...

output:

4582284981606185217

result:

ok single line: '4582284981606185217'

Test #6:

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

input:

10 1000000000000000000
915236950983 25 924829121702 314
142125786492 33 125091250839 71
702305171043 11 468800042449 438
449646370235 9 56198959092 472
246955215365 12 950417123809 62
646952653060 4 858914642874 441
693754630072 34 490226765023 91
273330383457 25 749838451697 371
635897703553 24 847...

output:

18304932886689493500

result:

ok single line: '18304932886689493500'

Test #7:

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

input:

100 1000000000000000000
839671173511709 107 620743247548148 134
338569457755976 9 455191878916920 157
56529874788057 33 993208347666256 99
553193266380324 120 589361808163439 126
866467572275902 19 13931460152331 210
630774124991101 56 253227140072409 133
970610042608501 106 332792633317838 252
8813...

output:

2159229278647499039

result:

ok single line: '2159229278647499039'

Test #8:

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

input:

100 1000000000000000000
926447257775795 188 535928580576730 524
773621914798781 805 607314524993852 999
433706296251306 467 260773017334982 276
627420175261216 730 936517336182015 391
944793592281860 143 916701567834795 374
985020926183290 391 155471328385744 343
158052135419112 152 37256868527793 4...

output:

845915142005167939

result:

ok single line: '845915142005167939'

Test #9:

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

input:

5 10000000
82420 1 83004 12
90974 1 5052 16
74853 1 50459 3
40080 1 8547 14
73449 1 29852 11

output:

50401135100561

result:

ok single line: '50401135100561'

Test #10:

score: 0
Accepted
time: 33ms
memory: 3820kb

input:

100 1000000000000000000
9993245793650 4 9241831921583 115
6604842581175 13 7477954917260 107
7956734211252 3 351959292590 21
8744829275263 11 1121812966924 88
4383873864556 10 7802901884633 87
2999374450961 5 7728117026444 119
2606040601922 2 9450726899416 95
463533606932 4 456141627827 113
51628088...

output:

1462626783113250968

result:

ok single line: '1462626783113250968'

Test #11:

score: 0
Accepted
time: 36ms
memory: 3848kb

input:

100 1000000000000000000
5514922686365 63 3893026500867 7
9437390653117 2 2307883657774 37
2266370593545 180 282207773345 54
7413603305531 64 6590374339957 4
2003184336714 205 3334946120451 23
8047937523313 197 6016974069987 57
49327962408 210 95380662767 50
5796501143593 219 4738100059711 11
4403864...

output:

3008948596970395169

result:

ok single line: '3008948596970395169'

Test #12:

score: 0
Accepted
time: 31ms
memory: 3908kb

input:

100 1000000000000000000
9522256146511 22 7648033142717 124
4890738110302 13 5169707386838 200
1692873223867 14 4198546120569 164
5759367352857 61 5467937093692 19
5156572753262 64 2244161860595 92
5800903619823 60 9979656907955 2
9003875069201 21 6933129430226 204
9783187462793 49 5298708535013 190
...

output:

5391002818765040268

result:

ok single line: '5391002818765040268'

Test #13:

score: 0
Accepted
time: 27ms
memory: 3768kb

input:

100 1000000000000000000
3121743641635 206 2774880557656 124
4341273709336 48 3868201748314 58
4898184402079 75 8962585631533 152
6469059809450 191 7785613783588 151
5901037828713 109 1086985069519 120
1872215875662 118 8935389074175 187
1080302564361 60 1962889993669 35
8218338957964 95 230441706635...

output:

4006532618546541597

result:

ok single line: '4006532618546541597'

Test #14:

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

input:

100 1000000000000000000
121103125248530 208 233527234872397 54
842070374171965 178 514148681666092 126
93136745067938 256 36717885771563 224
120511269258919 654 299962020993680 15
426864331284465 625 581173275854814 257
618912001992036 511 767521635123932 235
937058562049830 716 650234846124942 322
...

output:

7367765353666615058

result:

ok single line: '7367765353666615058'

Test #15:

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

input:

100 1000000000000000000
23284392897817 126 30977511034534 38
841495940790312 583 926499138731470 57
527560260544041 179 627459187144397 29
820340813703299 663 925690360693482 6
547369350978777 777 788007180251049 43
981250793921808 349 194382279990992 63
741370530598735 297 931419589514850 56
687866...

output:

7438179643288006845

result:

ok single line: '7438179643288006845'

Test #16:

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

input:

100 1000000000000000000
872423180427906 171 928660139134452 60
173464176166260 441 30242191203867 679
291627746220343 270 316446546573556 224
433904419794557 267 453622827613070 936
322487075039542 337 273582158548540 770
442190946439316 194 402704746493069 558
224382362705672 382 660906097188180 94...

output:

1676623952079872857

result:

ok single line: '1676623952079872857'

Test #17:

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

input:

100 1000000000000000000
447083504726390 41 217084089403816 104
450487653728833 43 576979382901346 56
589969051420591 8 411176483725392 60
733710648527183 60 208793807198690 80
819246579883243 5 634295240911810 19
120573670504083 31 567245341012191 97
244593463425171 8 74367118641765 87
2790961612563...

output:

3612430687325323033

result:

ok single line: '3612430687325323033'

Test #18:

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

input:

100 1000000000000000000
432410439270777 235 116344272313715 953
18833991674565 325 492411023067340 741
993487833166770 28 8834705038993 320
998878412553368 248 570799530850940 437
194089961995026 163 273965500040581 107
128666129189367 293 279847256835557 716
653181797300576 456 136293503069973 897
...

output:

12939147014964558709

result:

ok single line: '12939147014964558709'

Test #19:

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

input:

100 1000000000000000000
210114066313907 370 401244816929180 176
711657896227396 361 581112854286866 77
812417204182776 118 837215341723765 82
204282266930923 166 422636641427393 170
944666030439036 69 563942622285108 132
76718175341639 481 806791853518922 76
256410213740841 71 15055409072833 175
732...

output:

9598469605999375590

result:

ok single line: '9598469605999375590'

Test #20:

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

input:

100 1000000000000000000
182752800360801 328 547408164765978 31
557477952347166 161 753441955886985 21
514414548285144 180 993819825241906 10
757393185241412 421 294635656072618 4
29471967015767 474 745284417822919 6
187879293744454 503 379955926601373 22
630787488112518 226 998151791416706 26
312195...

output:

15132802571592726490

result:

ok single line: '15132802571592726490'

Test #21:

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

input:

100 1000000000000000000
249608 2571692352 1254347665 19271613868028
256888 7951928041 1774397545 78315915184249
150686 3237143848 1281449179 100522891111286
32617 3269902298 1554446514 109005033573806
104197 3693458716 1245405691 14792892061217
261343 2560573771 1382558981 61037905159690
180389 3689...

output:

8150417368480526315

result:

wrong answer 1st lines differ - expected: '8150417481066096321', found: '8150417368480526315'