QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#673076#9513. 环上排序信息最优分割WrongAnswer_9010 2ms12304kbC++239.4kb2024-10-24 20:30:332024-10-24 20:30:59

Judging History

This is the latest submission verdict.

  • [2024-10-24 20:30:59]
  • Judged
  • Verdict: 10
  • Time: 2ms
  • Memory: 12304kb
  • [2024-10-24 20:30:33]
  • Submitted

answer

#include<bits/stdc++.h>
#define ull unsigned long long
#define ui unsigned int
#define ld long double
#define ll long long
#define lll __int128
#define fi first
#define se second
#define e emplace
#define eb emplace_back
#define db double
#define ef emplace_front
#define pii pair<int,int>
#define pll pair<ll,ll>
#define vi vector<int>
#define vll vector<ll>
#define vp vector<pii>
#define vt vector<tup>
#define all(x) x.begin(),x.end()
#define mp make_pair

#define FastI
#define FastO
#define int ll
bool ST;
static const ll MOD=998244353,Phi=998244352,inv2=499122177,Root=3,iRoot=332748118;
static const ll inf=1073741823,Inf=4294967296,INF=4557430888798830399;
static const ld eps=1e-9,pi=3.1415926535;
char in[1<<20],*p1=in,*p2=in;
char out[1<<20],*p3=out;
using namespace std;
struct tup
{
	int x,y,z;
	tup(int X=0,int Y=0,int Z=0)
	{x=X,y=Y,z=Z;}
};
#ifdef FastI
#define getchar() (p1==p2&&(p2=(p1=in)+fread(in,1,1<<20,stdin),p1==p2)?EOF:*p1++)
#endif
#ifdef FastO
#define putchar(x) (p3-out==1<<20?fwrite(out,1,1<<20,stdout),p3=out,0:0,*p3++=x)
#define puts(x) write(x,'\n')
#endif
namespace FastIO
{
	template<typename T> inline void write(T x,char ch=' ')
	{
		if(is_same<char,T>::value)putchar(x);
		else
		{
			if(x<0)x=-x,putchar('-');
			static char st[25];
			int top=0;
			do st[top++]=x%10+'0',x/=10;while(x);
			while(top)putchar(st[--top]);
		}
		ch!='~'?putchar(ch):0;
	}
	inline void write(const char*x,char ch=' ')
	{
		for(int i=0;x[i]!='\0';++i)putchar(x[i]);
		ch!='~'?putchar(ch):0;
	}
	inline void read(char&s){do s=getchar();while(s=='\n'||s==' ');}
	inline void read(char s[])
	{
		int len=0;char st;
		do st=getchar();while(st=='\n'||st==' ');
		s[++len]=st,st=getchar();
		while(st!='\n'&&st!=' '&&st!='\r')s[++len]=st,st=getchar();
		s[++len]='\0';
	}
	template<typename T> inline void read(T &s)
	{
		char ch=getchar();s=0;
		while((ch>'9'||ch<'0')&&ch!='-')ch=getchar();
		bool tf=(ch=='-'&&(ch=getchar()));
		while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+ch-'0',ch=getchar();
		s=tf?-s:s;
	}
	inline void edl(){putchar('\n');}
	template<typename T1,typename T2> inline void read(pair<T1,T2> &s){read(s.fi),read(s.se);}
	template<typename T,typename...Args> inline void write(T x,Args...args){write(x,'~'),write(args...);}
	template<typename T,typename...Args> inline void read(T&x,Args&...args){read(x),read(args...);}
	#ifdef FastO
	struct Writer{~Writer(){fwrite(out,1,p3-out,stdout);}}Writ;
	#endif
}
using namespace FastIO;
namespace MTool
{
	inline int Cadd(int a,int b){return (ll)a+b>=MOD?(ll)a+b-MOD:a+b;}
	inline int Cdel(int a,int b){return a-b<0?a-b+MOD:a-b;}
	inline int Cmul(int a,int b){return 1ll*a*b%MOD;}
	inline int sqr(int a){return 1ll*a*a%MOD;}
	inline void Madd(int&a,int b){a=((ll)a+b>=MOD?(ll)a+b-MOD:a+b);}
	inline void Mdel(int&a,int b){a=(a-b<0?a-b+MOD:a-b);}
	inline void Mmul(int&a,int b){a=1ll*a*b%MOD;}
	inline int Cmod(int x){return (x%MOD+MOD)%MOD;}
	inline void Mmod(int&x){x=(x%MOD+MOD)%MOD;}
	template<typename T> inline bool Mmax(T&a,T b){return a<b?a=b,1:0;}
	template<typename T> inline bool Mmin(T&a,T b){return a>b?a=b,1:0;}
	template<typename...Args> inline void Madd(int&a,int b,Args...args){Madd(a,b),Madd(a,args...);}
	template<typename...Args> inline void Mmul(int&a,int b,Args...args){Mmul(a,b),Mmul(a,args...);}
	template<typename...Args> inline void Mdel(int&a,int b,Args...args){Mdel(a,b),Mdel(a,args...);}
	template<typename...Args> inline int Cadd(int a,int b,Args...args){return Cadd(Cadd(a,b),args...);}
	template<typename...Args> inline int Cmul(int a,int b,Args...args){return Cmul(Cmul(a,b),args...);}
	template<typename...Args> inline int Cdel(int a,int b,Args...args){return Cdel(Cdel(a,b),args...);}
	template<typename...Args,typename T> inline bool Mmax(T&a,T b,Args...args){return Mmax(a,b)|Mmax(a,args...);}
	template<typename...Args,typename T> inline bool Mmin(T&a,T b,Args...args){return Mmin(a,b)|Mmin(a,args...);}
	inline int power(int x,int y){int s=1;for(;y;y>>=1,Mmul(x,x))if(y&1)Mmul(s,x);return s;}
}
using namespace MTool;
namespace WrongAnswer_90
{
	int n;
	vi A[200010],B[200010],from[200010];
	vll F[200010];
	#define clr(x) (vi().swap(x))
	namespace myee_trie {
	typedef unsigned long long ullt;
	const ui Dep = 5, W = 64, LogW = 6, And = W - 1, Val = 16777216;
	ullt BUFF[Val >> LogW << 1 | 1];
	ullt *BT = BUFF + sizeof(BUFF) / sizeof(ullt);
	ullt *NewMemory(ui siz) { return BT -= siz; }
	inline ui hp(ullt v) { return W - __builtin_clzll(v) - 1; }
	inline ui lp(ullt v) { return __builtin_ctzll(v); }
	struct Trie  // 压位 Trie
	{
	    ullt *Node[Dep - 1];
	    Trie() {
	        for (ui i = 0; i + 1 < Dep; i++) Node[i] = NewMemory(1llu << (LogW * i));
	    }
	    inline void insert(ui v) {
	        for (ui i = Dep - 2; ~i; i--) {
	            if (Node[i][v >> LogW] >> (v & And) & 1) return;
	            Node[i][v >> LogW] |= 1llu << (v & And), v >>= LogW;
	        }
	    }
	    inline void erase(ui v) {
	        if (!(Node[Dep - 2][v >> LogW] >> (v & And) & 1)) return;
	        for (ui i = Dep - 2; ~i; i--) {
	            Node[i][v >> LogW] &= ~(1llu << (v & And)), v >>= LogW;
	            if (Node[i][v]) return;
	        }
	    }
	    inline ui prev(ui v) {
	        for (ui i = Dep - 2; ~i; i--, v >>= LogW)
	            if (Node[i][v >> LogW] & ~((-1llu) << (v & And))) {
	                ui p = hp(Node[i][v >> LogW] & ~((-1llu) << (v & And))) | (v >> LogW << LogW);
	                while (++i <= Dep - 2) p = (p << LogW) | hp(Node[i][p]);
	                return p;
	            }
	        return 0;
	    }
	    inline ui next(ui v) {
	        for (ui i = Dep - 2; ~i; i--, v >>= LogW)
	            if (Node[i][v >> LogW] & ((-1llu) << (v & And) << 1)) {
	                ui p = lp(Node[i][v >> LogW] & ((-1llu) << (v & And) << 1)) | (v >> LogW << LogW);
	                while (++i <= Dep - 2) p = (p << LogW) | lp(Node[i][p]);
	                return p;
	            }
	        return 0;
	    }
	} T;
	};
	using myee_trie::T;
	vi num;
	ll sum[200010];
	int l[200010],r[200010];
	ll ans=INF;
	inline void ins(int id,int x)
	{
		int L=T.prev(x),R=T.next(x);
		T.insert(x);
//		cerr<<id<<" "<<sum[id]<<endl;
//		cerr<<L<<" "<<R<<" "<<num[L]<<" "<<num[R]<<" "<<num[x]<<endl;
		sum[id]-=2ll*(num[x]-num[L])*(num[R]-num[x]);
//		cerr<<id<<" "<<sum[id]<<endl;
	}
	inline void del(int id,int x)
	{
		T.erase(x);
		int L=T.prev(x),R=T.next(x);
		sum[id]+=2ll*(num[x]-num[L])*(num[R]-num[x]);
	}
	inline void move(int id,int _l,int _r)
	{
		while(l[id]>_l)ins(id,B[(id+n-2)%n+1][--l[id]]);
		while(l[id]<_l)del(id,B[(id+n-2)%n+1][l[id]++]);
		while(r[id]<_r)ins(id,A[id][++r[id]]);
		while(r[id]>_r)del(id,A[id][r[id]--]);
	}
	void Solve(int l,int r,int L,int R,int id)
	{
		if(l>r)return;
		int mid=(l+r)>>1;
		assert(L<=R);
		from[id][mid]=-1;
		for(int i=L;i<=R;++i)
		{
			move(id,i+1,mid);
			if(Mmin(F[id][mid],sum[id]+F[id-1][i]))
			from[id][mid]=i;
		}
		assert(from[id][mid]!=-1);
		Solve(l,mid-1,L,from[id][mid],id);
		Solve(mid+1,r,from[id][mid],R,id);
	}
	void solve(int l,int r,vi L,vi R)
	{
		if(l>r)return clr(L),clr(R),void();
		int mid=(l+r)>>1;
		for(int j=L[1];j<=R[1];++j)
		F[1][j]=INF;
		F[1][mid]=0;
		for(int i=2;i<=n;++i)
		{
			for(int j=L[i];j<=R[i];++j)
			F[i][j]=INF;
			Solve(L[i],R[i],L[i-1],R[i-1],i);
		}
		ll val=INF;
		vi Mid(n+1);
		for(int i=L[n];i<=R[n];++i)
		{
			move(1,i+1,mid);
			if(Mmin(val,F[n][i]+sum[1]))
			Mid[n]=i;
		}
//		for(int i=1;i<=n;++i)
//		{
//			for(int j=0;j<(int)F[i].size()-1;++j)
//			cerr<<F[i][j]<<" ";
//			cerr<<endl;
//		}
//		exit(0);
		Mmin(ans,val);
		for(int i=n;i>1;--i)
		Mid[i-1]=from[i][Mid[i]];
		
		solve(l,mid-1,L,Mid);
		solve(mid+1,r,Mid,R);
		
		clr(L),clr(R),clr(Mid);
	}
	void mian()
	{
		int x,minn=inf,mini=-1;
		read(n);
		for(int i=1;i<=n;++i)
		{
			read(x);
			B[i].resize(x+1);
			for(int j=1;j<=x;++j)read(B[i][j]);
			if(Mmin(minn,(int)B[i].size()))
			mini=i;
		}
		
		for(int i=mini;i<=n;++i)A[i-mini+1]=B[i];
		for(int i=1;i<mini;++i)A[n-mini+i+1]=B[i];
		vi L(1),R(1);
		ll nw=0;
		num.eb(0);
		for(int i=1;i<=n;++i)
		{
			B[i]=A[i];
			F[i].resize(A[i].size());
			from[i].resize(A[i].size());
			
			l[i]=A[(i+n-2)%n+1].size(),r[i]=0;
			sum[i]=4e12;
			
			for(auto p:A[i])
			num.eb(nw+p);
			if(i<n)
			for(auto p:A[i])
			num.eb(nw+p+2000000);
			nw+=2e6;
			num.eb(nw);
			L.eb(0),R.eb(A[i].size()-2);
		}
		for(auto p:A[n])num.eb(p);
		sort(all(num));
//		for(auto p:num)cerr<<p<<" ";
		num.resize(unique(all(num))-num.begin());
		for(int i=1;i<=n;++i)
		{
			for(auto &p:A[i])
			p=lower_bound(all(num),p+2000000ll*(i-1))-num.begin();
		}
		for(int i=1;i<n;++i)
		{
			for(auto &p:B[i])
			p=lower_bound(all(num),p+2000000ll*i)-num.begin();
		}
		for(auto &p:B[n])
		p=lower_bound(all(num),p)-num.begin();
		T.insert(0);
		for(int i=1;i<=n;++i)
		T.insert(lower_bound(all(num),2000000ll*i)-num.begin());
//		cerr<<num[1]<<endl;
//		ins(1,1);
//		cerr<<sum[1];exit(0);
		solve(0,A[1].size()-2,L,R);
		write(ans);
	}
	inline void Mian()
	{
		int T=1;
//		read(T);
		while(T--)mian();
	}
}
bool ED;
signed main()
{
//	ios::sync_with_stdio(0);
//	freopen("1.in","r",stdin);
//	freopen("1.out","w",stdout);
	double st=clock();
	WrongAnswer_90::Mian();
	double ed=clock();
 	cerr<<endl;
 	cerr<<"Time: "<<ed-st<<" ms\n";
 	cerr<<"Memory: "<<abs(&ST-&ED)/1024.0/1024.0<<" MB\n";
	return 0;
}

