QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#730185 | #7478. 无力回天 NOI2017 | qwertim | 100 ✓ | 2287ms | 30680kb | C++20 | 5.3kb | 2024-11-09 19:06:05 | 2024-11-09 19:06:05 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define i128 __int128
#define ull unsigned long long
#define ll long long
#define fo(i,l,r) for(int i=l;i<=r;i++)
#define fd(i,r,l) for(int i=r;i>=l;i--)
#define sqrt __builtin_sqrt
#define pii pair<int,int>
#define pll pair<long long,long long>
#define pdd pair<double,double>
#define tiii tuple<int,int,int>
#define fi first
#define se second
#define mem(a,b) memset(a,b,sizeof a)
inline int read(){char c=getchar();int a=0,b=1;while(c<'0'||c>'9')b=(c=='-'?-1:b),c=getchar();while(c>='0'&&c<='9')a=a*10+(c^48),c=getchar();return a*b;}inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');}template<typename T>void cmax(T&x,T y){x=max(x,y);}template<typename T>void cmin(T&x,T y){x=min(x,y);}
#ifdef QWERTIM
namespace __DEBUG_UTIL__{template<typename T>concept is_iterable=requires(T&&x){begin(x);}&&!is_same_v<remove_cvref_t<T>,string>;void print(const char*x){cerr<<x;}void print(char x){cerr<<"\'"<<x<<"\'";}void print(bool x){cerr<<(x?"T":"F");}void print(string x){cerr<<"\""<<x<<"\"";}void print(vector<bool>&&v){int f=0;cerr<<'{';for(auto&&i:v)cerr<<(f++?",":"")<<(i?"T":"F");cerr<<"}";}template<typename T>void print(T&&x){if constexpr(is_iterable<T>)if(size(x)&&is_iterable<decltype(*(begin(x)))>){int f=0;cerr<<"\n~~~~~\n";for(auto&&i:x)cerr<<setw(2)<<left<<f++,print(i),cerr<<"\n";cerr<<"~~~~~\n";}else{int f=0;cerr<<"{";for(auto&&i:x)cerr<<(f++?",":""),print(i);cerr<<"}";}else if constexpr(requires{x.pop();}){auto temp=x;int f=0;cerr<<"{";if constexpr(requires{x.top();})while(!temp.empty())cerr<<(f++?",":""),print(temp.top()),temp.pop();else while(!temp.empty())cerr<<(f++?",":""),print(temp.front()),temp.pop();cerr<<"}";}else if constexpr(requires{x.first;x.second;})cerr<<'(',print(x.first),cerr<<',',print(x.second),cerr<<')';else if constexpr(requires{get<0>(x);}){int f=0;cerr<<'(',apply([&f](auto...args){((cerr<<(f++?",":""),print(args)),...);},x),cerr<<')';}else cerr<<x;}template<typename T,typename...V>void printer(const char*names,T&&head,V&&...tail){int i=0;for(size_t bracket=0;names[i]!='\0'&&(names[i]!=','||bracket!=0);i++)if(names[i]=='('||names[i]=='<'||names[i]=='{')bracket++;else if(names[i]==')'||names[i]=='>'||names[i]=='}')bracket--;cerr.write(names,i)<<" = ",print(head);if constexpr(sizeof...(tail))cerr<<" ||",printer(names+i+1,tail...);else cerr<<"]\n";}template<typename T,typename...V>void printerArr(const char*names,T arr[],size_t N,V...tail){size_t i=0;for(;names[i]&&names[i]!=',';i++)cerr<<names[i];for(i++;names[i]&&names[i]!=',';i++);cerr<<" = {";for(size_t ind=0;ind<N;ind++)cerr<<(ind?",":""),print(arr[ind]);cerr<<"}";if constexpr(sizeof...(tail))cerr<<" ||",printerArr(names+i+1,tail...);else cerr<<"]\n";}}
#define debug(...) cerr<<'\n'<<__LINE__<<": [",__DEBUG_UTIL__::printer(#__VA_ARGS__,__VA_ARGS__)
#define debugArr(...) cerr<<'\n'<<__LINE__<<": [",__DEBUG_UTIL__::printerArr(#__VA_ARGS__,__VA_ARGS__)
#else
#define debug(...)
#define debugArr(...)
#endif
int n,q,a[50005],b[50005],opt,l,r,v;
struct basis{int b[32];basis(){mem(b,0);}};
void insert(basis&b,int x){
fd(i,31,0)if((x>>i)&1){
if(!b.b[i])return b.b[i]=x,void();
x^=b.b[i];
}
}
basis merge(basis b1,basis b2){
basis tmp;
fo(i,0,31)if(b1.b[i])insert(tmp,b1.b[i]);
fo(i,0,31)if(b2.b[i])insert(tmp,b2.b[i]);
return tmp;
}
int qmax(basis b,int x){
fd(i,31,0)cmax(x,x^b.b[i]);
return x;
}
#define ls (x<<1)
#define rs (x<<1|1)
#define mid (l+r>>1)
struct segtree_a{
int tr[200005],lazy[200005];
void pushup(int x){tr[x]=tr[ls]^tr[rs];}
void pushdown(int x,int l,int r){
if(lazy[x])
tr[ls]^=(mid-l+1)%2?lazy[x]:0,tr[rs]^=(r-mid)%2?lazy[x]:0,
lazy[ls]^=lazy[x],lazy[rs]^=lazy[x],lazy[x]=0;
}
void build(int x,int l,int r){
if(l==r)return tr[x]=a[l],void();
build(ls,l,mid),build(rs,mid+1,r),pushup(x);
}
void update(int x,int l,int r,int ql,int qr,int k){
if(ql<=l&&r<=qr)return tr[x]^=(r-l+1)%2?k:0,lazy[x]^=k,void();
pushdown(x,l,r);
if(ql<=mid)update(ls,l,mid,ql,qr,k);
if(mid<qr)update(rs,mid+1,r,ql,qr,k);
pushup(x);
}
int query(int x,int l,int r,int q){
return l==r?tr[x]:
(pushdown(x,l,r),(q<=mid?query(ls,l,mid,q):query(rs,mid+1,r,q)));
}
}sega;
struct segtree_b{
basis tr[200005];
void pushup(int x){tr[x]=merge(tr[ls],tr[rs]);}
void build(int x,int l,int r){
if(l==r)return insert(tr[x],b[l]),void();
build(ls,l,mid),build(rs,mid+1,r),pushup(x);
}
void update(int x,int l,int r,int q,int k){
if(l==r)return mem(tr[x].b,0),insert(tr[x],b[q]^=k);
q<=mid?update(ls,l,mid,q,k):update(rs,mid+1,r,q,k);
pushup(x);
}
basis query(int x,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr)return tr[x];
if(qr<=mid)return query(ls,l,mid,ql,qr);
if(mid<ql)return query(rs,mid+1,r,ql,qr);
return merge(query(ls,l,mid,ql,qr),query(rs,mid+1,r,ql,qr));
}
}segb;
void solve(){
cin>>n>>q;
fo(i,1,n)cin>>a[i],b[i]=a[i]^a[i-1];
sega.build(1,1,n),segb.build(1,1,n);
while(q--){
cin>>opt>>l>>r>>v;
if(opt==1)
sega.update(1,1,n,l,r,v),
segb.update(1,1,n,l,v),segb.update(1,1,n,r+1,v);
else{
basis tmp;
if(l<r)tmp=segb.query(1,1,n,l+1,r);
insert(tmp,sega.query(1,1,n,l));
cout<<qmax(tmp,v)<<'\n';
}
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int T=1;
while(T--)solve();
return 0;
}
詳細信息
Pretests
Final Tests
Test #1:
score: 5
Accepted
time: 1458ms
memory: 30428kb
input:
50000 50000 31179799 114241877 344633821 372714973 230312455 54442881 743986501 403417568 437989818 242266005 162313393 119596298 802563169 346729208 70449054 332704451 50097201 32417565 110908823 113642833 647558561 3852851 14708161 50106211 99010801 13504275 565360091 100313641 622123725 102516520...
output:
1073676287 839777791 931511783 1073741823 974634479 839180287 1051000807 868654591 993279463 994016759 867565047 1069866471 708296183 1042791935 1073741823 781590015 706682367 723336703 713883631 868539895 931020279 859267047 939417599 858185727 1073741823 661036527 657743863 995917287 598195703 793...
result:
ok 24998 numbers
Test #2:
score: 5
Accepted
time: 1362ms
memory: 30244kb
input:
50000 50000 50191383 255668815 17359782 559851761 48398577 464475964 64138525 588688841 23168953 152455969 50857269 12943813 237308289 566887222 92993715 377761 206948668 672721426 337127621 14563393 305075876 491480377 43026668 562085057 572406073 209498100 181655761 250331418 294297488 129883754 1...
output:
1046475827 1035958205 771388439 794490837 1073741309 794818241 777977645 784301745 786068829 782204425 1018853347 748387701 1067120379 1067415359 1021312235 1023114429 1023308975 1017116345 1058700921 1073379097 788168699 1059058885 1069481047 1025244227 1060893965 1067152737 773586149 763032683 760...
result:
ok 24977 numbers
Test #3:
score: 5
Accepted
time: 1894ms
memory: 30304kb
input:
50000 50000 45592321 723107093 238924558 61566842 558837517 459140217 96117507 787963816 172819329 140591413 6128010 105275171 150082305 490019492 228910617 348887835 230557243 661570579 17810457 188103583 341193363 331759114 524100767 139296641 472804661 304165042 419334565 522929332 301779246 4101...
output:
1073708991 1065353145 1073700799 1065312251 1073700799 1065345021 1065312249 1006591995 1073733561 1073700795 1073741759 1073741759 1073700795 1073733563 1065320377 1073709049 1065320441 1006591933 1006600121 1073708989 1073708991 1006624701 1073741759 1073709049 1073700799 1065312253 1065320383 100...
result:
ok 24996 numbers
Test #4:
score: 5
Accepted
time: 1807ms
memory: 30068kb
input:
50000 50000 142514023 290298121 445693711 613169647 1512969 454297297 167666446 107480659 117953017 704284369 199699025 246977326 728512799 301006812 50560453 6898663 7478213 314191753 29465651 350102363 702611353 676291175 221488114 690750169 225956263 74927773 463689782 18063445 61777985 353346160...
output:
535559167 434894847 503054335 939260927 1073479679 938472447 871364607 963378175 837547007 896270335 871103487 896532479 930871295 829423615 905707519 1040187391 930871295 1006631935 963376127 1072692223 896268287 1072690175 426770431 1073741823 528218111 1006367743 436206591 535560191 1073741823 53...
result:
ok 24999 numbers
Test #5:
score: 5
Accepted
time: 1620ms
memory: 30636kb
input:
50000 50000 38636353 369233879 258979321 19150856 22388605 450204191 661282809 657958373 386335699 775081723 21060205 110887875 172277053 154925281 573310841 159185285 238085443 250906033 470085593 88470607 31855681 62619958 441867691 232876081 14636233 37365959 3418801 69358129 107442651 310622005 ...
output:
421523047 1065353087 1038085679 467595263 455012087 536870911 524218223 526380783 526381039 1031798527 1004469991 1073741823 968879847 1059061759 1031794279 1031798399 968880119 991887031 1065349047 1063251959 968814263 1040117423 1071640303 991952679 996142887 1006566959 1033830271 1031794607 96043...
result:
ok 25009 numbers
Test #6:
score: 5
Accepted
time: 1630ms
memory: 30092kb
input:
50000 50000 86178704 423891589 10011839 70152941 51620871 445887215 468414337 514842439 18206467 135478443 11925876 26359393 179879585 397337259 3841641 772147835 204837407 126413415 378194229 572371555 59307915 503669141 698767201 413685 624126654 563439077 243905645 289004365 95294691 221860362 95...
output:
293070783 469202878 523991038 1065349054 867401727 435908543 494893054 456359934 423360511 1031239615 838596542 536573886 1073444862 964655102 838821823 1039394814 1069017022 905670655 926377983 1064562686 972552127 1002399743 926908350 1060863935 494403583 532410302 527953854 523497470 498825215 49...
result:
ok 25012 numbers
Test #7:
score: 5
Accepted
time: 1105ms
memory: 30356kb
input:
50000 50000 31574866 93779137 250850839 679008513 383467207 440241427 4483235 479284056 64869329 101606593 114043465 96946641 193254511 235979793 115045588 42945813 219643773 681402601 80041117 63590946 252881551 47437273 219019249 26131582 253159588 218799239 243742971 101771618 591600136 224252473...
output:
58646273 87384909 83329665 374679586 402441149 427584469 1071640575 464977798 301898942 515297928 660532545 78997958 777969438 337566486 253081151 373267107 259925849 431970375 339657177 660468049 1006486409 691412077 696140241 141952458 549260904 273962133 141874341 901005483 332684859 192249694 24...
result:
ok 25022 numbers
Test #8:
score: 5
Accepted
time: 1083ms
memory: 30376kb
input:
50000 50000 29207566 62994571 431557366 82962025 2797642 436671271 44633175 432901 139393591 244748321 279475744 811416666 344924833 85423661 11154361 69431391 650985226 267951043 273878287 846296165 70510697 310774005 480946186 102327625 275150261 462644001 47702889 520450885 32676119 637653537 782...
output:
459850569 606648761 159361001 666460577 998244218 790348605 598300541 554288421 642732947 691989425 227377189 98261383 282691183 402187226 1073741823 115953313 259529959 240123430 1055796068 875169329 663682521 146482289 168613424 502094890 250168785 925422673 849217801 644755265 934865440 467447971...
result:
ok 25020 numbers
Test #9:
score: 5
Accepted
time: 2033ms
memory: 30372kb
input:
50000 50000 16821892 93624961 96121405 280800241 198744517 300655951 278230789 464118929 157294401 4693326 118148451 109053825 1087363 72632738 125745361 72234053 335399229 37216741 232925806 675320977 21314515 741119281 1461316 365163289 482695768 38264121 385152001 172962945 188034063 146115407 27...
output:
1040187135 1040187387 1040187391 1073741535 1073741567 1073741787 1073741823 1073741531 1073741567 1073741819 1073741823 1073741791 1073741535 1073741819 1073741567 1040187387 1040187099 1040187355 1073741567 1040187135 1073741823 1073741823 1073741787 1073741819 1073741535 1073741787 1073741791 107...
result:
ok 25011 numbers
Test #10:
score: 5
Accepted
time: 1981ms
memory: 30040kb
input:
50000 50000 67336913 140731414 496614966 1764957 455582602 291631819 90035947 227953922 481562929 293948349 5139937 595534617 349972159 24162145 657032661 53982561 123102520 105937417 242522065 362894841 24379871 77076097 149494061 18245217 65375543 389470733 200585941 560858497 112594166 40279716 8...
output:
1072689151 1070589951 1073741823 1071638527 1071642623 1071640575 1070596095 1039138815 1073741823 1072687103 1073737727 1073741823 1040181247 1040181247 1073735679 1073735679 1070591999 1073737727 1072691199 1073735679 1073739775 1071644671 1073741823 1071644671 1073737727 1071644671 1073741823 107...
result:
ok 24997 numbers
Test #11:
score: 5
Accepted
time: 2287ms
memory: 30424kb
input:
50000 50000 79158319 412596955 24754726 410081189 110594017 155003275 252116605 223305179 8440469 56633976 222352805 603473089 376245 291765617 365989 195291292 174421897 132028495 110616532 126890773 12859737 14290431 43463861 375427441 325283389 161818593 237740237 555311542 326295688 374054719 97...
output:
1073741823 1073741821 1073741821 1073741821 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741821 1073741821 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 107...
result:
ok 24829 numbers
Test #12:
score: 5
Accepted
time: 2276ms
memory: 30640kb
input:
50000 50000 74097251 27163744 642451369 515854177 104688937 136982116 312916969 349769671 530909101 328547476 200582786 583540882 682724002 278814383 493923261 36332506 327224668 65785285 122374545 447220723 85005961 288379911 197604793 603237466 351790527 79646641 296026096 64453264 118455402 32061...
output:
671088607 671088639 805306367 1073741823 1073741823 805306367 805306367 805306335 1073741823 1073741791 939524095 1073741823 1073741823 805306367 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741823 1073741791 1073741823 1073741823 1073741823 1073741823 1073741823 ...
result:
ok 25148 numbers
Test #13:
score: 5
Accepted
time: 2228ms
memory: 30100kb
input:
50000 50000 13698289 473938249 133019680 18126313 466423036 121610497 323302267 281261457 20754331 142518409 155592217 49725001 629264227 122846985 137988865 283532410 304786625 298737391 382109473 44755003 422754606 49627033 487550001 13641226 841862809 525076426 376607699 214785 138882181 53410736...
output:
939393021 905833469 1073741823 1073741823 1073725437 1073741821 1073721343 1073741823 1073741823 1073741823 1073610749 1073741823 401583101 402521085 1073740799 1073740799 1073741823 1073737727 1073741823 1073741823 536738815 1073741823 1073741823 1073741823 1073741823 1073741823 536722429 107372441...
result:
ok 24914 numbers
Test #14:
score: 5
Accepted
time: 2015ms
memory: 30620kb
input:
50000 50000 121924805 132552543 55932977 529466113 156416810 105894489 80132667 276789517 21844449 74386081 145422775 18045581 39906120 134988687 693694708 174475353 10711173 11035585 700844837 565383941 132442847 128942490 185086492 409657585 8516131 195042217 442379051 148234843 686733721 59377690...
output:
334494167 301969379 1072149101 971750645 938195787 1072674035 1073213395 1039400031 972551775 1072949973 1072951507 1073738437 1072690781 1006614381 1072146013 1073725019 973056073 1073718987 1039120091 1038596819 1006628971 1073739861 1073741823 1040179649 1073741823 1073741691 1073741659 107374181...
result:
ok 24898 numbers
Test #15:
score: 5
Accepted
time: 1887ms
memory: 30300kb
input:
50000 50000 61280857 204782976 308600566 539973778 589786536 89849553 234984868 415625134 247822975 136561465 364921557 89316941 15657553 577178317 14003689 622798912 28633557 382901149 116449693 617781329 288826961 10059525 303368767 259497129 150759190 18358792 493373185 32507165 48320287 59370370...
output:
316520199 536870557 444154898 928507020 930371165 521266609 259477208 385860771 528352781 1056771923 536870845 1073724539 1073735237 1073657356 1073636644 1060884212 249142460 517158411 1073708055 901692963 1073336160 1067265155 909561497 1073741776 1068953252 1073741787 1073673704 429403888 1073741...
result:
ok 25178 numbers
Test #16:
score: 5
Accepted
time: 1585ms
memory: 29700kb
input:
50000 50000 104425007 676517185 266703753 42646111 638376328 36363511 159789651 27762649 342766931 236161641 17549185 504330301 220497217 46623601 1591006 20295001 746813206 343852069 77243741 332028545 130078675 110819957 113952817 351456193 237360004 7997101 79637929 987433597 232951469 858917710 ...
output:
500474869 989851647 1073541119 905445279 1006563316 1073741823 1073741823 1073734367 1073741823 1073610684 1073670652 1073741823 1073741823 1073741823 1073741821 1073741823 1073741823 1071560381 1073741822 1073741823 1073741823 1073741823 1073741726 1073741823 1073741823 1073741823 1073741823 107374...
result:
ok 25155 numbers
Test #17:
score: 5
Accepted
time: 1812ms
memory: 30536kb
input:
50000 50000 42913956 246237526 255175531 668431769 272273490 18949731 57900073 661162982 348668625 244851246 454081790 35439426 97264571 126727587 83797779 226760051 66291781 57487949 312590209 427403614 600282853 6493669 306419457 142640377 117110161 771468826 48014317 45762545 856607158 38478624 1...
output:
1073741823 1065222142 1073741823 1073741823 1073610478 1073741823 1073741823 1073741823 1060099962 1073741823 939458559 1073741823 939524094 939524094 1073741823 1073741823 1073741823 1073741823 1073733630 1073741823 1073741823 1073741823 1073741823 1073676269 1073741807 1073741823 1073741823 107374...
result:
ok 24934 numbers
Test #18:
score: 5
Accepted
time: 2167ms
memory: 30144kb
input:
50000 50000 164769617 163668674 201392353 807135891 28077801 111357 61489630 186159256 26197731 1483084 649516655 374498681 553778956 365839240 352926001 340829251 82656419 180464756 177176471 435452235 51172563 433576 252090976 2271041 7900873 27634566 64009992 420007141 548711155 129909801 1275601...
output:
1073733599 1073741823 1073741823 1073741823 1069547517 1073733629 1073733631 1069539325 1069539293 1073741823 1069539295 1073741823 1073741823 1073741823 939524063 1073733631 939524063 1073741823 1073741791 1073741823 1069539295 1069539327 1073733597 1073741823 1073741823 1073741823 1073741823 10737...
result:
ok 25037 numbers
Test #19:
score: 5
Accepted
time: 1992ms
memory: 30680kb
input:
50000 50000 156310103 530401186 520269 864496885 402233958 1124551 564970253 130086399 140795617 110033251 144775075 377461041 594464081 107829537 54587824 108769701 696225511 35986385 546707233 257053743 376970959 420980432 147402793 578668753 66141976 43283021 645259998 502348157 289559502 7142926...
output:
1054834651 1050206671 1006464479 1071247095 1067176703 1073741823 1073736919 1073741823 1073741823 1073733615 968487675 1073741823 951599319 1073741823 1073741823 1073741823 1073741823 1071601647 1073741823 1073702647 1073741823 1073741823 1073701855 1073741823 1073738443 1073741823 1073741823 10737...
result:
ok 24974 numbers
Test #20:
score: 5
Accepted
time: 2016ms
memory: 30476kb
input:
50000 50000 86652187 172925933 400148781 172827271 103244764 1230016 35222201 811910325 51778693 28360788 306332251 57112561 22634991 491541601 241108845 105270844 49851322 935374771 11721997 328796173 117272806 127489410 377611521 22919071 314038814 371920051 691765728 44920898 220290895 111709561 ...
output:
939523567 899870666 1073741823 939524095 1073544703 1073180145 1073741823 1073732847 667667449 1073741823 1035325413 1069479144 955442637 1056964077 1073741823 736813733 1073736067 1073479652 1073741823 1052114681 1073741823 1073741823 1073741823 1073741823 1073702887 1073741823 1073741807 107367422...
result:
ok 24985 numbers