詳細信息

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 2ms
memory: 10036kb

input:

7
2 141209 1121811
2 812367 1802201
2 977174 168547
2 1687591 770753
2 383640 1117793
2 976813 1295653
2 1204905 1272531

output:

11670772336006 

result:

ok single line: '11670772336006 '

Test #2:

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

input:

2
3 747473 498147 966660
4 140021 1580273 1406494 1082158

output:

2048229359670 

result:

ok single line: '2048229359670 '

Test #3:

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

input:

3
2 1728062 1099010
2 681240 1097031
3 1641021 1511445 589879

output:

4172471577572 

result:

ok single line: '4172471577572 '

Test #4:

score: 10
Accepted
time: 2ms
memory: 12280kb

input:

5
16 584133 1584872 154106 1620031 591988 744576 1145492 27159 242511 670507 1070239 967255 904906 1001126 1473498 476319
6 854977 1522388 1715546 755137 1587176 1693529
10 1712058 1021608 56261 1457152 501427 1834297 1045836 1646715 1286280 1705780
13 1970970 641553 1429549 1002213 510656 1957451 1...

output:

1733588007714 

result:

ok single line: '1733588007714 '

Test #5:

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

input:

5
34 1566025 85940 278880 454649 787234 1305849 154207 1474698 1600192 503961 365771 1482441 1547432 161149 264902 261751 1808604 1742906 421948 1700417 1130148 1895614 1845604 1982079 1809962 570006 806643 1147674 642303 1639211 71572 504934 1645348 777213
12 891780 864141 142718 810549 1837977 156...

output:

1998774012376 

result:

ok single line: '1998774012376 '

Test #6:

score: 10
Accepted
time: 2ms
memory: 10200kb

input:

8
12 1661582 42963 825548 905766 1396233 1586762 1462654 1109305 494915 350916 1873040 393645
13 345398 1885409 1256560 1894290 1491080 1621530 227733 1736972 1628382 1484099 800971 57243 477341
12 188280 1756126 1032009 615335 993454 1177927 1940147 533378 483231 360286 2257 140152
12 1166895 98911...

output:

4213902956250 

result:

ok single line: '4213902956250 '

Test #7:

score: 10
Accepted
time: 2ms
memory: 10092kb

input:

2
53 302846 1295542 24845 1212574 1304172 104285 703874 84915 1712705 1244300 1414005 1987829 453192 1608635 1118210 1309012 1277168 507531 1409701 1910782 396566 1922014 606343 1790716 1330747 226808 1781210 1977352 1075232 1056760 882341 497105 1552080 1341875 607475 298838 1823003 970560 1613243 ...

output:

307847818150 

result:

ok single line: '307847818150 '

Test #8:

score: 10
Accepted
time: 2ms
memory: 10096kb

input:

5
19 219089 505437 1310185 184027 898555 1116029 87339 217421 1309381 519629 1288544 1712726 339398 1854776 86798 318778 1150968 142049 889486
19 1165430 1587268 19293 1800520 372004 508331 916039 98568 1733119 46813 734281 188087 1898878 1387285 1203403 1880278 985595 382635 1809272
20 1472954 1533...

output:

1692696172628 

result:

ok single line: '1692696172628 '

Test #9:

score: 10
Accepted
time: 2ms
memory: 12008kb

input:

6
21 357771 315599 1460430 818532 214122 1172906 1734280 1500944 1018238 1714578 1521590 1446805 1232828 1586122 1658707 1391658 1587342 123447 18944 222566 1208967
10 564921 713032 1585614 1192233 698056 1182537 1019254 360882 985272 202180
13 815939 1021021 1857909 1535469 415946 1834538 85776 173...

output:

2597658447248 

result:

ok single line: '2597658447248 '

Test #10:

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

input:

8
12 380229 1846517 1793452 533237 803179 1861650 1346185 1016991 1854367 185486 1269069 1523331
15 1404393 1476051 1296740 124511 1599551 597438 983996 1530258 1027553 206078 329015 485189 1899261 1724574 364569
9 400122 370232 1501910 662275 1393909 1996150 140566 1329516 500584
9 891866 416021 17...

output:

3875073703894 

result:

ok single line: '3875073703894 '

Subtask #2:

score: 0
Wrong Answer

Dependency #1:

100%
Accepted

Test #11:

score: 20
Accepted
time: 0ms
memory: 10240kb

input:

147
2 1372901 772129
4 1020221 971692 1168518 159062
3 984910 1258846 1235276
3 878312 143829 1298333
3 1621632 1328072 1757948
2 1974623 996846
6 1868536 553403 1996068 1295727 653126 1805160
2 432938 1048701
3 917584 771455 856917
3 1907080 1449811 328103
2 236480 1908319
2 1049603 1624504
4 50589...

output:

211627731592048 

result:

ok single line: '211627731592048 '

Test #12:

score: 20
Accepted
time: 0ms
memory: 12304kb

input:

152
5 174207 387280 690833 15287 439714
5 1201407 681555 1745531 469616 1228449
6 1556243 63257 952534 1647801 318933 653183
6 111530 1644663 733744 909159 499759 632269
9 765943 1385423 1088518 452880 441111 1547494 141731 954414 231825
6 767182 1911649 213321 1316021 1833365 951382
5 141116 693885...

output:

133043790176918 

result:

ok single line: '133043790176918 '

Test #13:

score: 20
Accepted
time: 0ms
memory: 10268kb

input:

500
2 28558 973575
2 1327149 1966676
2 1171935 232590
2 1124942 1569805
2 1132550 481012
2 1046320 419786
2 170580 971835
2 1974155 1252285
2 1882588 1340878
2 1414318 244813
2 1678309 1687898
2 810989 522410
2 1351481 1145851
2 1222091 1312777
2 1405614 1951551
2 1412654 1305216
2 726188 975503
2 9...

output:

949657455192700 

result:

ok single line: '949657455192700 '

Test #14:

score: 0
Wrong Answer
time: 2ms
memory: 12152kb

input:

13
26 183835 1891616 1615510 1115306 94917 1550834 1403382 961362 991619 78890 569339 1515129 1642042 1443476 1609830 1844840 1816400 79821 1761506 1958708 1718252 1056795 816456 443329 248678 1087100
29 910626 215950 202302 1896290 222131 1572381 300318 1562003 1371685 1910953 827189 1190876 114324...

output:

3045690939586 

result:

wrong answer 1st lines differ - expected: '3045699033828', found: '3045690939586 '

Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Skipped

Dependency #3:

0%